> ## Documentation Index
> Fetch the complete documentation index at: https://docs.infercom.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create chat-based completion

> Create a chat completion from a list of messages using Infercom's OpenAI-compatible API. Supports streaming, function calling, vision, and JSON output.



## OpenAPI

````yaml /en/api-reference/openapi_infercom.yml post /chat/completions
openapi: 3.1.1
info:
  title: Infercom Inference Service API
  description: Infercom Inference Service API Specification
  version: 1.0.0
  termsOfService: https://infercom.ai/terms-of-service
  contact:
    email: support@infercom.ai
    name: Infercom Support
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.infercom.ai/v1
security:
  - api_key: []
externalDocs:
  description: Find out more in the official Infercom docs
  url: /en/api-reference/overview
paths:
  /chat/completions:
    post:
      tags:
        - Chat completions
      summary: Create chat-based completion
      description: >-
        Create a chat completion from a list of messages using Infercom's
        OpenAI-compatible API. Supports streaming, function calling, vision, and
        JSON output.
      operationId: createChatCompletion
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChatCompletionRequest'
        description: Chat prompt and parameters
        required: true
      responses:
        '200':
          description: >-
            Successful Response, or model output error  (when unsuccessful tool
            calling or structured response generation)
          headers:
            inference-id:
              $ref: '#/components/headers/InferenceId'
            x-ratelimit-limit-requests:
              $ref: '#/components/headers/RateLimitRequests'
            x-ratelimit-limit-requests-day:
              $ref: '#/components/headers/RateLimitRequestsDay'
            x-ratelimit-remaining-requests:
              $ref: '#/components/headers/RateLimitRemainingRequests'
            x-ratelimit-remaining-requests-day:
              $ref: '#/components/headers/RateLimitRemainingRequestsDay'
            x-ratelimit-reset-requests:
              $ref: '#/components/headers/RateLimitResetRequests'
            x-ratelimit-reset-requests-day:
              $ref: '#/components/headers/RateLimitResetRequestsDay'
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ChatCompletionResponse'
                  - $ref: '#/components/schemas/ChatCompletionStreamResponse'
                  - $ref: '#/components/schemas/ModelOutputError'
                  - $ref: '#/components/schemas/GeneralError'
        '400':
          description: Bad Request - Missing or invalid parameters
          content:
            text/plain:
              schema:
                type: string
                example: 'Invalid request body:  - missing property ''model''"'
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
              example:
                error: Model name is required
        '401':
          description: Unauthorized access
          content:
            text/plain:
              schema:
                type: string
                example: unauthorized
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '408':
          description: Request timeout
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '410':
          description: Gone - model is no longer available (deprecated or removed)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralError'
        '500':
          description: Internal Server Error. Unexpected issue on server side.
          content:
            text/plain:
              schema:
                type: string
        '503':
          description: Service Temporarily Unavailable
          content:
            text/plain:
              schema:
                type: string
                example: Service Temporarily Unavailable
      security:
        - api_key: []
      x-codeSamples:
        - lang: Python
          source: |-
            from openai import OpenAI

            client = OpenAI(
                base_url="https://api.infercom.ai/v1",
                api_key="your-infercom-api-key",
            )

            completion = client.chat.completions.create(
                model="MiniMax-M2.7",
                messages=[
                    {"role": "user", "content": "Write a haiku about AI."}
                ]
            )

            print(completion.choices[0].message.content)
        - lang: JavaScript
          source: |-
            import OpenAI from 'openai';

            const client = new OpenAI({
              baseURL: 'https://api.infercom.ai/v1',
              apiKey: process.env['INFERCOM_API_KEY'],
            });

            const completion = await client.chat.completions.create({
              model: 'MiniMax-M2.7',
              messages: [{ role: 'user', content: 'Write a haiku about AI.' }],
            });

            console.log(completion.choices[0].message.content);
        - lang: cURL
          source: |-
            curl -X POST https://api.infercom.ai/v1/chat/completions \
              -H "Authorization: Bearer $INFERCOM_API_KEY" \
              -H "Content-Type: application/json" \
              -d '{
                "model": "MiniMax-M2.7",
                "messages": [
                  {"role": "user", "content": "Write a haiku about AI."}
                ]
              }'
