Skip to Content

Errors

The exit1.dev API uses standard HTTP status codes and returns structured error responses.

Status Codes

CodeMeaningDescription
200OKRequest succeeded
201CreatedResource created successfully (POST)
400Bad RequestInvalid request parameters or body
401UnauthorizedMissing, invalid or disabled credentials
403ForbiddenMissing scope, check owned by another account, or feature not on your plan
404Not FoundResource or route not found
405Method Not AllowedHTTP method not supported for this endpoint
409ConflictDuplicate resource (for example URL already monitored) or plan limit reached
422UnprocessableMalformed Idempotency-Key, or the key was used for a different request
429Too Many RequestsRate limit exceeded
500Internal Server ErrorServer-side error

Error Response Format

Every error response is a JSON object with a single error string:

{ "error": "Invalid status. Allowed: all, online, offline, degraded, unknown" }

429 responses add retryAfter and sometimes quotaLimit and quotaReset. See Rate Limits.

Common Errors

400 Bad Request

{ "error": "Invalid check ID format" }

Causes:

  • Check ID contains characters other than letters, digits, - and _, or is longer than 128 characters
  • Unsupported status filter on List Checks
  • Invalid ranges on Check Stats
  • Missing Idempotency-Key on create, or a field that fails validation

401 Unauthorized

{ "error": "Invalid API key" }
MessageCause
Missing credentials. Send X-Api-Key or an OAuth Bearer token.No X-Api-Key or Authorization: Bearer header
Invalid API keyThe key does not exist or was revoked
API key disabledThe key exists but is disabled
API key expiredThe key’s expiry has passed
Invalid or expired access tokenThe OAuth access token is invalid or expired

403 Forbidden

{ "error": "Credential does not have the required scope: checks:write" }

Causes:

  • API key missing the required scope for the operation
  • The check belongs to a different account ({"error": "Forbidden"})
  • The check type is not available on your plan, for example DNS monitoring requires a paid plan.
  • The key is restricted and tried to create a check outside its folders, or to use an /alerts route

404 Not Found

{ "error": "Not found" }

Causes:

  • The check ID does not exist. Read endpoints return Not found, write endpoints return Check not found
  • The path does not match any endpoint

A check that exists but belongs to another account returns 403, not 404. A key restricted to other checks gets 404 with Check not found on every route.

409 Conflict

{ "error": "A check already exists for this URL" }

Causes:

  • Duplicate URL when creating or updating a check
  • The domain is already monitored by another domain check
  • Maximum check limit reached for your plan (Maximum of 5 checks reached for your plan.)

422 Unprocessable

{ "error": "Idempotency key already used for a different request" }

Causes:

  • The same Idempotency-Key was used with a different HTTP method or path. Use a new key for each distinct request
  • The key is not 1 to 256 letters, digits, hyphens or underscores

429 Too Many Requests

{ "error": "Rate limit exceeded. Please try again later.", "retryAfter": 42 }

Cause: You’ve exceeded a rate limit. Wait retryAfter seconds (also sent as the Retry-After header) before retrying.

500 Internal Server Error

{ "error": "Internal error" }

Cause: An unexpected server-side failure. Retry with backoff.

Last updated on