Errors

Errors

Every error response returns a JSON object with an error field describing what went wrong.

{
  "error": "Description of the problem"
}

HTTP status codes

CodeMeaningWhen
400Bad RequestMissing or invalid parameters
401UnauthorizedMissing or invalid API key
402Payment RequiredInsufficient credit balance
404Not FoundAccount not tracked, resource doesn't exist
409ConflictResource already exists (e.g., already tracking account)
429Too Many RequestsRate limit or daily spend cap exceeded
500Internal ErrorServer-side issue — retry with backoff

Error responses by type

401 — Authentication

{ "error": "Missing X-API-Key header" }
{ "error": "Invalid or inactive API key" }

Verify your API key is correct and active. Keys can be managed in the Developer Portal (opens in a new tab).

402 — Insufficient balance

{
  "error": "Insufficient balance",
  "required_cents": 10,
  "balance_cents": 3,
  "top_up": "https://frontrun.vc/api/billing"
}

The response tells you exactly how much is needed vs. available. Top up your balance to continue.

429 — Rate limited

Two types of 429 responses:

Per-minute rate limit:

{
  "error": "API rate limit exceeded. Please slow down.",
  "retry_after_seconds": 60
}

Daily spend cap reached:

{
  "error": "Daily spend cap reached",
  "daily_spent_cents": 5000,
  "daily_cap_cents": 5000,
  "resets_at": "2026-03-12T00:00:00.000Z"
}

The daily spend cap (default $50) prevents runaway agent costs. It resets at midnight UTC.

400 — Invalid parameters

{ "error": "username is required" }
{ "error": "Invalid \"since\" parameter. Use \"24h\", \"7d\", or \"YYYY-MM-DD\"." }
{
  "error": "At least one filter required: sector, keyword, or entity_type",
  "example": "/v1/search?sector=AI/ML&entity_type=startup"
}

404 — Not found

{ "error": "Not tracking @example. Add with POST /v1/track" }

The account must be tracked before you can query follows, convergence, or activity.

409 — Already exists

{
  "error": "Already tracking this account",
  "baseline_established": true
}

Retry guidance

ErrorRetry?Strategy
400NoFix the request parameters
401NoCheck your API key
402NoTop up your balance
404NoTrack the account first via POST /v1/track
409NoResource already exists — this is a no-op
429 (rate limit)YesWait retry_after_seconds, then retry
429 (spend cap)YesWait until resets_at timestamp
500YesExponential backoff: 1s, 2s, 4s, max 3 retries

Rate limit headers

Every response includes standard rate limit headers:

HeaderDescription
RateLimit-LimitMax requests per window
RateLimit-RemainingRequests left in current window
RateLimit-ResetUnix timestamp when the window resets

Check RateLimit-Remaining before making requests to avoid hitting 429s.