Skip to content
Markets open

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

FieldTypeDescription
datarequiredobject-
statusrequireddata.statusstring-One of ok
timestamprequireddata.timestampstring (date-time)ISO-8601 timestamp (UTC)
versionrequireddata.versionstring-

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

FieldTypeDescription
datarequiredobject-
componentsrequireddata.componentsobject[]-
namerequireddata.components[].namestring-
statusrequireddata.components[].statusstring-One of operational, degraded, down
updatedAtrequireddata.updatedAtstring (date-time)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

FieldTypeDescription
datarequiredobject-
ratePerMinrequireddata.ratePerMinnumberUSD per AI-connected minute (a JSON number, for display)
currencyrequireddata.currencystring-One of USD
billingIncrementSecondsrequireddata.billingIncrementSecondsinteger-

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.