Skip to content

API reference

Discover catalog models, run inference, and read your models, deployments, requests, receipts, and audit events through one API. Base URL: https://api.boardwalk.cloud/v1. Your API key selects the organization for authenticated requests.

Authentication

Send Authorization: Bearer $BOARDWALK_API_KEY. Keys belong to one organization. Inference and tokenization require inference:write; management reads use scoped permissions. Catalog discovery and the OpenAPI schema are public. See authentication and permissions for key setup and access rules.

Endpoints

MethodPathPurpose
GET/v1/catalog/modelsPublished catalog models and their configurations.
GET/v1/modelsYour organization’s model inventory; requires models:read.
POST/v1/chat/completionsOpenAI Chat Completions API.
POST/v1/responsesOpenAI Responses API (stateless).
POST/v1/messagesAnthropic Messages API.
POST/v1/completionsOpenAI Completions API (legacy text).
POST/v1/tokenizeCount tokens with the served tokenizer.
GET/v1/receipts/{request_id}Per-request usage and cost.
GET/v1/models/{id}Retrieve a model and its configuration; requires models:read.
GET/v1/deploymentsList deployment history; requires deployments:read.
GET/v1/deployments/{id}Retrieve deployment checks and progress; requires deployments:read.
GET/v1/requestsList request outcomes, usage, and latency; requires requests:read.
GET/v1/requests/{request_id}Retrieve a request outcome; requires requests:read.
GET/v1/audit-eventsList recorded changes; requires audit:read.
GET/v1/audit-events/{id}Retrieve an audit event; requires audit:read.
POST/v1/deployment-previewsPreview a source and serving settings.
POST/v1/deploymentsCreate a model or redeploy it; durable idempotency is required.
POST/v1/deployments/{id}/cancelCancel the named deployment run.
GET/v1/deployments/{id}/eventsPoll recorded phase history.
GET/v1/models/{id}/revisionsList checked revisions with cursor pagination.
POST/v1/models/{id}/activationsPromote or roll back a checked revision.
POST/v1/models/{id}/stop-servingStop admission and cancel a running deploy.
POST/v1/models/{id}/resume-servingResume serving, retrying the deploy when needed.
DELETE/v1/models/{id}Delete a model while retaining billing records.
GET/v1/floorsRead reserved capacity and published rates.
PUT/v1/floors/{card_class}Set reserved capacity with reviewed pricing.

Use the deployment and model endpoints to create checked candidates, activate revisions, and stop or resume serving. Reserved capacity is managed separately. Model inventory includes pending, active, and disabled models; catalog discovery lists published public models.

For inference, use OpenAI Chat/Responses clients, the Anthropic Messages client, or plain HTTP. Compatibility covers the endpoints and fields listed here. Assistants, Files, embeddings, and media-generation APIs are not part of this API.

Discover endpoint availability, supported parameters, and formats per model through /v1/catalog/models. See image inputs and structured output, tools, and reasoning.

Pagination

Model, deployment, request, and audit lists return an object: "list" envelope with data and next_cursor. Records are newest first. Public catalog discovery is unpaginated and accepts no query parameters.

cursorstringoptional
Opaque next_cursor from the previous page, at most 256 characters. Keep all other filters unchanged.
limitintegeroptional
Page size from 1 to 200. Default: 50.
List response
{ "object": "list", "data": [], "next_cursor": null }

Pass next_cursor as cursor with the same filters until it is null. Time filters use epoch milliseconds: from is inclusive and to is exclusive. Keep the end fixed during an export and deduplicate overlapping polls by record ID. Response timestamps are ISO 8601 UTC; money uses decimal strings in micro-dollars.

A completed request has a receipt even when it failed. A request refused before reaching a card has zero cost and no receipt. Detail lookups can briefly return 404before a record exists. See requests and receipts for record states and availability.

OpenAPI schema

Download the public OpenAPI 3.1 schema for catalog discovery and management reads, including response fields and filter values. The inference endpoint references document their request, response, and streaming formats.

Request parameters

Request fields depend on your API: OpenAI Chat Completions, OpenAI Responses, or Anthropic Messages. Unknown fields return 400. Model-specific features require a qualified configuration.

Streaming responses

Use stream: true for server-sent events. Event formats follow your selected API: OpenAI Chat Completions, OpenAI Responses, or Anthropic Messages. Successful streams include final usage; interrupted streams may not.

Tokenization

Count tokens before sending a request. Tokenization is free.

Receipts

Use the x-request-id response header to retrieve a receipt after completion.

Errors

Error shape
{
  "error": {
    "message": "Insufficient credits. Add credits in the console to continue.",
    "type": "billing_error",
    "param": null,
    "code": "insufficient_credits"
  }
}
StatusWhat to do
400Correct the request, unsupported parameter, or context length.
401 / 403Check the key, its expiration, and its permissions. org_inactive means the organization is suspended.
402insufficient_credits: add credits.
404Check the model ID, revision, or record access.
405Use the endpoint's supported HTTP method.
413Reduce the body. Inference requests are limited to 9 MiB.
429Wait Retry-After seconds, then retry. The code says why: rate limits & retries.
502 / 503Retry with backoff: upstream_error when the engine failed, model_unavailable when it could not be reached, capacity_wait_exceeded when no GPU card freed up within three minutes.
errorobject
Error details.
Child fields
messagestring
Human-readable explanation.
typestring
Error category.
codestring
Machine-readable error code.
paramstring | null
Offending parameter, when identified.
request_idstring
Request identifier, when included. Also available in the x-request-id response header.

type is the class of error and is the same for every error with that status. code is the specific reason. Branch on code.

Rate limits and retries

Inference has no request-rate limit. Your balance sets how many requests can run at once, and a busy or starting model refuses with 429 and Retry-After. Other endpoints allow at least 60 requests a minute per key and send x-ratelimit-limit, x-ratelimit-remaining and x-ratelimit-reset (seconds, not a timestamp). Management reads have a separate budget from inference, shared by the organization’s keys. Requests refused before reaching a card have no charge; requests that reach a card can incur charges even when they fail. Check the receipt before retrying. Do not replay a partially received stream or run its tool calls twice. See rate limits & retries.

Include x-request-id when contacting support.