Description
The /api/v1/pulses/subscribed endpoint consistently returns 504 Gateway Timeout errors, making the SDK completely unusable for fetching subscribed pulses.
Environment
Problem
When calling getsince() or getall() methods, the SDK uses the SUBSCRIBED constant which points to /api/v1/pulses/subscribed. This endpoint consistently times out.
Example code that fails:
from OTXv2 import OTXv2
from datetime import datetime
otx = OTXv2("YOUR_API_KEY")
pulses = otx.getsince(datetime(2026, 3, 1)) # Times out after 30+ seconds
Error message:
OTXv2.RetryError: 'Exceeded maximum number of retries'
urllib3.exceptions.MaxRetryError: ... 504 error responses
API Testing Results
We tested multiple AlienVault OTX API endpoints with a valid API key:
| Endpoint |
Status |
Response Time |
Notes |
| /api/v1/pulses/subscribed |
TIMEOUT |
30s+ |
504 Gateway Timeout |
| /api/v1/pulses/activity |
SUCCESS |
less than 2s |
Returns all pulses |
| /api/v1/indicators/IPv4/8.8.8.8/general |
SUCCESS |
less than 1s |
Works normally |
Manual Testing
Subscribed endpoint (FAILS):
curl -v --max-time 30 "https://otx.alienvault.com/api/v1/pulses/subscribed?limit=20" -H "X-OTX-API-KEY: YOUR_KEY"
Result: Timeout after 30 seconds
Activity endpoint (WORKS):
curl -v --max-time 30 "https://otx.alienvault.com/api/v1/pulses/activity?limit=20" -H "X-OTX-API-KEY: YOUR_KEY"
Result: Success, returns data immediately
Root Cause
The /pulses/subscribed endpoint appears to have server-side issues causing persistent timeouts. The /pulses/activity endpoint provides the same data and works reliably.
Proposed Solution
Change the SUBSCRIBED constant in OTXv2.py from:
SUBSCRIBED = "{}/pulses/subscribed".format(API_V1_ROOT)
To:
SUBSCRIBED = "{}/pulses/activity".format(API_V1_ROOT)
This maintains backward compatibility as both endpoints return the same data structure.
Impact
- Current: SDK is completely non-functional for pulse fetching
- After Fix: SDK works normally and retrieves pulses successfully
Additional Notes
This issue affects all users of the SDK trying to fetch subscribed pulses. The activity endpoint has been tested extensively and provides identical functionality without timeouts.
Fixed by #83
Description
The /api/v1/pulses/subscribed endpoint consistently returns 504 Gateway Timeout errors, making the SDK completely unusable for fetching subscribed pulses.
Environment
Problem
When calling getsince() or getall() methods, the SDK uses the SUBSCRIBED constant which points to /api/v1/pulses/subscribed. This endpoint consistently times out.
Example code that fails:
Error message:
API Testing Results
We tested multiple AlienVault OTX API endpoints with a valid API key:
Manual Testing
Subscribed endpoint (FAILS):
Activity endpoint (WORKS):
Root Cause
The /pulses/subscribed endpoint appears to have server-side issues causing persistent timeouts. The /pulses/activity endpoint provides the same data and works reliably.
Proposed Solution
Change the SUBSCRIBED constant in OTXv2.py from:
To:
This maintains backward compatibility as both endpoints return the same data structure.
Impact
Additional Notes
This issue affects all users of the SDK trying to fetch subscribed pulses. The activity endpoint has been tested extensively and provides identical functionality without timeouts.
Fixed by #83