Skip to content

Retry logic and rate limit handling for all ATS APIs #7

@prPMDev

Description

@prPMDev

ATS APIs can return transient errors (529, 503, 429). Currently no retry logic exists.

What to build

  • Retry with exponential backoff (3 attempts, 1s/2s/4s delays)
  • Handle 429 (rate limited): respect Retry-After header if present
  • Handle 529/503 (server overload): retry after delay
  • Handle timeouts: 10s per request, retry on timeout
  • Log warnings on retries so users know what happened

Per-platform notes

  • Greenhouse: no documented rate limits for public board API, but transient 529s observed
  • Ashby: GraphQL endpoint, no known rate limits
  • Lever: no known rate limits for public postings API

Why this matters

  • For MCP server: AI agents may make rapid sequential requests
  • For bulk registry verification: checking 100+ companies hits APIs fast
  • For Pursuit integration: watchlist of 10+ companies fetches in parallel

Implementation

Add retry wrapper in a shared utility, used by all adapters:

async function fetchWithRetry(url, options, maxRetries = 3) {
  // exponential backoff, respect 429 Retry-After
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    infrastructureTesting, CI, publishing, tooling

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions