VEYRA / DEVELOPERS
Uma API. O seu próximo produto.
Prepare integrações sobre um contrato comercial versionado, independente do Production Engine. Comece no sandbox sem custos de inferência.
Contract-first. Sandbox-first.
Este incremento implementa sessões demo locais, catálogo, quotes, jobs, históricos paginados de projetos/créditos, cancelamento, usage e limites de fila. Bearer opcional com memberships locais e scopes por operação. OAuth2 Client Credentials, quotas distribuídas, webhooks e downloads assinados ainda não estão disponíveis.
Consultar contrato JSON ↗FLUXO DE INTEGRAÇÃO
- Descobrir serviços e capacidades simuladas
- Obter uma quote com teto de créditos
- Aprovar e submeter com Idempotency-Key
- Consultar ou cancelar o job
Sandbox exclusivo de desenvolvimento. Não envie dados pessoais ou segredos. Sessão demo por cookie ou bearer configurado pelo operador; não emite credenciais OAuth2.
Contrato público, Engine privado.
Todas as rotas exigem autenticação. Escritas com sessão demo verificam a origem. Bearer exige X-Veyra-Tenant, scope da operação e membership ativa. Os jobs não progridem para produção e não geram assets.
O sandbox permite até 20 jobs na fila por workspace e 10 por serviço. Consulte os limites antes de submeter. Um limite atingido devolve 409; cancelar um job liberta capacidade. Repetir a mesma submissão com a mesma chave não cria outro job.
Os pedidos autenticados têm limites separados: 120 por workspace e 60 por identidade em janelas fixas de 60 segundos. Uma resposta 429 inclui Retry-After. Aguarde e repita manualmente, preservando a chave de submissão. Pedidos inválidos também contam após autorização.
Referência da API
OpenAPI 3.1 · v1.6.1Explore operações, permissões e modelos do contrato atual. Esta referência permite consultar o contrato sem enviar pedidos. Use os SDKs no seu servidor para integrar o sandbox.
12 de 12 operações
GET /api/v1/services
listServices
Permissão bearer: catalog:read
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
Respostas
200 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Services"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}POST /api/v1/quotes
createQuote
Permissão bearer: quotes:write
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
Corpo do pedido
{
"required": true,
"description": "Authenticated request bodies are limited to16000 UTF8 bytes and a5000ms total read deadline. Overflow returns413; an incomplete body past the deadline returns408 before domain writes.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QuoteInput"
}
}
}
}Respostas
201 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Quote"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}GET /api/v1/jobs
listJobs
Legacy bare array of the newest20 jobs only, ordered by createdAt DESC,id DESC. Use /jobs/page to traverse history.
Permissão bearer: jobs:read
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
Respostas
200 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Jobs"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}POST /api/v1/jobs
submitJob
Permissão bearer: jobs:write
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
Idempotency-Key | header | Sim | |
Corpo do pedido
{
"required": true,
"description": "Authenticated request bodies are limited to16000 UTF8 bytes and a5000ms total read deadline. Overflow returns413; an incomplete body past the deadline returns408 before domain writes.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubmitInput"
}
}
}
}Respostas
202 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Job"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}GET /api/v1/jobs/{id}
getJob
Permissão bearer: jobs:read
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
id | path | Sim | |
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
Respostas
200 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Job"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}POST /api/v1/jobs/{id}/cancel
cancelJob
Permissão bearer: jobs:write
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
id | path | Sim | |
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
Respostas
200 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Job"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}GET /api/v1/usage
getUsage
Permissão bearer: credits:read
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
Respostas
200 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Usage"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}GET /api/v1/assets
listAssets
Permissão bearer: jobs:read
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
Respostas
200 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Assets"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}GET /api/v1/jobs/page
listJobPage
Tenant-private history, newest createdAt then UUID first. Cursor is the last returned job UUID; missing/foreign cursors return404. Concurrent inserts do not shift the older-page boundary; this is not a frozen snapshot. Unknown or repeated query parameters return400.
Permissão bearer: jobs:read
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
limit | query | Não | Canonical positive decimal1–50; no signs, leading zeros, decimals or empty value. |
before | query | Não | An existing job UUID owned by the authenticated tenant. |
Respostas
200 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JobPage"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}GET /api/v1/credit-entries/page
listCreditEntryPage
Tenant-private demo credit movements, newest append first even if timestamps regress. Cursor identifies an owned movement by kind/job UUID, never a global storage sequence. Missing/foreign cursors return404; malformed/unknown/repeated query fields return400.
Permissão bearer: credits:read
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
limit | query | Não | Canonical positive decimal1–50; no signs, leading zeros, decimals or empty value. |
before | query | Não | Reuse nextCursor: grant, reserve_<uuid> or release_<uuid>. Always resolved in the authenticated tenant. |
Respostas
200 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreditPage"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}GET /api/v1/limits
getJobLimits
Permissão bearer: jobs:read
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
Respostas
200 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/JobLimits"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}GET /api/v1/jobs/{id}/production
getProductionStatus
Permissão bearer: jobs:read
| Nome | Local | Obrigatório | Descrição e schema |
|---|---|---|---|
id | path | Sim | |
X-Veyra-Tenant | header | Não | Required with sandbox Bearer authentication; ignored for demo cookies. Membership must authorize the selected tenant. |
Respostas
200 · Sandbox response
{
"description": "Sandbox response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProductionStatus"
}
}
}
}400 · Invalid request
{
"description": "Invalid request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}401 · Authentication required
{
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}403 · Access denied
{
"description": "Access denied",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}404 · Not found
{
"description": "Not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}408 · Request body deadline exceeded
{
"description": "Request body deadline exceeded",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}409 · Conflict
{
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}413 · Request body too large
{
"description": "Request body too large",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}429 · Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.
{
"description": "Authenticated request rate limit reached. No body/domain operation is performed. Retry explicitly with the same quote/key after the indicated delay.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
},
"headers": {
"Retry-After": {
"required": true,
"description": "Positive delay in seconds for the exhausted fixed windows.",
"schema": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
}
}
}
}503 · Sandbox, identity or request admission unavailable.
{
"description": "Sandbox, identity or request admission unavailable.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}Modelos de dados
As referências #/components/schemas/ apontam para os modelos abaixo.
{
"type": "array",
"maxItems": 0,
"items": {
"type": "object"
},
"description": "No output is fabricated. Sandbox jobs do not render assets."
}Clientes TypeScript e Python para servidor.
O workspace inclui @veyra/sdk e um cliente Python assíncrono para integrar o sandbox com tokens obtidos pelo seu servidor. Valida respostas pelo contrato, exige uma chave explícita na submissão e permite consultar limites antes de criar jobs. A configuração de identidade e as permissões do tenant continuam a ser necessárias.
Disponíveis neste monorepo; sem publicação npm ou PyPI nesta versão. Mantenha as credenciais exclusivamente no servidor.