components:
  schemas:
    ChatCompletionRequest:
      title: Chat Completion Request
      type: object
      description: chat completions request object
      additionalProperties: true
      properties:
        model:
          title: Model
          type: string
          description: >-
            The model ID to use. Call `GET /v1/models` to retrieve the current
            list of available models. See [available
            models](/en/models/infercomcloud-models) for details.
          example: MiniMax-M2.7
        messages:
          title: Messages
          type: array
          description: A list of messages comprising the conversation so far.
          items:
            anyOf:
              - $ref: '#/components/schemas/SystemMessage'
              - $ref: '#/components/schemas/UserMessage'
              - $ref: '#/components/schemas/AssistantMessage'
              - $ref: '#/components/schemas/ToolMessage'
          minItems: 1
          examples:
            - - role: user
                content: create a poem using palindromes
        max_tokens:
          title: Max Tokens
          type: integer
          description: >-
            The maximum number of tokens that can be generated in the chat
            completion.  The total length of input tokens and generated tokens
            is limited by  the model's context length.
          nullable: true
          example: 2048
        max_completion_tokens:
          title: Max Completion Tokens
          type: integer
          description: >-
            The maximum number of tokens that can be generated in the chat
            completion.  The total length of input tokens and generated tokens
            is limited by  the model's context length.
          nullable: true
          example: 2048
        temperature:
          title: Temperature
          type: number
          description: >-
            What sampling temperature to use, determines the degree of
            randomness in the response.  Accepted range is 0 to 2. Higher values
            like 1.5 make the output more random,  while lower values like 0.2
            make it more focused and deterministic. A value of 1.0 uses the 
            model's distribution exactly as trained. Use the value the model
            publisher recommends; see  [Recommended sampling
            parameters](/en/models/infercomcloud-models#recommended-sampling-parameters). 
            Alter this, top_p or top_k, but not more than one of these.
          minimum: 0
          maximum: 2
          default: 0.7
          nullable: true
          example: 0.7
        top_p:
          title: Top P
          type: number
          description: >-
            Cumulative probability for token choices. An alternative to sampling
            with temperature, called nucleus sampling, where the model considers
            the results of the tokens with top_p probability mass. So 0.1 means
            only the tokens comprising the top 10% probability mass are
            considered. Is recommended altering this, top_k or temperature but 
            not more than one of these.
          minimum: 0
          maximum: 1
          nullable: true
          example: 1
        top_k:
          title: Top K
          type: integer
          description: >-
            Amount limit of token choices. An alternative to sampling with
            temperature, the model considers the results of the first K tokens
            with higher probability.  So 10 means only the first 10 tokens with
            higher probability are considered. Is recommended altering this,
            top_p or temperature but not more than one of these.
          minimum: 1
          maximum: 100
          nullable: true
          example: 5
        presence_penalty:
          title: Presence Penalty
          type: number
          description: >-
            Number between -2.0 and 2.0. Positive values penalize new tokens
            based on whether they appear in the text so far, increasing the
            model's likelihood to talk about new topics.
          maximum: 2
          minimum: -2
          default: 0
          nullable: true
        frequency_penalty:
          title: Frequency Penalty
          type: number
          description: >-
            Number between -2.0 and 2.0. Positive values penalize new tokens
            based on their existing frequency in the text so far, decreasing the
            model's likelihood to repeat the same line verbatim.
          maximum: 2
          minimum: -2
          default: 0
        do_sample:
          title: do_sample
          type: boolean
          description: >-
            If true, sampling is enabled during output generation. If false,
            deterministic decoding is used.
          nullable: true
        stop:
          title: Stop
          description: >-
            Sequences where the API will stop generating tokens. The returned
            text will not contain the stop sequence.
          oneOf:
            - type: string
              example: |+

              nullable: true
            - type: array
              items:
                type: string
                example: '["\n"]'
          nullable: true
        stream:
          title: Stream
          type: boolean
          description: >-
            If set, partial message deltas will be sent. Tokens will be sent as
            data-only  [server-sent
            events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events#Event_stream_format)
            as they become available, with the stream terminated by a `data:
            [DONE]` message.
          default: false
          nullable: true
        stream_options:
          title: StreamOptions
          type: object
          description: >-
            Options for streaming response. Only set this when setting stream as
            true
          additionalProperties: true
          properties:
            include_usage:
              anyOf:
                - type: boolean
              title: Include Usage
              description: Whether to include the usage metrics in a final chunk or not
              nullable: true
          nullable: true
        response_format:
          title: Response Format
          description: >-
            An object specifying the format that the model must output.  
            Setting to `{ "type": "json_object"}` enables JSON mode,    which
            will check the message the model generates is valid JSON. 
            **Important:** when using JSON mode, you **must** also instruct the
            model to produce JSON yourself  via a system or user message.
            Setting to `{ "type": "json_schema", "json_schema":
            {<your_schema>}"}` enables JSON schema mode,    which will check the
            message the model generates is valid object of type <your_schema>.
          oneOf:
            - $ref: '#/components/schemas/ResponseFormatText'
            - $ref: '#/components/schemas/ResponseFormatJSONObject'
            - $ref: '#/components/schemas/ResponseFormatJSONSchema'
          discriminator:
            propertyName: type
            mapping:
              json_object:
                $ref: '#/components/schemas/ResponseFormatJSONObject'
              json_schema:
                $ref: '#/components/schemas/ResponseFormatJSONSchema'
              text:
                $ref: '#/components/schemas/ResponseFormatText'
          nullable: true
        reasoning_effort:
          title: Reasoning Effort
          type: string
          description: >-
            Value specifying the amount of reasoning the model is allowed to do.
            Increasing it increases the number of output reasoning tokens and
            latency, but improves quality of the responses. Allowed values are
            'low', 'medium', 'high'.  On Infercom this parameter is implemented
            by `gpt-oss-120b`, where the default is `medium`. Reasoning cannot
            be switched off - `low` is the minimum, and 'none' or 'off' are
            rejected with a 400.  Other models accept the parameter for OpenAI
            compatibility and ignore it. See the Reasoning guide for per-model
            behavior.
          enum:
            - low
            - medium
            - high
          nullable: true
        tool_choice:
          title: Tool Choice
          anyOf:
            - enum:
                - none
                - auto
                - required
              type: string
            - $ref: '#/components/schemas/ToolChoiceObject'
          description: >-
            Controls which (if any) tool is called by the model.  `none` means
            the model will not call any tool and instead generates a message. 
            `auto` means the model can pick between generating a message or
            calling one or more tools.  `required` means the model must call one
            or more tools.  Specifying a particular tool via `{"type":
            "function", "function": {"name": "my_function"}}` forces  the model
            to call that tool.
          nullable: true
        parallel_tool_calls:
          title: Parallel Tool Calls
          type: boolean
          description: Whether to enable parallel function calling during tool use.
          nullable: true
        tools:
          description: >-
            A list of tools the model may call.  Use this to provide a list of
            functions the model may generate JSON inputs for.
          items:
            $ref: '#/components/schemas/Tool'
          maxItems: 128
          nullable: true
          type: array
        chat_template_kwargs:
          title: Chat Template Kwargs
          type: object
          description: >-
            A dictionary of additional keyword arguments to pass into the chat
            template.  Use this to provide extra context or parameters that the
            model's chat template  can process. Keys must be strings; values may
            be any valid JSON type.
          properties:
            enable_thinking:
              $ref: '#/components/schemas/EnableThinking'
          additionalProperties: true
          nullable: true
          example:
            enable_thinking: true
        logprobs:
          title: Logprobs
          type: boolean
          description: >-
            This is not yet supported by our models.  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`.
          default: false
          nullable: true
        top_logprobs:
          title: Top Logprobs
          type: integer
          description: >-
            This is not yet supported by our models.  An integer between 0 and
            20 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.
          maximum: 20
          minimum: 0
          nullable: true
        'n':
          title: 'N'
          type: integer
          description: >-
            How many completions to generate for each prompt. **Note:** Because
            this parameter generates many completions, it can quickly consume
            your token quota. Use carefully and ensure that you have reasonable
            settings for `max_tokens`.
          maximum: 8
          minimum: 1
          default: 1
          nullable: true
          example: 1
        logit_bias:
          title: Logit Bias
          type: object
          description: >-
            This is not yet supported by our models.  Modify the likelihood of
            specified tokens appearing in the completion.
          additionalProperties:
            type: integer
          nullable: true
        seed:
          title: Seed
          description: >-
            If specified, the system will make a best effort to sample
            deterministically, such that repeated requests with the same `seed`
            and parameters should return the same result. Determinism is not
            guaranteed, and you should refer to the `system_fingerprint`
            response parameter to monitor changes in the backend.
          nullable: true
          type: integer
      required:
        - model
        - messages
      examples:
        - messages:
            - role: user
              content: create a poem using palindromes
          model: MiniMax-M2.7
        - messages:
            - role: system
              content: You are a helpful assistant
            - role: user
              content: create a poem using palindromes
          max_tokens: 2048
          model: MiniMax-M2.7
          stream: false
          temperature: 0.7
          top_p: 1
    ChatCompletionResponse:
      title: Chat Completion Response
      type: object
      description: chat completion response returned by the model
      properties:
        choices:
          title: Choices
          type: array
          items:
            $ref: '#/components/schemas/ChatCompletionChoice'
          minItems: 1
        created:
          title: Created
          type: number
          description: >-
            The Unix timestamp (in seconds) of when the chat completion was
            created.
        id:
          title: Id
          type: string
          description: A unique identifier for the chat completion.
        model:
          title: Model
          description: The model used for the chat completion.
          type: string
        object:
          title: Object
          type: string
          description: The object type, always `chat.completion`.
          enum:
            - chat.completion
          const: chat.completion
        system_fingerprint:
          title: System fingerprint
          type: string
          description: Backend configuration that the model runs with.
        usage:
          $ref: '#/components/schemas/Usage'
      required:
        - choices
        - created
        - id
        - model
        - object
        - system_fingerprint
        - usage
      examples:
        - choices:
            - finish_reason: stop
              index: 0
              message:
                content: >-
                  In madam moon's silver glow,  Aha, a palindrome to know, 
                  Radar spins, a circular tale,  Level heads prevail, without
                  fail.  A man, a plan, a canal, Panama!  Able was I ere I saw
                  Elba,  A Santa at NASA, a curious sight,  Do geese see God, in
                  the pale moonlight?  Mr. Owl ate my metal worm,  Do nine men
                  interpret? Nine men, I nod,  Never odd or even, a palindrome's
                  might,  Madam, in Eden, I'm Adam.  Aibohphobia, a fear to
                  confess,  A palindrome's symmetry, I must address,  Refer, a
                  word that reads the same,  A palindrome's beauty, in its
                  circular game.  In the stillness of the night,  Ava, a
                  palindrome, shining bright,  Hannah, a name that reads the
                  same,  A palindrome's magic, in its circular flame.  Note:
                  Please keep in mind that creating a poem using palindromes can
                  be a challenging task,  and the resulting poem may not be as
                  cohesive or flowing as one that doesn't rely on palindromes. 
                  However, I hope you enjoy the attempt!
                role: assistant
          created: 1737583288.6076705
          id: 83a7809d-e18f-44f9-9ab7-2bc494c6c661
          model: MiniMax-M2.7
          object: chat.completion
          system_fingerprint: fastcoe
          usage:
            acceptance_rate: 4.058139324188232
            completion_tokens: 350
            completion_tokens_after_first_per_sec: 248.09314856382406
            completion_tokens_after_first_per_sec_first_ten: 249.67922929952655
            completion_tokens_per_sec: 238.91966176995348
            end_time: 1737583289.7345645
            is_last_response: true
            prompt_tokens: 43
            start_time: 1737583288.264706
            time_to_first_token: 0.06312894821166992
            total_latency: 1.4649275719174653
            total_tokens: 393
            total_tokens_per_sec: 268.27264878740493
    ChatCompletionStreamResponse:
      title: Chat Completion Stream Response
      type: object
      description: streamed chunk of a chat completion response returned by the model
      additionalProperties: true
      properties:
        choices:
          title: Choices
          type: array
          description: A list of chat completion choices.
          items:
            $ref: '#/components/schemas/ChatCompletionChunkChoice'
          minItems: 0
          nullable: true
        created:
          title: Created
          type: number
          description: >-
            The Unix timestamp (in seconds) of when the chat completion was
            created.
        id:
          title: Id
          type: string
          description: A unique identifier for the chat completion.
        model:
          title: Model
          description: The model used for the chat completion.
          type: string
        object:
          title: Object
          type: string
          description: The object type, always `chat.completion.chunk`.
          enum:
            - chat.completion.chunk
          const: chat.completion.chunk
        system_fingerprint:
          title: System fingerprint
          type: string
          description: Backend configuration that the model runs with.
        usage:
          $ref: '#/components/schemas/Usage'
      required:
        - choices
        - created
        - id
        - model
        - object
        - system_fingerprint
      examples:
        - choices:
            - delta:
                role: assistant
                content: ''
              index: 0
              finish_reason: null
              logprobs: null
          created: 1737642515.6076705
          id: 15fcaba4-1c4a-48fc-bc6e-05b55ddfb30b
          model: MiniMax-M2.7
          object: chat.completion.chunk
          system_fingerprint: fastcoe
        - choices:
            - delta:
                role: assistant
                content: in
              index: 0
              finish_reason: null
              logprobs: null
          created: 1737642515.6076705
          id: 15fcaba4-1c4a-48fc-bc6e-05b55ddfb30b
          model: MiniMax-M2.7
          object: chat.completion.chunk
          system_fingerprint: fastcoe
        - choices:
            - delta:
                content: ''
              index: 0
              finish_reason: length
              logprobs: null
          created: 1737642515.6076705
          id: 15fcaba4-1c4a-48fc-bc6e-05b55ddfb30b
          model: MiniMax-M2.7
          object: chat.completion.chunk
          system_fingerprint: fastcoe
        - choices: []
          created: 1737642515.6076705
          id: 15fcaba4-1c4a-48fc-bc6e-05b55ddfb30b
          model: MiniMax-M2.7
          object: chat.completion.chunk
          system_fingerprint: fastcoe
          usage:
            acceptance_rate: 3
            completion_tokens: 100
            completion_tokens_after_first_per_sec: 262.2771255106759
            completion_tokens_after_first_per_sec_first_ten: 266.98193514986144
            completion_tokens_after_first_per_sec_graph: 266.98193514986144
            completion_tokens_per_sec: 217.87260449707574
            end_time: 1737642515.9077535
            is_last_response: true
            prompt_tokens: 43
            prompt_tokens_details:
              cached_tokens: 0
            start_time: 1737642515.4458635
            time_to_first_token: 0.0844266414642334
            total_latency: 0.4589838186899821
            total_tokens: 143
            total_tokens_per_sec: 311.55782443081836
    ModelOutputError:
      title: ModelOutputError
      type: object
      description: error in model output generation
      properties:
        error:
          type: object
          properties:
            code:
              title: code
              type: string
              description: error code
              nullable: true
            message:
              title: message
              type: string
              description: error message
            model_output:
              title: model_output
              type: string
              description: raw output with errors generated by the model
              x-stainless-naming:
                python:
                  property_name: raw_output
            param:
              title: param
              type: string
              description: error params
              nullable: true
            type:
              title: type
              type: string
              description: error type
      required:
        - error
    GeneralError:
      title: GeneralError
      type: object
      description: other kind of errors
      properties:
        error:
          type: object
          properties:
            code:
              title: code
              type: string
              description: error code
              nullable: true
            message:
              title: message
              type: string
              description: error message
            param:
              title: param
              type: string
              description: error params
              nullable: true
            type:
              title: type
              type: string
              description: error type
      required:
        - error
    SimpleError:
      title: SimpleError
      type: object
      description: other kind of simple schema errors
      properties:
        error:
          title: error
          type: string
          description: error detail.
          nullable: true
      required:
        - error
    SystemMessage:
      title: System Message
      type: object
      additionalProperties: true
      properties:
        role:
          title: Role
          type: string
          description: The role of the messages author, in this case `system`.
          enum:
            - system
          const: system
        content:
          title: Content
          anyOf:
            - type: string
            - title: Text Content Part Array
              type: array
              items:
                $ref: '#/components/schemas/TextContent'
          description: The contents of the system message.
          nullable: true
      required:
        - role
        - content
    UserMessage:
      title: User Message
      type: object
      additionalProperties: true
      properties:
        role:
          title: Role
          type: string
          description: The role of the messages author, in this case `user`.
          enum:
            - user
          const: user
        content:
          title: Content
          description: The contents of the user message.
          anyOf:
            - type: string
            - title: Multicontent Part Array
              type: array
              items:
                anyOf:
                  - $ref: '#/components/schemas/TextContent'
                  - $ref: '#/components/schemas/ImageContent'
                  - $ref: '#/components/schemas/AudioContent'
          nullable: true
      required:
        - role
        - content
    AssistantMessage:
      title: Assistant Message
      type: object
      additionalProperties: true
      properties:
        role:
          title: Role
          type: string
          description: The role of the messages author, in this case `assistant`.
          enum:
            - assistant
          const: assistant
        content:
          title: Content
          anyOf:
            - type: string
            - title: Text Content Part Array
              type: array
              items:
                $ref: '#/components/schemas/TextContent'
          description: The contents of the assistant message.
          nullable: true
        reasoning:
          title: Reasoning
          type: string
          description: >-
            Chain-of-thought reasoning output from reasoning-capable models
            (e.g., gpt-oss-120b, MiniMax-M2.7). **Note:** The
            `reasoning_details` array and
            `usage.completion_tokens_details.reasoning_tokens` fields from the
            OpenAI Harmony format are not currently supported. Only the
            `reasoning` string is returned.
          nullable: true
        channel:
          title: Channel
          type: string
          description: >-
            Internal channel identifier used during streaming for reasoning
            models. May contain values like `analysis` (chain-of-thought) or
            `final` (output).
          nullable: true
        tool_calls:
          title: Tool Calls
          type: array
          items:
            $ref: '#/components/schemas/AssistantToolCall'
          description: The tool calls generated by the model.
          nullable: true
      required:
        - role
        - content
    ToolMessage:
      title: Tool Message
      type: object
      additionalProperties: true
      properties:
        role:
          title: Role
          type: string
          description: The role of the messages author, in this case `tool`.
          enum:
            - tool
          const: tool
        content:
          title: Content
          description: The contents of the tool message.
          anyOf:
            - type: string
            - title: Text Content Part Array
              type: array
              items:
                $ref: '#/components/schemas/TextContent'
      required:
        - content
        - role
    ResponseFormatText:
      title: ResponseFormatText
      type: object
      description: Specifies that the model should produce output as plain text.
      additionalProperties: true
      properties:
        type:
          const: text
          enum:
            - text
          title: Type
          type: string
      required:
        - type
    ResponseFormatJSONObject:
      title: ResponseFormatJSONObject
      type: object
      description: Specifies that the model should produce output as a raw JSON object.
      additionalProperties: true
      properties:
        type:
          const: json_object
          enum:
            - json_object
          title: Type
          type: string
      required:
        - type
      example:
        type: json_object
    ResponseFormatJSONSchema:
      title: ResponseFormatJSONSchema
      type: object
      additionalProperties: true
      description: >-
        Specifies that the model should produce output conforming to a given
        JSON schema.
      properties:
        json_schema:
          $ref: '#/components/schemas/JSONSchema'
        type:
          const: json_schema
          enum:
            - json_schema
          title: Type
          type: string
      required:
        - json_schema
        - type
      example:
        type: json_schema
        json_schema:
          name: User
          description: JSON schema for a simple user object
          strict: false
          schema:
            type: object
            properties:
              id:
                type: string
                description: Unique identifier for the user
              name:
                type: string
                description: Full name of the user
            required:
              - id
              - name
    ToolChoiceObject:
      title: ToolChoiceObject
      type: object
      additionalProperties: true
      properties:
        function:
          title: Function
          type: object
          description: >-
            Specifies a tool the model should use. Use it to force the model to
            call that specific tool.
          additionalProperties: true
          properties:
            name:
              title: Name
              type: string
              description: the name of the tool expected to be used by the model
          required:
            - name
        type:
          type: string
          description: The type of the tool. only `function` is supported.
          enum:
            - function
      required:
        - function
        - type
    Tool:
      title: Tool
      type: object
      additionalProperties: true
      properties:
        function:
          $ref: '#/components/schemas/FunctionObject'
        type:
          title: Type
          type: string
          description: The type of the tool. Currently, only `function` is supported.
      required:
        - type
        - function
    EnableThinking:
      title: Enable Thinking
      type: boolean
      default: false
      description: >-
        Enables the model's internal reasoning or "thinking" mode, if supported
        by the chat template.  On Infercom this applies to `gemma-4-31B-it`,
        where thinking is off by default - set this to `true` to turn it on, or
        `false` for a direct answer.  Models that reason by default, such as
        `MiniMax-M2.7` and the DeepSeek models, do not need this flag.
      example: true
    ChatCompletionChoice:
      title: Chat Completion Choice
      type: object
      additionalProperties: true
      properties:
        message:
          $ref: '#/components/schemas/CompletionResponseMessage'
        finish_reason:
          title: Finish Reason
          type: string
          description: >-
            The reason the model stopped generating tokens.  Will be `stop` if
            the model hit a natural stop point or a provided stop sequence, 
            `length` if the maximum number of tokens specified in the request
            was reached,  `tool_calls` if the model called a tool.
          enum:
            - stop
            - length
            - tool_calls
        index:
          title: Index
          type: integer
          description: The index of the choice in the list of choices
        logprobs:
          title: Logprobs
          anyOf:
            - $ref: '#/components/schemas/LogProbs'
          description: currently not supported, always null will be returned
          nullable: true
      required:
        - finish_reason
        - index
        - message
    Usage:
      title: Usage
      type: object
      description: >-
        Usage metrics for the completion, embeddings,transcription or
        translation request
      additionalProperties: true
      properties:
        acceptance_rate:
          title: Acceptance Rate
          type: number
          description: acceptance rate
        completion_tokens:
          title: Completion Tokens
          type: integer
          description: number of tokens generated in completion
        completion_tokens_after_first_per_sec:
          title: Completion Tokens After First Per Sec
          type: number
          description: completion tokens per second after first token generation
        completion_tokens_after_first_per_sec_first_ten:
          title: Completion Tokens After First Per Sec First Ten
          type: number
          description: completion tokens per second after first token generation first ten
        completion_tokens_after_first_per_sec_graph:
          title: Completion Tokens After First Per Sec Graph
          type: number
          description: completion tokens per second after first token generation
        completion_tokens_per_sec:
          title: Completion Tokens Per Sec
          type: number
          description: completion tokens per second
        end_time:
          title: End Time
          type: number
          description: The Unix timestamp (in seconds) of when the generation finished.
        is_last_response:
          title: Is Last Response
          type: boolean
          description: >-
            whether or not is last response, always true for non streaming
            response
          const: true
        prompt_tokens_details:
          title: Prompt tokens details
          type: object
          description: Extra tokens details
          additionalProperties: true
          properties:
            cached_tokens:
              title: Cached tokens
              description: amount of cached tokens
              type: integer
        prompt_tokens:
          title: Prompt Tokens
          type: integer
          description: number of tokens used in the prompt sent
        start_time:
          title: Start Time
          type: number
          description: The Unix timestamp (in seconds) of when the generation started.
        time_to_first_token:
          title: Time To First Token
          type: number
          description: also TTF, time (in seconds) taken to generate the first token
        time_to_first_token_graph:
          title: Time To First Token Graph
          type: number
          description: time to first token measurement for graphing/monitoring purposes
        stop_reason:
          title: Stop Reason
          type: string
          description: >-
            The reason generation stopped. Values include `stop` (natural end or
            stop sequence), `length` (max_tokens reached), `tool_calls` (model
            invoked a tool).
          nullable: true
        total_latency:
          title: Total Latency
          type: number
          description: total time (in seconds) taken to generate the full generation
        total_tokens:
          title: Total Tokens
          type: integer
          description: prompt tokens + completion tokens
        total_tokens_per_sec:
          title: Total Tokens Per Sec
          type: number
          description: tokens per second including prompt and completion
      nullable: true
      examples:
        - acceptance_rate: 4.058139324188232
          completion_tokens: 350
          completion_tokens_after_first_per_sec: 248.09314856382406
          completion_tokens_after_first_per_sec_first_ten: 249.67922929952655
          completion_tokens_after_first_per_sec_graph: 452.5030493415834
          completion_tokens_per_sec: 238.91966176995348
          end_time: 1737583289.7345645
          is_last_response: true
          prompt_tokens_details:
            cached_tokens: 0
          prompt_tokens: 43
          start_time: 1737583288.264706
          time_to_first_token: 0.06312894821166992
          total_latency: 1.4649275719174653
          total_tokens: 393
          total_tokens_per_sec: 268.27264878740493
        - prompt_tokens: 43
          total_tokens: 393
    ChatCompletionChunkChoice:
      title: Chat Completion Chunk Choice
      type: object
      additionalProperties: true
      properties:
        delta:
          $ref: '#/components/schemas/CompletionResponseDelta'
        finish_reason:
          title: Finish Reason
          type: string
          description: >-
            The reason the model stopped generating tokens.  Will be `stop` if
            the model hit a natural stop point or a provided stop sequence, 
            `length` if the maximum number of tokens specified in the request
            was reached,  `tool_calls` if the model called a tool.
          enum:
            - stop
            - length
            - tool_calls
          nullable: true
        index:
          title: Index
          type: integer
          description: The index of the choice in the list of choices
        logprobs:
          title: Logprobs
          anyOf:
            - $ref: '#/components/schemas/LogProbs'
          description: currently not supported, always null will be returned
          nullable: true
      required:
        - index
        - delta
    TextContent:
      title: Text Content
      type: object
      additionalProperties: true
      properties:
        type:
          title: Type
          type: string
          description: type of content to send. in this case `text`.
          enum:
            - text
          const: text
        text:
          title: Text
          type: string
          description: string content of the message
      required:
        - type
        - text
    ImageContent:
      title: Image Content
      type: object
      additionalProperties: true
      properties:
        type:
          title: Type
          type: string
          description: type of content to send. in this case `image_url`.
          enum:
            - image_url
          const: image_url
        image_url:
          title: Image Url
          type: object
          properties:
            url:
              title: Url
              type: string
              description: >-
                Either a URL of the image or the base64 encoded image data. 
                currently only base64 encoded image supported
      required:
        - type
        - image_url
    AudioContent:
      title: Audio Content
      type: object
      additionalProperties: true
      properties:
        type:
          title: Type
          type: string
          description: type of content to send. in this case `audio_content`.
          enum:
            - audio_content
          const: audio_content
        audio_content:
          title: Audio Content
          type: object
          properties:
            content:
              title: Content
              type: string
              description: the base64 encoded audio data.
      required:
        - type
        - audio_content
    AssistantToolCall:
      title: AssistantToolCall
      type: object
      additionalProperties: true
      properties:
        function:
          $ref: '#/components/schemas/AssistantToolCallFunction'
        id:
          title: Id
          type: string
          description: ID of the tool call.
        type:
          title: Type
          type: string
          description: type of the tool cal. only `function` is supported.
          enum:
            - function
          const: function
        index:
          title: index
          description: index of tool call chunk only used when using streaming
          type: integer
          nullable: true
      required:
        - id
        - type
        - function
    JSONSchema:
      title: JSONSchema
      type: object
      additionalProperties: true
      description: >-
        A JSON Schema definition the model's structured output. Follows standard
        JSON Schema syntax.
      properties:
        description:
          type: string
          title: Description
          description: description the json schema
          nullable: true
        name:
          title: Name
          type: string
          description: name of the object schema
        schema:
          type: object
          title: Schema
          description: Actual json schema object
          nullable: true
        strict:
          type: boolean
          title: Strict
          description: whether or not to do an strict validation of the schema
          nullable: true
          default: false
      required:
        - name
    FunctionObject:
      title: Function Object
      additionalProperties: true
      type: object
      properties:
        name:
          title: Name
          type: string
          description: >-
            The name of the function to be called. Must be a-z, A-Z, 0-9, or
            contain underscores and dashes.
        description:
          title: Description
          type: string
          description: >-
            A description of what the function does, used by the model to choose
            when and how to call the function.
          nullable: true
        parameters:
          $ref: '#/components/schemas/FunctionParameters'
      required:
        - name
    CompletionResponseMessage:
      title: Completion Response Message
      type: object
      Description: completion response message object
      additionalProperties: true
      properties:
        role:
          title: Role
          type: string
          description: The role of the messages author
          enum:
            - assistant
            - user
            - system
            - tool
        content:
          title: Content
          type: string
          description: The contents of the assistant message.
          nullable: true
        tool_calls:
          title: Tool Calls
          type: array
          items:
            $ref: '#/components/schemas/AssistantToolCall'
          description: The tool calls generated by the model.
          nullable: true
      required:
        - role
        - content
    LogProbs:
      title: Completion Log Probs
      type: object
      description: Completion Log Probs object
      additionalProperties: true
      properties:
        content:
          $ref: '#/components/schemas/LogProbsContent'
      required:
        - content
    CompletionResponseDelta:
      title: Completion Response Delta
      type: object
      description: completion response delta chunk generated by streamed model responses.
      additionalProperties: true
      properties:
        role:
          title: Role
          type: string
          description: The role of the messages author
          enum:
            - assistant
            - user
            - system
            - tool
          nullable: true
        content:
          title: Content
          type: string
          description: The contents of the assistant message.
          nullable: true
        reasoning:
          title: Reasoning
          type: string
          description: >-
            Chain-of-thought reasoning output from reasoning-capable models
            (e.g., gpt-oss-120b, MiniMax-M2.7). **Note:** The
            `reasoning_details` array and
            `usage.completion_tokens_details.reasoning_tokens` fields from the
            OpenAI Harmony format are not currently supported. Only the
            `reasoning` string is returned.
          nullable: true
        channel:
          title: Channel
          type: string
          description: >-
            Internal channel identifier used during streaming for reasoning
            models. May contain values like `analysis` (chain-of-thought) or
            `final` (output).
          nullable: true
        tool_calls:
          title: Tool Calls
          type: array
          items:
            $ref: '#/components/schemas/AssistantToolCall'
          description: The tool calls generated by the model.
          nullable: true
    AssistantToolCallFunction:
      title: AssistantToolCallFunction
      type: object
      description: The tool that the model called.
      additionalProperties: true
      properties:
        name:
          title: Name
          type: string
          description: The name of the function to call.
        arguments:
          title: Arguments
          type: string
          description: >-
            The arguments to call the function with, as generated by the model
            in JSON format. Note that the model does not always generate valid
            JSON, and may hallucinate parameters not defined by your function
            schema. Validate the arguments in your code before calling your
            function.
      required:
        - name
        - arguments
    FunctionParameters:
      title: Function Parameters
      type: object
      additionalProperties: true
      description: >-
        The parameters the functions accepts, described as a JSON Schema object.
        see the [JSON Schema
        reference](https://json-schema.org/understanding-json-schema/) for
        documentation about the format.  Omitting `parameters` defines a
        function with an empty parameter list.
    LogProbsContent:
      title: Log Probs Content
      additionalProperties: true
      properties:
        bytes:
          title: Bytes
          anyOf:
            - items:
                type: integer
              type: array
          nullable: true
        logprob:
          title: Logprob
          type: number
        token:
          title: Token
          type: string
        top_logprobs:
          $ref: '#/components/schemas/TopLogProbs'
      required:
        - token
        - logprob
        - top_logprobs
    TopLogProbs:
      title: TopLogProbs
      type: object
      additionalProperties: true
      properties:
        bytes:
          title: Bytes
          anyOf:
            - items:
                type: integer
              type: array
            - type: 'null'
        logprob:
          title: Logprob
          type: number
        token:
          title: Token
          type: string
      required:
        - token
        - logprob
  headers:
    InferenceId:
      description: >-
        Unique identifier for this inference request, useful for debugging and
        support.
      schema:
        type: string
        example: a0b08d8a-1893-45d6-a0f4-7ad6fdeb5443
    RateLimitRequests:
      description: Maximum requests allowed per minute.
      schema:
        type: integer
        example: 250
    RateLimitRequestsDay:
      description: Maximum requests allowed per day.
      schema:
        type: integer
        example: 50000
    RateLimitRemainingRequests:
      description: Remaining requests in the current minute window.
      schema:
        type: integer
        example: 247
    RateLimitRemainingRequestsDay:
      description: Remaining requests in the current day.
      schema:
        type: integer
        example: 49988
    RateLimitResetRequests:
      description: Unix timestamp when the per-minute limit resets.
      schema:
        type: integer
        example: 1776937132
    RateLimitResetRequestsDay:
      description: Unix timestamp when the daily limit resets.
      schema:
        type: integer
        example: 1777023472
  securitySchemes:
    api_key:
      type: http
      description: Infercom API Key
      scheme: bearer
      bearerFormat: apiKey

````