Skip to main content
Every API error comes back as JSON with a single error field and an HTTP status code:
This page maps the codes you’ll actually see in the wild to a cause and a fix. For step-by-step debugging, see Troubleshooting.

By HTTP status

400 Bad Request

The request shape or content is invalid.

401 Unauthorized

No credential, or the credential was rejected before reaching authorization.

403 Forbidden

Authenticated, but the action isn’t allowed.

404 Not Found

The resource doesn’t exist (or you’re not allowed to know it exists).

409 Conflict

Resource state is incompatible with the request.

413 Payload Too Large

File upload exceeded the per-request limit.

500 Internal Server Error

Something blew up on the server. The error field usually has the underlying message. Common variants:

503 Service Unavailable

A dependency the server needs is down.

By symptom

”I just created the agent and the chat shows offline”

The container takes ~30 seconds to provision. A 500 with the agent body in the response means provisioning succeeded but the gateway didn’t start cleanly - the agent will appear in your list and you can restart it.

”My push to the workspace returns auth errors”

Re-grab the URL with Copy with Token on the Files tab. The gateway token may have been rotated.

”Tasks return 500 from GET /v0/agents/.../tasks

This usually means the engine CLI inside the container failed. Restart the gateway; if it keeps failing, check the Logs filtered to cron/runner.

”Channel configure returns 500”

The engine could not write the channel config or restart. Almost always a malformed token or a channel that’s already enabled. Re-check the token, then Reconfigure.

”Domain stuck pending_ownership

Your _pinata-verify.<domain> TXT record isn’t visible. Confirm with dig TXT _pinata-verify.<domain> +short and wait for propagation.

”Issues endpoints all return 404”

Issues is closed beta and restricted to @pinata.cloud accounts today.

Common error responses

Errors documented in the API spec, grouped by where they appear. Use this as a starting point when you’re trying to interpret an error response — the exact string returned by the API is the source of truth.

See also