Skip to content

SDK unusable: /pulses/subscribed endpoint returns 504 timeout #82

@root-Brainoverflow

Description

@root-Brainoverflow

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions