Skip to content

API reference

System

Health checks and service metadata.

3 operationsBase URL https://packetexchange.io/api/v1Postman collection

Check that the API is up

GET/api/v1/health

Access
Public. No key needed.
Rate limit
100 requests per second (the default)

Liveness probe. Answers 200 { status: "ok" } while this node can reach its database, and 503 { status: "unavailable", reason: "database_unreachable" } (with success: false) when it cannot.

Response 200

  • datarequired

    object

  • statusrequired

    string · data.status

    One of ok
  • timestamprequired

    string (date-time) · data.timestamp

    ISO-8601 timestamp (UTC)
  • versionrequired

    string · data.version

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get component health for the platform

GET/api/v1/health/status

Access
Public. No key needed.
Rate limit
100 requests per second (the default)

API, database, cache and call switch health, recomputed at most every 10 seconds.

Response 200

  • datarequired

    object

  • componentsrequired

    object[] · data.components

  • namerequired

    string · data.components[].name

  • statusrequired

    string · data.components[].status

    One of operational, degraded, down
  • updatedAtrequired

    string (date-time) · data.updatedAt

    ISO-8601 timestamp (UTC)

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.

Get the public AI voice price per minute

GET/api/v1/pricing/ai-voice

Access
Public. No key needed.
Rate limit
60 requests per minute

The same per-minute rate the billing engine charges for AI-connected minutes, metered per second (billingIncrementSeconds: 1). Sell price only. No authentication, and it never answers 401, so a signed-in page can call it safely. Cacheable for 5 minutes (Cache-Control: public, max-age=300).

Response 200

  • datarequired

    object

  • ratePerMinrequired

    number · data.ratePerMin

    USD per AI-connected minute (a JSON number, for display)
  • currencyrequired

    string · data.currency

    One of USD
  • billingIncrementSecondsrequired

    integer · data.billingIncrementSeconds

Errors

  • 400VALIDATION_ERROR, INVALID_INPUT or BAD_REQUEST. For VALIDATION_ERROR, error.details is an array of { path, message }.
  • 429RATE_LIMITED: slow down and retry after the Retry-After seconds.
  • 500INTERNAL_ERROR: unexpected failure. Quote X-Request-Id to support.