openapi: 3.0.0 info: description: OpenAI-compatible chat completions endpoint that lets agents call LLMs with Arcade tools attached and execute them with user-scoped authorization. title: Arcade LLM API contact: name: Arcade url: https://arcade.dev email: contact@arcade.dev version: 0.1.0 paths: /v1/chat/completions: post: security: - Bearer: [] description: Interact with language models via OpenAI's chat completions API tags: - LLM summary: Language Model Chat operationId: llm-chat requestBody: content: application/json: schema: $ref: '#/components/schemas/schemas.ChatRequest' description: Request Data required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/schemas.ChatResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/schemas.Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/schemas.Error' '415': description: Unsupported Media Type content: application/json: schema: $ref: '#/components/schemas/schemas.Error' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/schemas.Error' externalDocs: description: Documentation url: https://docs.arcade.dev servers: - url: https://api.arcade.dev components: securitySchemes: Bearer: description: 'Enter your API key or API token in the format: Bearer ' type: apiKey name: Authorization in: header schemas: auth.AuthorizationContext: type: object properties: token: type: string user_info: type: object additionalProperties: true auth.AuthorizationResponse: type: object properties: context: $ref: '#/components/schemas/auth.AuthorizationContext' id: type: string provider_id: type: string scopes: type: array items: type: string status: default: pending allOf: - $ref: '#/components/schemas/auth.AuthorizationStatus' url: type: string user_id: type: string auth.AuthorizationStatus: type: string enum: - not_started - pending - completed - failed x-enum-varnames: - StatusNotStarted - StatusPending - StatusCompleted - StatusFailed schemas.ChatMessage: type: object required: - content - role properties: content: description: The content of the message. type: string name: description: tool Name type: string role: description: The role of the author of this message. One of system, user, tool, or assistant. type: string tool_call_id: description: tool_call_id type: string tool_calls: description: tool calls if any type: array items: $ref: '#/components/schemas/schemas.ModelToolCall' schemas.ChatRequest: type: object properties: frequency_penalty: type: number logit_bias: description: 'LogitBias is must be a token id string (specified by their token ID in the tokenizer), not a word string. incorrect: `"logit_bias":{"You": 6}`, correct: `"logit_bias":{"1639": 6}` refs: https://platform.openai.com/docs/api-reference/chat/create#chat/create-logit_bias' type: object additionalProperties: type: integer logprobs: description: 'LogProbs indicates whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned in the content of message. This option is currently not available on the gpt-4-vision-preview model.' type: boolean max_tokens: type: integer messages: type: array items: $ref: '#/components/schemas/schemas.ChatMessage' model: type: string n: type: integer parallel_tool_calls: description: 'Disable the default behavior of parallel tool calls by setting it: false.' type: boolean presence_penalty: type: number response_format: $ref: '#/components/schemas/schemas.ResponseFormat' seed: type: integer stop: type: array items: type: string stream: type: boolean stream_options: description: 'Options for streaming response. Only set this when you set stream: true.' allOf: - $ref: '#/components/schemas/schemas.StreamOptions' temperature: type: number tool_choice: description: This can be either a string or an ToolChoice object. tools: {} top_logprobs: description: 'TopLogProbs is an integer between 0 and 5 specifying the number of most likely tokens to return at each token position, each with an associated log probability. logprobs must be set to true if this parameter is used.' type: integer top_p: type: number user: type: string schemas.ChatResponse: type: object properties: choices: type: array items: $ref: '#/components/schemas/schemas.Choice' created: type: integer id: type: string model: type: string object: type: string system_fingerprint: type: string usage: $ref: '#/components/schemas/schemas.Usage' schemas.Choice: type: object properties: finish_reason: type: string index: type: integer logprobs: {} message: $ref: '#/components/schemas/schemas.ChatMessage' tool_authorizations: type: array items: $ref: '#/components/schemas/auth.AuthorizationResponse' tool_messages: type: array items: $ref: '#/components/schemas/schemas.ChatMessage' schemas.Error: type: object properties: message: type: string name: type: string schemas.ModelToolCall: type: object properties: function: $ref: '#/components/schemas/schemas.ToolFunctionCall' id: type: string type: $ref: '#/components/schemas/schemas.ToolType' schemas.ResponseFormat: type: object properties: type: $ref: '#/components/schemas/schemas.ResponseFormatType' schemas.ResponseFormatType: type: string enum: - json_object - text x-enum-varnames: - ResponseFormatJSON - ResponseFormatText schemas.StreamOptions: type: object properties: include_usage: description: 'If set, an additional chunk will be streamed before the data: [DONE] message. The usage field on this chunk shows the token usage statistics for the entire request, and the choices field will always be an empty array. All other chunks will also include a usage field, but with a null value.' type: boolean schemas.ToolFunctionCall: type: object properties: arguments: type: string name: type: string schemas.ToolType: type: string enum: - function x-enum-varnames: - ToolTypeFunction schemas.Usage: type: object properties: completion_tokens: type: integer prompt_tokens: type: integer total_tokens: type: integer