Arcade LLM API

OpenAI-compatible chat completions endpoint that lets agents call LLMs through Arcade with tools attached. The engine handles tool selection, end-user authorization, and tool execution so agents need only speak the OpenAI Chat Completions protocol.

Arcade LLM API is one of 9 APIs that arcade-dev publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include LLM, AI, Chat, and OpenAI Compatible. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, sample payloads, and 1 Naftiko capability spec.

OpenAPI Specification

arcade-llm-api-openapi.yml Raw ↑
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: [email protected]
  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 <token>'
      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