{"openapi":"3.1.0","info":{"title":"Sine Gateway API","version":"0.1.0","description":"Invoke models with an organization Bearer API key granted sine-gateway scopes. GET /models requires modelRead; inference and task lifecycle operations require modelInvoke. Select a currently available route from /models and use its id as model. Route policy, project restrictions, current owner/admin membership and product access are enforced on every request. Managed routes use Cloud billing and require the configured price, budget and available credits; byok routes use the organization provider credentials. Configure models and inspect invocation billing/recovery in the Console. Native JSON, multipart, SSE and binary responses are preserved; viewing this specification does not execute a model."},"servers":[{"url":"https://sinecloud.dev"}],"paths":{"/api/gateway/v1/chat/completions":{"post":{"operationId":"createChatCompletion","summary":"Create a chat completion","tags":["Gateway"],"description":"OpenAI-compatible chat, including tool calls and multimodal messages where supported. Common fields are documented, not a full provider validator. Provider capabilities, required fields, limits, response details and supported parameters vary; host overrides may supply request fields.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"chat.completions","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"safe","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"result","x-sine-host-replay":"safe","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionResponse"}},"text/event-stream":{"schema":{"type":"string","description":"When stream=true: SSE data frames containing chat completion chunks (ChatCompletionChunk) and provider-specific events; common OpenAI streams terminate with data: [DONE]."}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatCompletionRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery","x-sinecloud-stream-event-schema":{"$ref":"#/components/schemas/ChatCompletionChunk"}}},"/api/gateway/v1/responses":{"post":{"operationId":"createModelResponse","summary":"Create a model response","tags":["Gateway"],"description":"Responses API with provider-supported tools and multimodal inputs. Common fields are documented, not a full provider validator. Provider capabilities, required fields, limits, response details and supported parameters vary; host overrides may supply request fields.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"responses.create","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"safe","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"result","x-sine-host-replay":"safe","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelResponse"}},"text/event-stream":{"schema":{"type":"string","description":"When stream=true: Responses API named SSE events with provider-specific event payloads."}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseCreateRequest"}}}},"parameters":[{"name":"openai-beta","in":"header","required":false,"description":"Optional provider beta features; host/provider configuration may override it.","schema":{"type":"string"}},{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/messages":{"post":{"operationId":"createMessage","summary":"Create an Anthropic-compatible message","tags":["Gateway"],"description":"Anthropic Messages-compatible input/output for supported providers. Common fields are documented, not a full provider validator. Provider capabilities, required fields, limits, response details and supported parameters vary; host overrides may supply request fields.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"messages.create","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"safe","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"result","x-sine-host-replay":"safe","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessagesResponse"}},"text/event-stream":{"schema":{"type":"string","description":"When stream=true: Anthropic-style named SSE events such as message_start, content_block_delta and message_stop; provider details vary."}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessagesRequest"}}}},"parameters":[{"name":"anthropic-version","in":"header","required":false,"description":"Optional provider protocol version; host/provider configuration may override it.","schema":{"type":"string"}},{"name":"anthropic-beta","in":"header","required":false,"description":"Optional provider beta features; support depends on host/provider configuration.","schema":{"type":"string"}},{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/embeddings":{"post":{"operationId":"createEmbedding","summary":"Create embeddings","tags":["Gateway"],"description":"Text and provider-supported multimodal embeddings. Common fields are documented, not a full provider validator. Provider capabilities, required fields, limits, response details and supported parameters vary; host overrides may supply request fields.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"embeddings","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"safe","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"result","x-sine-host-replay":"safe","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingResponse"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmbeddingRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/images/generations":{"post":{"operationId":"createImage","summary":"Generate images","tags":["Gateway"],"description":"Result-only protocol: direct image adapters require response_format=b64_json (the default). Durable URL assets require explicit response_format=url and wait for completion without changing the response to a receipt. Incompatible formats are rejected before dispatch; no implicit URL downloader or artifact store is used. Common fields are documented, not a full provider validator. Provider capabilities, required fields, limits, response details and supported parameters vary; host overrides may supply request fields.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"images.generations","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"safe","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"result","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageResponse"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageGenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/images/edits":{"post":{"operationId":"editImage","summary":"Edit images","tags":["Gateway"],"description":"Multipart image editing. Image/mask formats, counts and supported fields depend on the provider. Common fields are documented, not a full provider validator. Provider capabilities, required fields, limits, response details and supported parameters vary; host overrides may supply request fields.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"images.edits","x-sine-body":"multipart","x-sine-model":"input","x-sine-replay":"safe","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"result","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageResponse"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"Multipart form data; retain file bytes, filenames, media types and repeated fields. JSON, URL-encoded forms and raw binary request bodies are not accepted.","content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ImageEditRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/audio/speech":{"post":{"operationId":"createSpeech","summary":"Generate speech audio","tags":["Gateway"],"description":"Complete audio or incremental output for supported models when a trusted host configures the WebSocket transport. Common fields are documented, not a full provider validator. Provider capabilities, required fields, limits, response details and supported parameters vary; host overrides may supply request fields.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"audio.speech","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"safe","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"result","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Audio bytes, or a provider-supported event stream.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"audio/mpeg":{"schema":{"type":"string","format":"binary"}},"audio/wav":{"schema":{"type":"string","format":"binary"}},"audio/ogg":{"schema":{"type":"string","format":"binary"}},"audio/flac":{"schema":{"type":"string","format":"binary"}},"audio/aac":{"schema":{"type":"string","format":"binary"}},"audio/pcm":{"schema":{"type":"string","format":"binary"}},"application/octet-stream":{"schema":{"type":"string","format":"binary"}},"text/event-stream":{"schema":{"type":"string","description":"Provider-supported audio events."}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpeechRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/audio/transcriptions":{"post":{"operationId":"createTranscription","summary":"Transcribe audio","tags":["Gateway"],"description":"Multipart audio upload. response_format selects JSON, verbose JSON, text or subtitle output where supported. Common fields are documented, not a full provider validator. Provider capabilities, required fields, limits, response details and supported parameters vary; host overrides may supply request fields.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"audio.transcriptions","x-sine-body":"multipart","x-sine-model":"input","x-sine-replay":"safe","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"result","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioTextResponse"}},"text/plain":{"schema":{"type":"string"}},"text/vtt":{"schema":{"type":"string"}},"application/x-subrip":{"schema":{"type":"string"}},"text/event-stream":{"schema":{"type":"string","description":"When stream=true: transcript event stream for a supported provider and validated PCM WAV input. The multipart upload itself is buffered."}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"Multipart form data; retain file bytes, filenames, media types and repeated fields. JSON, URL-encoded forms and raw binary request bodies are not accepted.","content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/TranscriptionRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/audio/translations":{"post":{"operationId":"createTranslation","summary":"Translate audio","tags":["Gateway"],"description":"Multipart audio upload. response_format selects JSON, verbose JSON, text or subtitle output where supported. Common fields are documented, not a full provider validator. Provider capabilities, required fields, limits, response details and supported parameters vary; host overrides may supply request fields.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"audio.translations","x-sine-body":"multipart","x-sine-model":"input","x-sine-replay":"safe","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"result","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioTextResponse"}},"text/plain":{"schema":{"type":"string"}},"text/vtt":{"schema":{"type":"string"}},"application/x-subrip":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"Multipart form data; retain file bytes, filenames, media types and repeated fields. JSON, URL-encoded forms and raw binary request bodies are not accepted.","content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/TranslationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/generations/images":{"post":{"operationId":"image.generate","summary":"Run image.generate","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"image.generate","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/edits/images":{"post":{"operationId":"image.edit","summary":"Run image.edit","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"image.edit","x-sine-body":"json-or-multipart","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object or multipart form is required. Multipart retains files and repeated fields for protocol validation; URL-encoded and raw binary bodies are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ImageEditGenerationMultipartRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/generations/videos":{"post":{"operationId":"video.generate","summary":"Run video.generate","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"video.generate","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/generations/audio":{"post":{"operationId":"audio.synthesize","summary":"Run audio.synthesize","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"audio.synthesize","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Completed audio bytes.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"audio/*":{"schema":{"type":"string","format":"binary"}},"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/generations/models3d":{"post":{"operationId":"model3d.generate","summary":"Run model3d.generate","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"model3d.generate","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/models3d/retexture":{"post":{"operationId":"model3d.retexture","summary":"Run model3d.retexture","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"model3d.retexture","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/models3d/remesh":{"post":{"operationId":"model3d.remesh","summary":"Run model3d.remesh","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"model3d.remesh","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/models3d/rig":{"post":{"operationId":"model3d.rig","summary":"Run model3d.rig","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"model3d.rig","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/generations/music":{"post":{"operationId":"music.generate","summary":"Run music.generate","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"music.generate","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/generations/sounds":{"post":{"operationId":"sound.generate","summary":"Run sound.generate","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"sound.generate","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/generations/animations3d":{"post":{"operationId":"animation3d.generate","summary":"Run animation3d.generate","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"animation3d.generate","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/generations/documents":{"post":{"operationId":"document.generate","summary":"Run document.generate","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"document.generate","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/generations/splats":{"post":{"operationId":"splat.generate","summary":"Run splat.generate","tags":["Gateway"],"description":"The endpoint fixes the business capability. Direct execution returns a completed result (200); durable execution returns a host-owned task receipt (202). Backend selection belongs to engine.prepare, never the caller or operation descriptor. A bare Core instance rejects durable plans before submission.\n\nCloud routing: model identifies a route returned by GET /models; x-sine-route-id overrides route selection. Check the route's operations and billing_mode first. JSON bodies are limited to 1 MiB; supported multipart uploads are limited to 32 MiB, 128 fields and 65,536 characters per text field. Managed text-token pricing supports chat.completions only; other managed operations require an explicit operation price. Media execution requires a single target with automatic retry/fallback disabled.\n\nIdempotency-Key is optional and scoped to this organization and API key identity. Repeating an admitted key returns HTTP 409, never a cached success response or a replay of the provider call. invocationAlreadyExists means the stored input matches; idempotencyConflict means the key was used for different input. Preserve the same project, route and request when recovering. Capture x-sine-invocation-id; if x-sine-task-id or task is returned, retrieve the existing task. Otherwise inspect the invocation in the Console. A timeout, disconnected stream, unknown or expired task is not proof of failure; do not issue a new paid invocation until its outcome is resolved. Aborting HTTP does not cancel remote work.","x-sine-operation":"splat.generate","x-sine-body":"json","x-sine-model":"input","x-sine-replay":"never","x-sine-routing":"select","x-sine-handler":"model","x-sine-response-mode":"execution","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Successful response. Provider-specific fields may be present.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationResult"}}}},"202":{"description":"Accepted durable task. Retrieve the task to observe its lifecycle and assets.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Opaque gateway task identifier.","schema":{"type":"string"}},"location":{"description":"Task retrieval URL.","schema":{"type":"string"}},"retry-after":{"description":"Suggested polling delay in seconds.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-invocation-id":{"description":"Cloud invocation identifier. Retain it for outcome and billing recovery.","schema":{"type":"string"}},"x-sine-reservation-id":{"description":"Managed billing reservation identifier, when funds were reserved.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"402":{"description":"Organization billing, managed budget or available credits do not permit a new invocation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"404":{"description":"The project, route or authorized task was not found.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"409":{"description":"invocationAlreadyExists, idempotencyConflict, or managedModelChanged. Recover the original invocation/task; reload model configuration for managedModelChanged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayInvocationConflict"}}},"headers":{"x-request-id":{"description":"Cloud error request identifier.","schema":{"type":"string"}},"x-sine-invocation-id":{"description":"Original invocation identifier for an idempotency conflict.","schema":{"type":"string"}},"x-sine-task-id":{"description":"Original durable task identifier, when it exists and remains authorized.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"413":{"description":"Body exceeds the Cloud limit: 1 MiB JSON or 32 MiB multipart.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use the request media type documented for this operation.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}]}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"$ref":"#/components/schemas/GatewayError"}]}}}},"502":{"description":"Sanitized upstream failure or invalid native media response.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayError"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"default":{"description":"Other provider/host status. Provider errors below 500 may retain native shapes; internal/upstream errors at 500 or above are sanitized by the gateway.","headers":{"x-sine-request-id":{"description":"Gateway-generated request identifier.","schema":{"type":"string"}},"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/GatewayError"},{"$ref":"#/components/schemas/ProviderResponse"}]}}}}},"requestBody":{"required":true,"description":"A JSON object is required; arrays, primitives and malformed JSON are rejected.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationRequest"}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"x-sine-route-id","in":"header","required":false,"description":"Optional Cloud route override; otherwise the request model selects the route. Use a route visible to this key.","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a stable key for one intended invocation. Reuse returns 409 and does not replay or return a cached success. Without a key, each request can admit new paid work.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]{1,128}$"}}],"x-sinecloud-idempotency":"conflict-with-recovery"}},"/api/gateway/v1/models":{"get":{"operationId":"listModels","summary":"List available Cloud model routes","tags":["Gateway"],"description":"Returns enabled, usable routes permitted by this key. Each route exposes its billing_mode and supported operations. This is a Cloud catalog; it does not call the provider model endpoint or create an instance.","responses":{"200":{"description":"Available model routes.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayModelList"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"404":{"description":"The project, route or authorized task was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelRead"],"parameters":[{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}}]}},"/api/gateway/v1/tasks":{"get":{"operationId":"tasks.list","summary":"List tasks","tags":["Gateway tasks"],"description":"Reads and cancellation use the original frozen task identity, not current model configuration. The key must retain modelInvoke and permission for the original project and route. Task recovery remains available during financial recovery subject to current identity and product authorization. Unknown or expired tasks may have been submitted: inspect and reconcile the existing task before creating another invocation. HTTP disconnect does not cancel a task.","x-sine-operation":"tasks.list","x-sine-body":"none","x-sine-model":"none","x-sine-replay":"safe","x-sine-routing":"single","x-sine-handler":"execution","x-sine-response-mode":"result","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Visible tasks with an opaque nextCursor.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskList"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"404":{"description":"The project, route or authorized task was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}}},"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"cursor","in":"query","description":"Opaque nextCursor from the preceding page; takes precedence over before.","schema":{"type":"string"}},{"name":"before","in":"query","description":"Alternative pagination cursor when cursor is absent.","schema":{"type":"string"}},{"name":"routeId","in":"query","description":"Filter by an authorized original route.","schema":{"type":"string"}},{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}}],"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"]}},"/api/gateway/v1/tasks/{id}":{"get":{"operationId":"tasks.get","summary":"Retrieve a task","tags":["Gateway tasks"],"description":"Reads and cancellation use the original frozen task identity, not current model configuration. The key must retain modelInvoke and permission for the original project and route. Task recovery remains available during financial recovery subject to current identity and product authorization. Unknown or expired tasks may have been submitted: inspect and reconcile the existing task before creating another invocation. HTTP disconnect does not cancel a task.","x-sine-operation":"tasks.get","x-sine-body":"none","x-sine-model":"none","x-sine-replay":"safe","x-sine-routing":"single","x-sine-handler":"execution","x-sine-response-mode":"result","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Current task, including nonterminal, unknown and expired states.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-task-id":{"description":"The original Cloud task identifier.","schema":{"type":"string"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"404":{"description":"The project, route or authorized task was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^task_[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"}},{"name":"routeId","in":"query","description":"Optional original route assertion; mismatches return 404. Takes precedence over x-sine-route-id.","schema":{"type":"string"}},{"name":"x-sine-route-id","in":"header","description":"Optional original route assertion when routeId is absent.","schema":{"type":"string"}},{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}}],"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"]}},"/api/gateway/v1/tasks/{id}/cancel":{"post":{"operationId":"tasks.cancel","summary":"Cancel a task","tags":["Gateway tasks"],"description":"Reads and cancellation use the original frozen task identity, not current model configuration. The key must retain modelInvoke and permission for the original project and route. Task recovery remains available during financial recovery subject to current identity and product authorization. Unknown or expired tasks may have been submitted: inspect and reconcile the existing task before creating another invocation. HTTP disconnect does not cancel a task. Cancellation is a request, not a guarantee that provider work stops. Poll until a terminal outcome; cancelSupported indicates remote cancellation capability.","x-sine-operation":"tasks.cancel","x-sine-body":"optional-json","x-sine-model":"none","x-sine-replay":"never","x-sine-routing":"single","x-sine-handler":"execution","x-sine-response-mode":"result","x-sine-host-replay":"never","x-sine-authorization":"scoped","responses":{"200":{"description":"Task already completed, failed or cancelled, or cancellation completed immediately.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-task-id":{"description":"The original Cloud task identifier.","schema":{"type":"string"}}}},"202":{"description":"Cancellation requested; task remains nonterminal, including unknown or expired states.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GatewayTask"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-sine-task-id":{"description":"The original Cloud task identifier.","schema":{"type":"string"}}}},"400":{"description":"Invalid request, project identifier, unsupported model parameters or operation configuration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"401":{"description":"Missing, expired, revoked or invalid organization Bearer API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"www-authenticate":{"description":"Bearer authentication challenge for Cloud authentication failures.","schema":{"type":"string"}}}},"403":{"description":"The key scope, project restriction, route policy, current membership or product entitlement denies access.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"404":{"description":"The project, route or authorized task was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"409":{"description":"task_cancel_unsupported: remote cancellation is unavailable; task_submission_unknown: reconcile the original upstream binding before cancellation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"413":{"description":"Cancellation JSON exceeds 256 KiB.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"415":{"description":"Use application/json when sending a cancellation body.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"429":{"description":"Rate or concurrency limit reached. Honor Retry-After when returned.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}},"retry-after":{"description":"Delay before retrying, when supplied. A rate-limit response does not authorize replaying an admitted invocation.","schema":{"type":"string"}}}},"500":{"description":"Sanitized Cloud or Gateway failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}},"503":{"description":"Gateway or durable task execution is unavailable. Restore the required service before continuing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudGatewayError"}}},"headers":{"cache-control":{"schema":{"type":"string","const":"no-store"}},"x-request-id":{"description":"Cloud error request identifier, when the error originates in Cloud.","schema":{"type":"string"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^task_[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"}},{"name":"routeId","in":"query","description":"Optional original route assertion; mismatches return 404. Takes precedence over x-sine-route-id.","schema":{"type":"string"}},{"name":"x-sine-route-id","in":"header","description":"Optional original route assertion when routeId is absent.","schema":{"type":"string"}},{"name":"x-sine-project-id","in":"header","required":false,"description":"Select an organization project. A project-restricted key defaults to its bound project and cannot select another project. The projectId query parameter takes precedence.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}},{"name":"projectId","in":"query","required":false,"description":"Optional project selection; takes precedence over x-sine-project-id and must respect the key restriction.","schema":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"routeId":{"type":"string","description":"If supplied, must match the original task route."}}}}}},"security":[{"OrganizationApiKey":[]}],"x-sinecloud-scopes":["modelInvoke"]}}},"components":{"schemas":{"GatewayError":{"description":"Gateway validation and sanitized internal failures use error.type/message; request_id is present on public-boundary gateway errors. Provider and host authorization errors may have other shapes.","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string"}},"additionalProperties":true,"required":["type","message"]}},"additionalProperties":true,"required":["error"]},"ProviderResponse":{"description":"Provider-defined JSON. The gateway does not guarantee a uniform schema for this response."},"ContentBlock":{"type":"object","properties":{"type":{"type":"string"},"text":{"type":"string"},"image_url":{"type":"object","properties":{"url":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true},"input_audio":{"type":"object","properties":{"data":{"type":"string"},"format":{"type":"string"}},"additionalProperties":true},"file":{"type":"object","properties":{"file_id":{"type":"string"},"file_data":{"type":"string"},"file_url":{"type":"string"},"file_name":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true,"required":["type"]},"ToolCall":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"function":{"type":"object","properties":{"name":{"type":"string"},"arguments":{"type":"string","description":"JSON-encoded arguments."}},"additionalProperties":true}},"additionalProperties":true},"Tool":{"type":"object","properties":{"type":{"type":"string"},"function":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"parameters":{"type":"object","properties":{},"additionalProperties":true},"strict":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true},"ChatMessage":{"type":"object","properties":{"role":{"type":"string","description":"Common roles: system, developer, user, assistant, tool, function."},"content":{"anyOf":[{"type":"string"},{"type":"array","items":{"$ref":"#/components/schemas/ContentBlock"}},{"type":"null"}]},"name":{"type":"string"},"tool_calls":{"type":"array","items":{"$ref":"#/components/schemas/ToolCall"}},"tool_call_id":{"type":"string"},"function_call":{"type":"object","properties":{},"additionalProperties":true}},"additionalProperties":true,"required":["role"]},"Usage":{"type":"object","properties":{"prompt_tokens":{"type":"integer"},"completion_tokens":{"type":"integer"},"total_tokens":{"type":"integer"},"input_tokens":{"type":"integer"},"output_tokens":{"type":"integer"},"prompt_tokens_details":{"type":"object","properties":{},"additionalProperties":true},"completion_tokens_details":{"type":"object","properties":{},"additionalProperties":true}},"additionalProperties":true},"ChatCompletionRequest":{"type":"object","properties":{"model":{"type":"string","description":"Provider model identifier. A host-owned override may supply or replace this value."},"temperature":{"type":"number"},"top_p":{"type":"number"},"max_tokens":{"type":"integer"},"max_completion_tokens":{"type":"integer"},"stream":{"type":"boolean"},"stop":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"seed":{"type":"integer"},"user":{"type":"string"},"metadata":{"type":"object","properties":{},"additionalProperties":true},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ChatMessage"}},"tools":{"type":"array","items":{"$ref":"#/components/schemas/Tool"}},"tool_choice":{"anyOf":[{"type":"string"},{"type":"object","properties":{},"additionalProperties":true}]},"response_format":{"type":"object","properties":{},"additionalProperties":true},"stream_options":{"type":"object","properties":{},"additionalProperties":true},"reasoning_effort":{"type":"string"},"n":{"type":"integer"},"presence_penalty":{"type":"number"},"frequency_penalty":{"type":"number"},"logit_bias":{"type":"object","properties":{},"additionalProperties":true}},"additionalProperties":true,"description":"OpenAI-compatible chat input with provider extensions. Required model/message fields and limits depend on the selected provider and host overrides; this is not a complete provider validator."},"ChatCompletionResponse":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"created":{"type":"integer"},"model":{"type":"string"},"provider":{"type":"string"},"usage":{"$ref":"#/components/schemas/Usage"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"message":{"$ref":"#/components/schemas/ChatMessage"},"finish_reason":{"type":["string","null"]},"logprobs":{}},"additionalProperties":true}}},"additionalProperties":true},"ChatCompletionChunk":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"created":{"type":"integer"},"model":{"type":"string"},"usage":{"$ref":"#/components/schemas/Usage"},"choices":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"delta":{"type":"object","properties":{},"additionalProperties":true},"finish_reason":{"type":["string","null"]},"logprobs":{}},"additionalProperties":true}}},"additionalProperties":true},"MessagesRequest":{"type":"object","properties":{"model":{"type":"string","description":"Provider model identifier. A host-owned override may supply or replace this value."},"messages":{"type":"array","items":{"$ref":"#/components/schemas/AnthropicMessage"}},"max_tokens":{"type":"integer"},"system":{"anyOf":[{"type":"string"},{"type":"array","items":{"$ref":"#/components/schemas/ContentBlock"}}]},"stream":{"type":"boolean"},"temperature":{"type":"number"},"top_p":{"type":"number"},"top_k":{"type":"integer"},"stop_sequences":{"type":"array","items":{"type":"string"}},"tools":{"type":"array","items":{"type":"object","properties":{},"additionalProperties":true}},"tool_choice":{"type":"object","properties":{},"additionalProperties":true},"thinking":{"type":"object","properties":{},"additionalProperties":true},"metadata":{"type":"object","properties":{},"additionalProperties":true}},"additionalProperties":true},"AnthropicMessage":{"type":"object","properties":{"role":{"type":"string","description":"Usually user or assistant."},"content":{"anyOf":[{"type":"string"},{"type":"array","items":{"$ref":"#/components/schemas/ContentBlock"}}]}},"additionalProperties":true,"required":["role","content"]},"MessagesResponse":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"role":{"type":"string"},"model":{"type":"string"},"content":{"type":"array","items":{"$ref":"#/components/schemas/ContentBlock"}},"stop_reason":{"type":["string","null"]},"stop_sequence":{"type":["string","null"]},"usage":{"$ref":"#/components/schemas/Usage"}},"additionalProperties":true},"EmbeddingRequest":{"type":"object","properties":{"model":{"type":"string","description":"Provider model identifier. A host-owned override may supply or replace this value."},"input":{"anyOf":[{"type":"string"},{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"array","items":{"type":"integer"}},{"type":"object","properties":{},"additionalProperties":true}]}}]},"dimensions":{"type":"integer"},"encoding_format":{"type":"string"},"user":{"type":"string"}},"additionalProperties":true},"EmbeddingResponse":{"type":"object","properties":{"object":{"type":"string"},"model":{"type":"string"},"usage":{"$ref":"#/components/schemas/Usage"},"data":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string"},"index":{"type":"integer"},"embedding":{"anyOf":[{"type":"array","items":{"type":"number"}},{"type":"array","items":{"type":"array","items":{"type":"number"}}},{"type":"string"}]},"image_embedding":{"type":"array","items":{"type":"number"}},"video_embeddings":{"type":"array","items":{"type":"object","properties":{"start_offset":{"type":"number"},"end_offset":{"type":"number"},"embedding":{"type":"array","items":{"type":"number"}}},"additionalProperties":true}}},"additionalProperties":true}}},"additionalProperties":true},"ImageGenerationRequest":{"type":"object","properties":{"model":{"type":"string","description":"Provider model identifier. A host-owned override may supply or replace this value."},"prompt":{"type":"string"},"n":{"type":"integer"},"size":{"type":"string"},"quality":{"type":"string"},"style":{"type":"string"},"response_format":{"type":"string"},"user":{"type":"string"}},"additionalProperties":true},"ImageEditRequest":{"type":"object","properties":{"model":{"type":"string","description":"Provider model identifier. A host-owned override may supply or replace this value."},"image":{"anyOf":[{"type":"string","format":"binary"},{"type":"array","items":{"type":"string","format":"binary"}}]},"image[]":{"type":"array","items":{"type":"string","format":"binary"}},"mask":{"type":"string","format":"binary"},"prompt":{"type":"string"},"n":{"type":"integer"},"size":{"type":"string"},"response_format":{"type":"string"},"user":{"type":"string"}},"additionalProperties":true},"ImageResponse":{"type":"object","properties":{"created":{"type":"integer"},"data":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"b64_json":{"type":"string"},"revised_prompt":{"type":"string"}},"additionalProperties":true}},"usage":{"$ref":"#/components/schemas/Usage"}},"additionalProperties":true},"SpeechRequest":{"type":"object","properties":{"model":{"type":"string","description":"Provider model identifier. A host-owned override may supply or replace this value."},"input":{"type":"string"},"voice":{"type":"string"},"response_format":{"type":"string"},"speed":{"type":"number"},"instructions":{"type":"string"},"stream":{"type":"boolean","description":"Incremental audio requires a host-configured WebSocket and a supported provider and model."}},"additionalProperties":true},"TranscriptionRequest":{"type":"object","properties":{"model":{"type":"string","description":"Provider model identifier. A host-owned override may supply or replace this value."},"file":{"type":"string","format":"binary"},"language":{"type":"string"},"prompt":{"type":"string"},"response_format":{"type":"string"},"temperature":{"type":"number"},"timestamp_granularities[]":{"type":"array","items":{"type":"string"}},"stream":{"type":"boolean"}},"additionalProperties":true},"TranslationRequest":{"type":"object","properties":{"model":{"type":"string","description":"Provider model identifier. A host-owned override may supply or replace this value."},"file":{"type":"string","format":"binary"},"prompt":{"type":"string"},"response_format":{"type":"string"},"temperature":{"type":"number"}},"additionalProperties":true},"AudioTextResponse":{"type":"object","properties":{"text":{"type":"string"},"task":{"type":"string"},"language":{"type":"string"},"duration":{"type":"number"},"usage":{"$ref":"#/components/schemas/Usage"},"segments":{"type":"array","items":{"type":"object","properties":{},"additionalProperties":true}},"words":{"type":"array","items":{"type":"object","properties":{"word":{"type":"string"},"start":{"type":"number"},"end":{"type":"number"}},"additionalProperties":true}}},"additionalProperties":true},"ResponseCreateRequest":{"type":"object","properties":{"model":{"type":"string","description":"Provider model identifier. A host-owned override may supply or replace this value."},"input":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"object","properties":{},"additionalProperties":true}}]},"instructions":{"type":["string","null"]},"previous_response_id":{"type":["string","null"]},"max_output_tokens":{"type":"integer"},"stream":{"type":"boolean"},"store":{"type":"boolean"},"temperature":{"type":"number"},"top_p":{"type":"number"},"tools":{"type":"array","items":{"type":"object","properties":{},"additionalProperties":true}},"tool_choice":{"anyOf":[{"type":"string"},{"type":"object","properties":{},"additionalProperties":true}]},"parallel_tool_calls":{"type":"boolean"},"include":{"type":"array","items":{"type":"string"}},"reasoning":{"type":"object","properties":{},"additionalProperties":true},"text":{"type":"object","properties":{},"additionalProperties":true},"metadata":{"type":"object","properties":{},"additionalProperties":true},"truncation":{"type":"string"}},"additionalProperties":true},"ModelResponse":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"created_at":{"type":"integer"},"model":{"type":"string"},"status":{"type":"string"},"output":{"type":"array","items":{"type":"object","properties":{},"additionalProperties":true}},"usage":{"anyOf":[{"$ref":"#/components/schemas/Usage"},{"type":"null"}]},"error":{},"incomplete_details":{},"previous_response_id":{"type":["string","null"]}},"additionalProperties":true},"Model":{"type":"object","properties":{"id":{"type":"string"},"object":{"type":"string"},"created":{"type":"integer"},"owned_by":{"type":"string"}},"additionalProperties":true},"GenerationRequest":{"type":"object","properties":{"model":{"type":"string","description":"Provider model identifier. A host-owned override may supply or replace this value."},"input":{"type":"object","properties":{},"additionalProperties":true}},"additionalProperties":false,"required":["model","input"],"description":"Native generation parameters. The endpoint selects the business capability; the selected engine and model select direct or durable execution. No caller-selected backend or output kind is accepted."},"ImageEditGenerationMultipartRequest":{"type":"object","properties":{"model":{"type":"string","description":"Provider model identifier. A host-owned override may supply or replace this value."},"input":{"type":"string","contentMediaType":"application/json","contentSchema":{"type":"object","properties":{},"additionalProperties":true},"description":"Exactly one JSON object string with generation input, including provider-specific fields."},"image":{"anyOf":[{"type":"string","format":"binary"},{"type":"array","items":{"type":"string","format":"binary"},"minItems":1}],"description":"Optional repeated nonempty PNG, JPEG, WebP or GIF file parts. Uploads replace input.images."},"mask":{"type":"string","format":"binary","description":"Optional single nonempty PNG, JPEG, WebP or GIF file part. Replaces input.mask."}},"additionalProperties":false,"required":["model","input"],"description":"Image edit generation multipart form. model and input occur exactly once; only image may repeat. Text image/mask fields are rejected. Without uploads, input.images/input.mask retain the normal JSON contract."},"GenerationResult":{"anyOf":[{"$ref":"#/components/schemas/ImageResponse"},{"type":"object","properties":{"assets":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"mediaType":{"type":"string"}},"additionalProperties":true,"required":["url","mediaType"]}}},"additionalProperties":true,"required":["assets"]}],"description":"Completed generation output; image generation returns base64 images and audio synthesis returns binary audio. Stored task output exposes assets."},"GatewayTask":{"type":"object","properties":{"id":{"type":"string","pattern":"^task_[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"},"object":{"type":"string","const":"task"},"provider":{"type":"string"},"model":{"type":"string","description":"The original Cloud route identifier."},"capability":{"type":"string"},"status":{"type":"string","enum":["pending","submitting","queued","processing","completed","failed","cancelled","unknown","expired"]},"cancelSupported":{"type":"boolean"},"cancellationRequested":{"type":"boolean"},"progress":{"type":"number","minimum":0,"maximum":100},"output":{"type":"object","properties":{"assets":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"mediaType":{"type":"string"}},"additionalProperties":true,"required":["url","mediaType"]}}},"additionalProperties":true},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"additionalProperties":true,"required":["message"]},"providerStatus":{"type":"string"},"submission":{"type":"string","enum":["not_started","started","accepted","rejected","unknown"]},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"finishedAt":{"type":"string"}},"additionalProperties":true,"required":["id","object","provider","model","capability","status","cancelSupported","submission","cancellationRequested","createdAt","updatedAt"],"description":"Host-owned durable task. The host authorizes access and retains the immutable provider/model binding. Capability identifies business semantics, not asset format."},"TaskList":{"type":"object","required":["object","data","nextCursor"],"properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/GatewayTask"}},"nextCursor":{"type":["string","null"],"description":"Opaque cursor for the next page. Authorization filtering can produce a short page with a non-null cursor."}}},"CloudGatewayError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["type","code","message","param"],"properties":{"type":{"type":"string","enum":["authentication_error","invalid_request_error","server_error"]},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"null"}}}}},"CloudGatewayInvocationConflict":{"allOf":[{"$ref":"#/components/schemas/CloudGatewayError"},{"type":"object","properties":{"task":{"$ref":"#/components/schemas/GatewayTask","description":"Present only for invocationAlreadyExists when an authorized durable task can be recovered."}}}]},"CloudGatewayModel":{"allOf":[{"$ref":"#/components/schemas/Model"},{"type":"object","required":["id","object","created","owned_by","name","billing_mode","operations"],"properties":{"id":{"type":"string","description":"Cloud route identifier to pass as model, not a provider model identifier."},"object":{"type":"string","const":"model"},"owned_by":{"type":"string","enum":["sine-cloud","organization"]},"name":{"type":"string"},"billing_mode":{"type":"string","enum":["managed","byok"]},"operations":{"type":"array","items":{"type":"string"},"description":"Operations supported by this enabled route and its billing configuration. Availability does not promise every provider parameter or streaming mode."}}}]},"CloudGatewayModelList":{"type":"object","required":["object","data"],"properties":{"object":{"type":"string","const":"list"},"data":{"type":"array","items":{"$ref":"#/components/schemas/CloudGatewayModel"}}}}},"securitySchemes":{"OrganizationApiKey":{"type":"http","scheme":"bearer","bearerFormat":"sc_…","description":"Organization API key with the required product scopes. Create and manage keys in the Sine Cloud Console. The key fixes the organization and may restrict the project."}}},"security":[{"OrganizationApiKey":[]}],"tags":[{"name":"Gateway","description":"Available model routes and native model invocations."},{"name":"Gateway tasks","description":"Read and cancel durable generation tasks using their original execution identity."}],"x-sinecloud-source":{"repository":"https://github.com/fei-bai-inc/sine-gateway","revision":"d9ba789a41e67683dfd2690650d9b8c8a9f20319","package":"@sine-gateway/core","version":"0.1.0","sha256":"6f2fec26d58e89265b8076a32446403f13bcafae28b186367a7be923ebc7a2c2"}}