/api/...), the hosted MCP
server (/api/mcp) and the Pascal API (/api/v1).
Error bodies
The Scene API and the agent account routes answer with a machine-readableerror code, a
message for people and, when there is a known fix, a hint:
type, code, message, param and a
doc_url; its codes are listed under Pascal API errors. The MCP
server answers protocol errors as JSON-RPC errors and tool failures as tool results.
Unknown routes
A path under/api that no route serves answers 404 in the same envelope as the Pascal
API, instead of an HTML page:
Link header points at the API catalog
and the OpenAPI document. A page request for a missing path with Accept: text/markdown
gets a Markdown 404 that links the docs, /llms.txt and the sitemap.
Authentication challenges
A request without a valid credential answers401 with a WWW-Authenticate challenge
that points at the protected resource metadata
(RFC 9728) and names the scopes an authorization request must carry: the resource’s own, plus
offline_access, which every registered client requests:
A connection holding
scene:read alone can call the read-only tools; scene:write covers
the tools that change a project. Each tool’s scope is published at
/.well-known/mcp.
Rate limits
Every response the Scene API and the MCP server count carries the IETF rate-limit fields:RateLimit-Policy names each window and its quota, RateLimit its remaining requests
and the seconds until it resets.
Each request counts against every window listed. Over a limit, the answer is
429 with
Retry-After in seconds and nothing ran, so the same request is safe to send again once
that time has passed. The budget per address and credential exists because many people can
reach Pascal from one address: every Claude user arrives from Anthropic’s egress range.
Versioning and deprecation
The Scene API is versioned in its OpenAPI document (info.version) and the Pascal API in its path (/api/v1). Within a version, Pascal adds
fields, endpoints, tools and error codes without notice; clients should ignore what they
don’t recognise. Removing or renaming a field, changing its meaning, or removing an endpoint
happens only through deprecation:
- The endpoint is marked
deprecated: truein the OpenAPI document, and every response from it carries aDeprecationheader (RFC 9745) with the date it was deprecated, aLinkwithrel="deprecation"to this section, and aLinkwithrel="successor-version"to its replacement. - When a removal date is set, responses also carry a
Sunsetheader (RFC 8594) with that date, and the change is announced in the changelog. - After the sunset date the endpoint may answer
410 Goneor be removed.
Neither has a sunset date yet.
Request ids
Pascal API and MCP answers carry aRequest-Id header. Quote it when you
contact support.