openapi: 3.1.0
info:
  title: Ollama API
  version: 0.1.0
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  description: |
    OpenAPI specification for the Ollama HTTP API
servers:
  - url: http://localhost:11434
    description: Ollama
security: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
  parameters:
    DigestParam:
      name: digest
      in: path
      required: true
      description: SHA256 digest identifier, prefixed with `sha256:`
      schema:
        type: string
  schemas:
    ModelOptions:
      type: object
      description: Runtime options that control text generation
      properties:
        # Sampling Options
        seed:
          type: integer
          description: Random seed used for reproducible outputs
        temperature:
          type: number
          format: float
          description: Controls randomness in generation (higher = more random)
        top_k:
          type: integer
          description: Limits next token selection to the K most likely
        top_p:
          type: number
          format: float
          description: Cumulative probability threshold for nucleus sampling
        min_p:
          type: number
          format: float
          description: Minimum probability threshold for token selection
        stop:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          description: Stop sequences that will halt generation

        # Runtime Options
        num_ctx:
          type: integer
          description: Context length size (number of tokens)
        num_predict:
          type: integer
          description: Maximum number of tokens to generate
      additionalProperties: true
    GenerateRequest:
      type: object
      required: [model]
      properties:
        model:
          type: string
          description: Model name
        prompt:
          type: string
          description: Text for the model to generate a response from
        suffix:
          type: string
          description: Used for fill-in-the-middle models, text that appears after the user prompt and before the model response
        images:
          type: array
          items:
            type: string
            description: Base64-encoded images for models that support image input
        format:
          description: Structured output format for the model to generate a response from. Supports either the string `"json"` or a JSON schema object.
          oneOf:
            - type: string
            - type: object
        system:
          description: System prompt for the model to generate a response from
          type: string
        stream:
          description: When true, returns a stream of partial responses
          type: boolean
          default: true
        think:
          $ref: "#/components/schemas/ThinkValue"
        raw:
          type: boolean
          description: When true, returns the raw response from the model without any prompt templating
        keep_alive:
          oneOf:
            - type: string
            - type: number
          description: Model keep-alive duration (for example `5m` or `0` to unload immediately)
        options:
          $ref: "#/components/schemas/ModelOptions"
        logprobs:
          type: boolean
          description: Whether to return log probabilities of the output tokens
        top_logprobs:
          type: integer
          description: Number of most likely tokens to return at each token position when logprobs are enabled
    GenerateResponse:
      type: object
      properties:
        model:
          type: string
          description: Model name
        created_at:
          type: string
          description: ISO 8601 timestamp of response creation
        response:
          type: string
          description: The model's generated text response
        thinking:
          type: string
          description: The model's generated thinking output
        done:
          type: boolean
          description: Indicates whether generation has finished
        done_reason:
          type: string
          description: Reason the generation stopped
        total_duration:
          type: integer
          description: Time spent generating the response in nanoseconds
        load_duration:
          type: integer
          description: Time spent loading the model in nanoseconds
        prompt_eval_count:
          type: integer
          description: Number of input tokens in the prompt
        prompt_eval_cached_count:
          type: integer
          description: Number of prompt tokens read from the cache
        prompt_eval_duration:
          type: integer
          description: Time spent evaluating uncached prompt tokens in nanoseconds
        eval_count:
          type: integer
          description: Number of output tokens generated in the response
        eval_duration:
          type: integer
          description: Time spent generating tokens in nanoseconds
        logprobs:
          type: array
          items:
            $ref: "#/components/schemas/Logprob"
          description: Log probability information for the generated tokens when logprobs are enabled
    GenerateStreamEvent:
      type: object
      properties:
        model:
          type: string
          description: Model name
        created_at:
          type: string
          description: ISO 8601 timestamp of response creation
        response:
          type: string
          description: The model's generated text response for this chunk
        thinking:
          type: string
          description: The model's generated thinking output for this chunk
        done:
          type: boolean
          description: Indicates whether the stream has finished
        done_reason:
          type: string
          description: Reason streaming finished
        total_duration:
          type: integer
          description: Time spent generating the response in nanoseconds
        load_duration:
          type: integer
          description: Time spent loading the model in nanoseconds
        prompt_eval_count:
          type: integer
          description: Number of input tokens in the prompt
        prompt_eval_cached_count:
          type: integer
          description: Number of prompt tokens read from the cache
        prompt_eval_duration:
          type: integer
          description: Time spent evaluating uncached prompt tokens in nanoseconds
        eval_count:
          type: integer
          description: Number of output tokens generated in the response
        eval_duration:
          type: integer
          description: Time spent generating tokens in nanoseconds
    ChatMessage:
      type: object
      required: [role, content]
      properties:
        role:
          type: string
          enum: [system, user, assistant, tool]
          description: Author of the message.
        content:
          type: string
          description: Message text content
        images:
          type: array
          items:
            type: string
            description: Base64-encoded image content
          description: Optional list of inline images for multimodal models
        tool_calls:
          type: array
          items:
            $ref: "#/components/schemas/ToolCall"
          description: Tool call requests produced by the model
    ToolCall:
      type: object
      properties:
        function:
          type: object
          required: [name]
          properties:
            name:
              type: string
              description: Name of the function to call
            description:
              type: string
              description: What the function does
            arguments:
              type: object
              description: JSON object of arguments to pass to the function
    ToolDefinition:
      type: object
      required: [type, function]
      properties:
        type:
          type: string
          enum: [function]
          description: Type of tool (always `function`)
        function:
          type: object
          required: [name, parameters]
          properties:
            name:
              type: string
              description: Function name exposed to the model
            description:
              type: string
              description: Human-readable description of the function
            parameters:
              type: object
              description: JSON Schema for the function parameters
    ChatRequest:
      type: object
      required: [model, messages]
      properties:
        model:
          type: string
          description: Model name
        messages:
          type: array
          description: Chat history as an array of message objects (each with a role and content)
          items:
            $ref: "#/components/schemas/ChatMessage"
        tools:
          type: array
          description: Optional list of function tools the model may call during the chat
          items:
            $ref: "#/components/schemas/ToolDefinition"
        format:
          oneOf:
            - type: string
              enum: [json]
            - type: object
          description: Format to return a response in. Can be `json` or a JSON schema
        options:
          $ref: "#/components/schemas/ModelOptions"
        stream:
          type: boolean
          default: true
        think:
          $ref: "#/components/schemas/ThinkValue"
        keep_alive:
          oneOf:
            - type: string
            - type: number
          description: Model keep-alive duration (for example `5m` or `0` to unload immediately)
        logprobs:
          type: boolean
          description: Whether to return log probabilities of the output tokens
        top_logprobs:
          type: integer
          description: Number of most likely tokens to return at each token position when logprobs are enabled
    ChatResponse:
      type: object
      properties:
        model:
          type: string
          description: Model name used to generate this message
        created_at:
          type: string
          format: date-time
          description: Timestamp of response creation (ISO 8601)
        message:
          type: object
          properties:
            role:
              type: string
              enum: [assistant]
              description: Always `assistant` for model responses
            content:
              type: string
              description: Assistant message text
            thinking:
              type: string
              description: Optional deliberate thinking trace when `think` is enabled
            tool_calls:
              type: array
              items:
                $ref: "#/components/schemas/ToolCall"
              description: Tool calls requested by the assistant
            images:
              type: array
              items:
                type: string
              description: Optional base64-encoded images in the response
        done:
          type: boolean
          description: Indicates whether the chat response has finished
        done_reason:
          type: string
          description: Reason the response finished
        total_duration:
          type: integer
          description: Total time spent generating in nanoseconds
        load_duration:
          type: integer
          description: Time spent loading the model in nanoseconds
        prompt_eval_count:
          type: integer
          description: Number of tokens in the prompt
        prompt_eval_cached_count:
          type: integer
          description: Number of prompt tokens read from the cache
        prompt_eval_duration:
          type: integer
          description: Time spent evaluating uncached prompt tokens in nanoseconds
        eval_count:
          type: integer
          description: Number of tokens generated in the response
        eval_duration:
          type: integer
          description: Time spent generating tokens in nanoseconds
        logprobs:
          type: array
          items:
            $ref: "#/components/schemas/Logprob"
          description: Log probability information for the generated tokens when logprobs are enabled
    ChatStreamEvent:
      type: object
      properties:
        model:
          type: string
          description: Model name used for this stream event
        created_at:
          type: string
          format: date-time
          description: When this chunk was created (ISO 8601)
        message:
          type: object
          properties:
            role:
              type: string
              description: Role of the message for this chunk
            content:
              type: string
              description: Partial assistant message text
            thinking:
              type: string
              description: Partial thinking text when `think` is enabled
            tool_calls:
              type: array
              items:
                $ref: "#/components/schemas/ToolCall"
              description: Partial tool calls, if any
            images:
              type: array
              items:
                type: string
              description: Partial base64-encoded images, when present
        done:
          type: boolean
          description: True for the final event in the stream
    ThinkValue:
      description: Controls a model's thinking output. Use `/api/show` to discover the supported values and default for the selected model. `true` requests thinking, `false` requests no thinking output, and `null` uses the model default. String values are model-defined; supported names must match `/api/show` exactly. Numbers are not supported.
      oneOf:
        - type: boolean
        - type: string
        - type: "null"
    Thinking:
      type: object
      required: [values, default]
      description: Thinking controls advertised by a model. Models without thinking metadata omit this field.
      properties:
        values:
          type: array
          description: Values explicitly supported by the model's `think` request field. Booleans represent on/off controls and strings represent model-defined levels. An array containing only `false` identifies a model without thinking support.
          items:
            oneOf:
              - type: boolean
              - type: string
        default:
          description: Value used when `think` is not set. For models that use this metadata for named thinking levels, unsupported names resolve to this default.
          oneOf:
            - type: boolean
            - type: string
    StatusEvent:
      type: object
      properties:
        status:
          type: string
          description: Human-readable status message
        digest:
          type: string
          description: Content digest associated with the status, if applicable
        total:
          type: integer
          description: Total number of bytes expected for the operation
        completed:
          type: integer
          description: Number of bytes transferred so far
    StatusResponse:
      type: object
      properties:
        status:
          type: string
          description: Current status message
    EmbedRequest:
      type: object
      required: [model, input]
      properties:
        model:
          type: string
          description: Model name
        input:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          description: Text or array of texts to generate embeddings for
        truncate:
          type: boolean
          default: true
          description: If true, truncate inputs that exceed the context window. If false, returns an error.
        dimensions:
          type: integer
          description: Number of dimensions to generate embeddings for
        keep_alive:
          type: string
          description: Model keep-alive duration
        options:
          $ref: "#/components/schemas/ModelOptions"
    EmbedResponse:
      type: object
      properties:
        model:
          type: string
          description: Model that produced the embeddings
        embeddings:
          type: array
          items:
            type: array
            items:
              type: number
          description: Array of vector embeddings
        total_duration:
          type: integer
          description: Total time spent generating in nanoseconds
        load_duration:
          type: integer
          description: Load time in nanoseconds
        prompt_eval_count:
          type: integer
          description: Number of input tokens processed to generate embeddings
    CreateRequest:
      type: object
      required: [model]
      properties:
        model:
          type: string
          description: Name for the model to create
        from:
          type: string
          description: Existing model to create from
        template:
          type: string
          description: Prompt template to use for the model
        renderer:
          type: string
          description: Name of the renderer for the model
        parser:
          type: string
          description: Name of the parser for the model
        files:
          type: object
          additionalProperties:
            type: string
          description: Source file names mapped to their SHA-256 digests. Split GGUF models must include each shard under its original split filename.
        draft_files:
          type: object
          additionalProperties:
            type: string
          description: Draft source file names mapped to their SHA-256 digests
        license:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          description: License string or list of licenses for the model
        system:
          type: string
          description: System prompt to embed in the model
        parameters:
          type: object
          description: Key-value parameters for the model
        messages:
          description: Message history to use for the model
          type: array
          items:
            $ref: "#/components/schemas/ChatMessage"
        quantize:
          type: string
          description: Quantization level to apply during import (e.g. `nvfp4`)
        draft_quantize:
          type: string
          description: Quantization level to apply to draft weights during import
        requires:
          type: string
          description: Minimum Ollama version required by the model
        capabilities:
          type: array
          items:
            type: string
          description: Capabilities to add without removing inherited or inferred capabilities (e.g. `decision` for compatible decision models)
        stream:
          type: boolean
          default: true
          description: Stream status updates
    CopyRequest:
      type: object
      required: [source, destination]
      properties:
        source:
          type: string
          description: Existing model name to copy from
        destination:
          type: string
          description: New model name to create
    DeleteRequest:
      type: object
      required: [model]
      properties:
        model:
          type: string
          description: Model name to delete
    PullRequest:
      type: object
      required: [model]
      properties:
        model:
          type: string
          description: Name of the model to download
        insecure:
          type: boolean
          description: Allow downloading over insecure connections
        stream:
          type: boolean
          default: true
          description: Stream progress updates
    PushRequest:
      type: object
      required: [model]
      properties:
        model:
          type: string
          description: Name of the model to publish
        insecure:
          type: boolean
          description: Allow publishing over insecure connections
        stream:
          type: boolean
          default: true
          description: Stream progress updates
    ShowRequest:
      type: object
      required: [model]
      properties:
        model:
          type: string
          description: Model name to show
        verbose:
          type: boolean
          description: If true, includes large verbose fields in the response.
    ShowResponse:
      type: object
      properties:
        thinking:
          $ref: "#/components/schemas/Thinking"
        parameters:
          type: string
          description: Model parameter settings serialized as text
        license:
          type: string
          description: The license of the model
        modified_at:
          type: string
          description: Last modified timestamp in ISO 8601 format
        details:
          type: object
          description: High-level model details
        template:
          type: string
          description: The template used by the model to render prompts
        renderer:
          type: string
          description: The effective chat renderer of the model (aliases resolved), when one is set
        parser:
          type: string
          description: The output parser configured on the model, when one is set
        template_source:
          type: string
          description: Where the chat prompt actually comes from; one of `renderer_parser`, `renderer`, `parser` (a Go renderer runs and any packaged template is inert), `harmony`, `go_template`, `gguf_chat_template` (the runner renders the GGUF's embedded jinja), or `none`
        capabilities:
          type: array
          items:
            type: string
          description: List of supported features
        model_info:
          type: object
          description: Additional model metadata
    ModelSummary:
      type: object
      description: Summary information for a locally available model
      properties:
        name:
          type: string
          description: Model name
        model:
          type: string
          description: Model name
        remote_model:
          type: string
          description: Name of the upstream model, if the model is remote
        remote_host:
          type: string
          description: URL of the upstream Ollama host, if the model is remote
        modified_at:
          type: string
          description: Last modified timestamp in ISO 8601 format
        size:
          type: integer
          description: Total size of the model on disk in bytes
        digest:
          type: string
          description: SHA256 digest identifier of the model contents
        details:
          type: object
          description: Additional information about the model's format and family
          properties:
            format:
              type: string
              description: Model file format (for example `gguf`)
            family:
              type: string
              description: Primary model family (for example `llama`)
            families:
              type: array
              items:
                type: string
              description: All families the model belongs to, when applicable
            parameter_size:
              type: string
              description: Approximate parameter count label (for example `7B`, `13B`)
            quantization_level:
              type: string
              description: Quantization level used (for example `Q4_0`)
    ListResponse:
      type: object
      properties:
        models:
          type: array
          items:
            $ref: "#/components/schemas/ModelSummary"
    Ps:
      type: object
      properties:
        name:
          type: string
          description: Name of the running model
        model:
          type: string
          description: Name of the running model
        size:
          type: integer
          description: Size of the model in bytes
        digest:
          type: string
          description: SHA256 digest of the model
        details:
          type: object
          description: Model details such as format and family
        expires_at:
          type: string
          description: Time when the model will be unloaded
        size_vram:
          type: integer
          description: VRAM usage in bytes
        context_length:
          type: integer
          description: Context length for the running model
    PsResponse:
      type: object
      properties:
        models:
          type: array
          items:
            $ref: "#/components/schemas/Ps"
          description: Currently running models
    WebSearchRequest:
      type: object
      required: [query]
      properties:
        query:
          type: string
          description: Search query string
        max_results:
          type: integer
          minimum: 1
          maximum: 10
          default: 5
          description: Maximum number of results to return
    WebSearchResult:
      type: object
      properties:
        title:
          type: string
          description: Page title of the result
        url:
          type: string
          format: uri
          description: Resolved URL for the result
        content:
          type: string
          description: Extracted text content snippet
    WebSearchResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: "#/components/schemas/WebSearchResult"
          description: Array of matching search results
    WebFetchRequest:
      type: object
      required: [url]
      properties:
        url:
          type: string
          format: uri
          description: The URL to fetch
    WebFetchResponse:
      type: object
      properties:
        title:
          type: string
          description: Title of the fetched page
        content:
          type: string
          description: Extracted page content
        links:
          type: array
          items:
            type: string
            format: uri
          description: Links found on the page
    VersionResponse:
      type: object
      properties:
        version:
          type: string
          description: Version of Ollama
    TokenLogprob:
      type: object
      description: Log probability information for a single token alternative
      properties:
        token:
          type: string
          description: The text representation of the token
        logprob:
          type: number
          description: The log probability of this token
        bytes:
          type: array
          items:
            type: integer
          description: The raw byte representation of the token
    Logprob:
      type: object
      description: Log probability information for a generated token
      properties:
        token:
          type: string
          description: The text representation of the token
        logprob:
          type: number
          description: The log probability of this token
        bytes:
          type: array
          items:
            type: integer
          description: The raw byte representation of the token
        top_logprobs:
          type: array
          items:
            $ref: "#/components/schemas/TokenLogprob"
          description: Most likely tokens and their log probabilities at this position
    SystemOneContent:
      description: A nonempty string, or an object or array serialized as JSON text. Not interpreted as chat messages or multimodal input.
      oneOf:
        - type: string
          pattern: '\S'
        - type: object
          additionalProperties: true
        - type: array
          items: {}
    SystemOneChoiceQuestion:
      title: Choice
      type: object
      required: [type, instructions, criteria]
      properties:
        type:
          type: string
          enum: [choice]
        instructions:
          $ref: "#/components/schemas/SystemOneContent"
        criteria:
          type: object
          description: Option keys mapped to descriptions, or null for a bare label. Keys must not be blank; ties follow the model's option order. The option limit depends on the model.
          minProperties: 2
          maxProperties: 255
          propertyNames:
            pattern: '\S'
          additionalProperties:
            type: [string, "null"]
    SystemOneNoulQuestion:
      title: Noul
      type: object
      required: [type, instructions]
      properties:
        type:
          type: string
          enum: [noul]
        instructions:
          $ref: "#/components/schemas/SystemOneContent"
        criteria:
          type: object
          description: Optional descriptions for the two outcomes. Omitted entries use model-specific defaults.
          properties:
            "false":
              type: string
            "true":
              type: string
          additionalProperties: false
    SystemOneScoreQuestion:
      title: Score
      type: object
      required: [type, instructions, criteria]
      properties:
        type:
          type: string
          enum: [score]
        instructions:
          $ref: "#/components/schemas/SystemOneContent"
        criteria:
          type: array
          description: Descriptions ordered from the lowest score (index 0) to the highest. Defines a scale from 0 to the number of criteria minus 1.
          minItems: 2
          maxItems: 10
          items:
            type: string
    SystemOneRequest:
      type: object
      required: [model, state, questions]
      properties:
        model:
          type: string
          pattern: '\S'
          description: Model trained for System One, such as nimble, or clef:cloud for Ollama's cloud.
        state:
          $ref: "#/components/schemas/SystemOneContent"
        images:
          type: array
          description: Base64-encoded images shared by all questions, in request order. Requires a model with vision, such as Clef. Models with audio input also accept WAV clips here. URLs and data URLs are not supported.
          items:
            type: string
            format: byte
        questions:
          type: object
          description: Named questions about the shared state. Answers are not passed to later questions. Cloud models accept names of up to 100 ASCII letters, digits, `_`, `.`, or `-`.
          minProperties: 1
          maxProperties: 64
          propertyNames:
            pattern: '\S'
          additionalProperties:
            oneOf:
              - $ref: "#/components/schemas/SystemOneChoiceQuestion"
              - $ref: "#/components/schemas/SystemOneNoulQuestion"
              - $ref: "#/components/schemas/SystemOneScoreQuestion"
        keep_alive:
          oneOf:
            - type: string
            - type: number
          description: How long to keep the model loaded after the request, as a duration string (such as 5m) or seconds. Zero unloads after the request; a negative value keeps it loaded. Defaults to the server's keep-alive setting (5m unless configured otherwise).
    SystemOneProbabilities:
      type: object
      description: Probabilities normalized over the supplied candidates, summing to 1 subject to floating-point precision.
      additionalProperties:
        type: number
        minimum: 0
        maximum: 1
    SystemOneConfidence:
      type: number
      minimum: 0
      maximum: 1
      description: Distribution concentration, calculated as 1 - H(p) / ln(N), where H(p) is entropy and N is the candidate count. Zero means uniform probabilities; values near 1 mean one candidate dominates. Not calibrated correctness.
    SystemOneChoiceAnswer:
      title: Choice
      type: object
      required: [type, choice, probabilities, confidence]
      properties:
        type:
          type: string
          enum: [choice]
        choice:
          type: string
          description: Option key with the highest probability. Ties follow the model's option order.
        probabilities:
          $ref: "#/components/schemas/SystemOneProbabilities"
        confidence:
          $ref: "#/components/schemas/SystemOneConfidence"
    SystemOneNoulAnswer:
      title: Noul
      type: object
      required: [type, noul]
      properties:
        type:
          type: string
          enum: [noul]
        noul:
          type: number
          minimum: 0
          maximum: 1
          description: Probability of true among the false and true candidates. This is a number, not a Boolean.
    SystemOneScoreAnswer:
      title: Score
      type: object
      required: [type, score, legend, probabilities, confidence]
      properties:
        type:
          type: string
          enum: [score]
        score:
          type: number
          minimum: 0
          maximum: 9
          description: Probability-weighted average of the zero-based criterion indices, from 0 to the number of criteria minus 1. Not rounded to a level or normalized to 0–1.
        legend:
          type: object
          description: Zero-based indices as string keys mapped to the criterion descriptions.
          additionalProperties:
            type: string
        probabilities:
          $ref: "#/components/schemas/SystemOneProbabilities"
          description: Probabilities keyed by zero-based criterion indices as strings.
        confidence:
          $ref: "#/components/schemas/SystemOneConfidence"
    SystemOneResponse:
      type: object
      required: [model, answers, usage]
      properties:
        model:
          type: string
          description: Model name from the request.
        answers:
          type: object
          description: Answers keyed by the question names in the request.
          additionalProperties:
            oneOf:
              - $ref: "#/components/schemas/SystemOneChoiceAnswer"
              - $ref: "#/components/schemas/SystemOneNoulAnswer"
              - $ref: "#/components/schemas/SystemOneScoreAnswer"
        usage:
          type: object
          required: [input_tokens, output_tokens]
          properties:
            input_tokens:
              type: integer
              minimum: 0
              description: Total evaluated input tokens, including image positions. Shared context is counted again when the model scores questions separately.
            output_tokens:
              type: integer
              minimum: 0
              description: Tokens generated internally for scoring, including prefix preparation and retries. May exceed the question count; not the length of the JSON response.
    UsageMetrics:
      type: object
      required: [request_count]
      properties:
        request_count:
          type: integer
          minimum: 0
          description: Number of recorded requests.
        usage_usd:
          type: number
          description: Total value of the requests in USD, including usage covered by your plan and usage paid from purchased credits.
        input_tokens:
          type: integer
          description: Recorded input tokens, including cached input tokens.
        cached_input_tokens:
          type: integer
          description: Recorded input tokens read from cache, already included in input_tokens.
        output_tokens:
          type: integer
          description: Recorded output tokens.
    UsageGroup:
      allOf:
        - $ref: "#/components/schemas/UsageMetrics"
        - type: object
          required: [model]
          properties:
            model:
              type: string
              description: Model name.
    UsageSummary:
      allOf:
        - $ref: "#/components/schemas/UsageMetrics"
        - type: object
          properties:
            groups:
              type: array
              description: Present when group_by is requested. Currently returns up to 10 groups selected across the entire range, ranked by usage_usd or by request_count when the range includes legacy requests. Groups use the same order in every bucket; groups without requests in a bucket are omitted.
              items:
                $ref: "#/components/schemas/UsageGroup"
            remainder:
              $ref: "#/components/schemas/UsageMetrics"
              description: Combined usage from groups outside the current limit. Omitted when there are no requests from additional groups.
    UsageBucket:
      allOf:
        - $ref: "#/components/schemas/UsageSummary"
        - type: object
          required: [from, until]
          properties:
            from:
              type: string
              format: date-time
              description: Start of the bucket in UTC, inclusive.
            until:
              type: string
              format: date-time
              description: End of the bucket in UTC, exclusive.
            partial:
              type: boolean
              description: Present and true for the current hour or day, which is still in progress.
    UsageResponse:
      type: object
      required: [range, scope, granularity, from, until, totals, buckets]
      properties:
        range:
          type: string
          enum: [24h, 7d, 30d]
          description: Selected time range.
        scope:
          type: string
          enum: [self, team]
          description: Selected usage scope.
        granularity:
          type: string
          enum: [hour, day]
          description: "Set automatically: hour for 24h, day for 7d and 30d."
        group_by:
          type: string
          enum: [model]
          description: Selected grouping. Present when group_by is requested.
        from:
          type: string
          format: date-time
          description: Start of the range in UTC, inclusive.
        until:
          type: string
          format: date-time
          description: End of the range in UTC, exclusive.
        totals:
          $ref: "#/components/schemas/UsageSummary"
          description: Usage across the entire range, including groups in the remainder.
        buckets:
          type: array
          description: Usage in chronological order, including buckets with no recorded requests.
          items:
            $ref: "#/components/schemas/UsageBucket"
    IncludedBalance:
      title: Included credits
      type: object
      required: [balance_usd, allowance_usd, period]
      properties:
        balance_usd:
          type: number
          description: Remaining included credits in USD.
        allowance_usd:
          type: number
          description: Included credits available for the full period in USD.
        period:
          type: object
          required: [from, until]
          properties:
            from:
              type: string
              format: date-time
              description: Start of the included period in UTC, inclusive.
            until:
              type: string
              format: date-time
              description: End of the included period in UTC, exclusive.
    LegacyBalanceLimit:
      type: object
      required: [remaining_percent, resets_at]
      properties:
        remaining_percent:
          type: number
          minimum: 0
          maximum: 100
          description: Percentage of the limit remaining.
        resets_at:
          type: string
          format: date-time
          description: Next reset time in UTC.
    LegacyIncludedBalance:
      title: Legacy plan limits
      type: object
      required: [session, weekly]
      properties:
        session:
          $ref: "#/components/schemas/LegacyBalanceLimit"
        weekly:
          $ref: "#/components/schemas/LegacyBalanceLimit"
    BalanceResponse:
      type: object
      required: [included, purchased]
      properties:
        included:
          oneOf:
            - $ref: "#/components/schemas/IncludedBalance"
            - $ref: "#/components/schemas/LegacyIncludedBalance"
        purchased:
          type: object
          required: [balance_usd]
          properties:
            balance_usd:
              type: number
              description: Remaining unexpired purchased credits in USD.
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error message describing what went wrong
paths:
  /v1/systemone:
    post:
      summary: Answer typed questions
      description: |
        Answer choice, yes/no, and scoring questions with a System One model, locally or in Ollama's cloud. Requires Ollama v0.35.0 or later, or v0.40.5 or later for cloud models. See the [decision guide](/capabilities/decision) for examples.
      operationId: systemone
      servers:
        - url: http://localhost:11434
          description: Ollama
        - url: https://ollama.com
          description: Ollama's cloud
      security:
        - {}
        - bearerAuth: []
      x-mint:
        href: /api/systemone
        metadata:
          title: System One
          sidebarTitle: /v1/systemone
        content: |
          - Returns one JSON response; streaming, video, tools, and generation controls are not supported.
          - Local requests' text and schema, excluding images, must fit within 64 KiB, and the whole request within 32 MiB, including base64 and JSON. The complete input must fit the loaded context window. Nimble and Tev also require two token positions for scoring. Input is never truncated.
          - Cloud models need a paid plan or purchased [usage credits](https://ollama.com/pricing). Cloud requests accept up to 64 questions, named with up to 100 ASCII letters, digits, `_`, `.`, or `-`, and up to 4 images of at most 4 MiB and 16 megapixels each, 8 MiB in total. Requests must fit within 13 MiB, and input must fit the model's 65,536-token context window.
      x-codeSamples:
        - lang: bash
          label: Choose a label
          source: |
            curl http://localhost:11434/v1/systemone \
              -H 'Content-Type: application/json' \
              -d '{
                "model": "nimble",
                "state": "Our checkout has returned 500 errors since 9am.",
                "questions": {
                  "label": {
                    "type": "choice",
                    "instructions": "Which label fits this ticket?",
                    "criteria": {
                      "billing": "Payments and refunds",
                      "bug": "Software errors",
                      "account": "Login and account access"
                    }
                  }
                }
              }'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SystemOneRequest"
            example:
              model: nimble
              state: Our checkout has returned 500 errors since 9am.
              questions:
                label:
                  type: choice
                  instructions: Which label fits this ticket?
                  criteria:
                    billing: Payments and refunds
                    bug: Software errors
                    account: Login and account access
      responses:
        "200":
          description: Answers and token usage for all questions. Example probabilities and confidence are rounded to four decimal places; results and usage can vary with the model and server configuration.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SystemOneResponse"
              example:
                model: nimble
                answers:
                  label:
                    type: choice
                    choice: bug
                    probabilities:
                      billing: 0.0125
                      bug: 0.9781
                      account: 0.0093
                    confidence: 0.8906
                usage:
                  input_tokens: 174
                  output_tokens: 1
        "400":
          description: Invalid request, unsupported model or runner, or a rendered prompt that exceeds the loaded context or a cloud model's token limit.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "401":
          description: A cloud model was requested without signing in, or with an invalid API key. Through a local server, the response includes a `signin_url`.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "402":
          description: The cloud model isn't included in the Free plan. Add usage credits or upgrade. Also returned when a payment fails.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "404":
          description: Model not found. Download a local model before making a request.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "413":
          description: Local text and schema exceed 64 KiB or the request exceeds 32 MiB, or a cloud request exceeds 13 MiB or the model's context window.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
              example:
                error: text and schema must not exceed 64 KiB
        "500":
          description: Model loading, rendering, or scoring failed.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
  /api/generate:
    post:
      summary: Generate a response
      description: Generates a response for the provided prompt
      operationId: generate
      x-mint:
        metadata:
          sidebarTitle: /api/generate
        href: /api/generate
      x-codeSamples:
        - lang: bash
          label: Default
          source: |
            curl http://localhost:11434/api/generate -d '{
              "model": "gemma4",
              "prompt": "Why is the sky blue?"
            }'
        - lang: bash
          label: Non-streaming
          source: |
            curl http://localhost:11434/api/generate -d '{
              "model": "gemma4",
              "prompt": "Why is the sky blue?",
              "stream": false
            }'
        - lang: bash
          label: Thinking
          source: |
            curl http://localhost:11434/api/generate -d '{
              "model": "gpt-oss",
              "prompt": "What is 1+1?",
              "think": "low",
              "stream": false
            }'
        - lang: bash
          label: With options
          source: |
            curl http://localhost:11434/api/generate -d '{
              "model": "gemma4",
              "prompt": "Why is the sky blue?",
              "options": {
                "temperature": 0.8,
                "top_p": 0.9,
                "seed": 42
              }
            }'
        - lang: bash
          label: Structured outputs
          source: |
            curl http://localhost:11434/api/generate -d '{
              "model": "gemma4",
              "prompt": "What are the populations of the United States and Canada?",
              "stream": false,
              "format": {
                "type": "object",
                "properties": {
                  "countries": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "country": {"type": "string"},
                        "population": {"type": "integer"}
                      },
                      "required": ["country", "population"]
                    }
                  }
                },
                "required": ["countries"]
              }
            }'
        - lang: bash
          label: With images
          source: |
            curl http://localhost:11434/api/generate -d '{
              "model": "gemma4",
              "prompt": "What is in this picture?",
              "images": ["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"]
            }'
        - lang: bash
          label: Load model
          source: |
            curl http://localhost:11434/api/generate -d '{
              "model": "gemma4"
            }'
        - lang: bash
          label: Unload model
          source: |
            curl http://localhost:11434/api/generate -d '{
              "model": "gemma4",
              "keep_alive": 0
            }'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/GenerateRequest"
            example:
              model: gemma4
              prompt: Why is the sky blue?
      responses:
        "200":
          description: Generation responses
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GenerateResponse"
              example:
                model: "gemma4"
                created_at: "2025-10-17T23:14:07.414671Z"
                response: "Hello! How can I help you today?"
                done: true
                done_reason: "stop"
                total_duration: 174560334
                load_duration: 101397084
                prompt_eval_count: 11
                prompt_eval_duration: 13074791
                eval_count: 18
                eval_duration: 52479709
            application/x-ndjson:
              schema:
                $ref: "#/components/schemas/GenerateStreamEvent"
  /api/chat:
    post:
      summary: Generate a chat message
      description: Generate the next chat message in a conversation between a user and an assistant.
      operationId: chat
      x-mint:
        metadata:
          sidebarTitle: /api/chat
        href: /api/chat
      x-codeSamples:
        - lang: bash
          label: Default
          source: |
            curl http://localhost:11434/api/chat -d '{
              "model": "gemma4",
              "messages": [
                {
                  "role": "user",
                  "content": "why is the sky blue?"
                }
              ]
            }'
        - lang: bash
          label: Non-streaming
          source: |
            curl http://localhost:11434/api/chat -d '{
              "model": "gemma4",
              "messages": [
                {
                  "role": "user",
                  "content": "why is the sky blue?"
                }
              ],
              "stream": false
            }'
        - lang: bash
          label: Structured outputs
          source: |
            curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d '{
              "model": "gemma4",
              "messages": [
                {
                  "role": "user",
                  "content": "What are the populations of the United States and Canada?"
                }
              ],
              "stream": false,
              "format": {
                "type": "object",
                "properties": {
                  "countries": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "country": {"type": "string"},
                        "population": {"type": "integer"}
                      },
                      "required": ["country", "population"]
                    }
                  }
                },
                "required": ["countries"]
              }
            }'
        - lang: bash
          label: Tool calling
          source: |
            curl http://localhost:11434/api/chat -d '{
              "model": "qwen3",
              "messages": [
                {
                  "role": "user",
                  "content": "What is the weather today in Paris?"
                }
              ],
              "stream": false,
              "tools": [
                {
                  "type": "function",
                  "function": {
                    "name": "get_current_weather",
                    "description": "Get the current weather for a location",
                    "parameters": {
                      "type": "object",
                      "properties": {
                        "location": {
                          "type": "string",
                          "description": "The location to get the weather for, e.g. San Francisco, CA"
                        },
                        "format": {
                          "type": "string",
                          "description": "The format to return the weather in, e.g. 'celsius' or 'fahrenheit'",
                          "enum": ["celsius", "fahrenheit"]
                        }
                      },
                      "required": ["location", "format"]
                    }
                  }
                }
              ]
            }'
        - lang: bash
          label: Thinking
          source: |
            curl http://localhost:11434/api/chat -d '{
              "model": "gpt-oss",
              "messages": [
                {
                  "role": "user",
                  "content": "What is 1+1?"
                }
              ],
              "think": "low"
            }'
        - lang: bash
          label: Images
          source: |
            curl http://localhost:11434/api/chat -d '{
              "model": "gemma4",
              "messages": [
                {
                  "role": "user",
                  "content": "What is in this image?",
                  "images": [
                    "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"
                  ]
                }
              ]
            }'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ChatRequest"
      responses:
        "200":
          description: Chat response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ChatResponse"
              example:
                model: "gemma4"
                created_at: "2025-10-17T23:14:07.414671Z"
                message:
                  role: "assistant"
                  content: "Hello! How can I help you today?"
                done: true
                done_reason: "stop"
                total_duration: 174560334
                load_duration: 101397084
                prompt_eval_count: 11
                prompt_eval_duration: 13074791
                eval_count: 18
                eval_duration: 52479709
            application/x-ndjson:
              schema:
                $ref: "#/components/schemas/ChatStreamEvent"
  /api/embed:
    post:
      summary: Generate embeddings
      description: Creates vector embeddings representing the input text
      operationId: embed
      x-mint:
        metadata:
          sidebarTitle: /api/embed
        href: /api/embed
      x-codeSamples:
        - lang: bash
          label: Default
          source: |
            curl http://localhost:11434/api/embed -d '{
              "model": "embeddinggemma",
              "input": "Why is the sky blue?"
            }'
        - lang: bash
          label: Multiple inputs
          source: |
            curl http://localhost:11434/api/embed -d '{
              "model": "embeddinggemma",
              "input": [
                "Why is the sky blue?",
                "Why is the grass green?"
              ]
            }'
        - lang: bash
          label: Truncation
          source: |
            curl http://localhost:11434/api/embed -d '{
              "model": "embeddinggemma",
              "input": "Generate embeddings for this text",
              "truncate": true
            }'
        - lang: bash
          label: Dimensions
          source: |
            curl http://localhost:11434/api/embed -d '{
              "model": "embeddinggemma",
              "input": "Generate embeddings for this text",
              "dimensions": 128
            }'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EmbedRequest"
            example:
              model: embeddinggemma
              input: "Generate embeddings for this text"
      responses:
        "200":
          description: Vector embeddings for the input text
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EmbedResponse"
              example:
                model: "embeddinggemma"
                embeddings:
                  - [
                      0.010071029,
                      -0.0017594862,
                      0.05007221,
                      0.04692972,
                      0.054916814,
                      0.008599704,
                      0.105441414,
                      -0.025878139,
                      0.12958129,
                      0.031952348,
                    ]
                total_duration: 14143917
                load_duration: 1019500
                prompt_eval_count: 8
  /api/tags:
    get:
      summary: List models
      description: Fetch a list of models and their details
      operationId: list
      x-mint:
        metadata:
          sidebarTitle: /api/tags
        href: /api/tags
      x-codeSamples:
        - lang: bash
          label: List models
          source: |
            curl http://localhost:11434/api/tags
      responses:
        "200":
          description: List available models
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ListResponse"
              example:
                models:
                  - name: "gemma4"
                    model: "gemma4"
                    modified_at: "2025-10-03T23:34:03.409490317-07:00"
                    size: 9608350245
                    digest: "c6eb396dbd5992bbe3f5cdb947e8bbc0ee413d7c17e2beaae69f5d569cf982eb"
                    details:
                      format: "gguf"
                      family: "gemma4"
                      families:
                        - "gemma4"
                      parameter_size: "8.0B"
                      quantization_level: "Q4_K_M"
  /api/ps:
    get:
      summary: List running models
      description: Retrieve a list of models that are currently running
      operationId: ps
      x-mint:
        metadata:
          sidebarTitle: /api/ps
        href: /api/ps
      x-codeSamples:
        - lang: bash
          label: List running models
          source: |
            curl http://localhost:11434/api/ps
      responses:
        "200":
          description: Models currently loaded into memory
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PsResponse"
              example:
                models:
                  - name: "gemma4"
                    model: "gemma4"
                    size: 6591830464
                    digest: "c6eb396dbd5992bbe3f5cdb947e8bbc0ee413d7c17e2beaae69f5d569cf982eb"
                    details:
                      parent_model: ""
                      format: "gguf"
                      family: "gemma4"
                      families:
                        - "gemma4"
                      parameter_size: "8.0B"
                      quantization_level: "Q4_K_M"
                    expires_at: "2025-10-17T16:47:07.93355-07:00"
                    size_vram: 5333539264
                    context_length: 4096
  /api/show:
    post:
      summary: Show model details
      operationId: show
      x-mint:
        metadata:
          sidebarTitle: /api/show
      x-codeSamples:
        - lang: bash
          label: Default
          source: |
            curl http://localhost:11434/api/show -d '{
              "model": "gemma4"
            }'
        - lang: bash
          label: Verbose
          source: |
            curl http://localhost:11434/api/show -d '{
              "model": "gemma4",
              "verbose": true
            }'
        - lang: bash
          label: Thinking controls
          source: |
            curl http://localhost:11434/api/show -d '{
              "model": "gpt-oss"
            }'
        - lang: bash
          label: Thinking controls
          source: |
            curl http://localhost:11434/api/show -d '{
              "model": "gpt-oss"
            }'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ShowRequest"
            example:
              model: gemma4
      responses:
        "200":
          description: Model information
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ShowResponse"
              example:
                parameters: "temperature 0.7\nnum_ctx 2048"
                license: "Gemma Terms of Use \n\nLast modified: February 21, 2024..."
                capabilities:
                  - "completion"
                  - "thinking"
                  - "vision"
                thinking:
                  values:
                    - false
                    - true
                  default: true
                modified_at: "2025-08-14T15:49:43.634137516-07:00"
                details:
                  parent_model: ""
                  format: "gguf"
                  family: "gemma4"
                  families:
                    - "gemma4"
                  parameter_size: "8.0B"
                  quantization_level: "Q4_K_M"
                model_info:
                  gemma4.attention.head_count: 8
                  gemma4.attention.head_count_kv: 2
                  gemma4.attention.key_length: 512
                  gemma4.attention.key_length_swa: 256
                  gemma4.attention.layer_norm_rms_epsilon: 0.000001
                  gemma4.attention.shared_kv_layers: 18
                  gemma4.attention.sliding_window: 512
                  gemma4.attention.value_length: 512
                  gemma4.attention.value_length_swa: 256
                  gemma4.audio.attention.head_count: 8
                  gemma4.audio.attention.layer_norm_epsilon: 0.000001
                  gemma4.audio.block_count: 12
                  gemma4.audio.conv_kernel_size: 5
                  gemma4.audio.embedding_length: 1024
                  gemma4.audio.feed_forward_length: 4096
                  gemma4.block_count: 42
                  gemma4.context_length: 131072
                  gemma4.embedding_length: 2560
                  gemma4.embedding_length_per_layer_input: 256
                  gemma4.feed_forward_length: 10240
                  gemma4.final_logit_softcapping: 30
                  gemma4.rope.dimension_count: 512
                  gemma4.rope.dimension_count_swa: 256
                  gemma4.rope.freq_base: 1000000
                  gemma4.rope.freq_base_swa: 10000
                  gemma4.vision.attention.head_count: 12
                  gemma4.vision.attention.layer_norm_epsilon: 0.000001
                  gemma4.vision.block_count: 16
                  gemma4.vision.embedding_length: 768
                  gemma4.vision.feed_forward_length: 3072
                  gemma4.vision.num_channels: 3
                  gemma4.vision.patch_size: 16
                  gemma4.vision.projector.scale_factor: 3
                  general.architecture: "gemma4"
                  general.file_type: 15
                  general.quantization_version: 2
                  tokenizer.ggml.add_bos_token: false
                  tokenizer.ggml.add_eos_token: false
                  tokenizer.ggml.add_mask_token: false
                  tokenizer.ggml.add_padding_token: false
                  tokenizer.ggml.add_unknown_token: false
                  tokenizer.ggml.bos_token_id: 2
                  tokenizer.ggml.eos_token_id: 1
                  tokenizer.ggml.eos_token_ids:
                    - 1
                    - 106
                    - 50
                  tokenizer.ggml.mask_token_id: 4
                  tokenizer.ggml.merges: null
                  tokenizer.ggml.model: "llama"
                  tokenizer.ggml.padding_token_id: 0
                  tokenizer.ggml.pre: "gemma4"
                  tokenizer.ggml.scores: null
                  tokenizer.ggml.token_type: null
                  tokenizer.ggml.tokens: null
                  tokenizer.ggml.unknown_token_id: 3
  /api/create:
    post:
      summary: Create a model
      operationId: create
      x-mint:
        metadata:
          sidebarTitle: /api/create
        href: /api/create
      x-codeSamples:
        - lang: bash
          label: Default
          source: |
            curl http://localhost:11434/api/create -d '{
              "from": "gemma4",
              "model": "alpaca",
              "system": "You are Alpaca, a helpful AI assistant. You only answer with Emojis."
            }'
        - lang: bash
          label: Create from existing
          source: |
            curl http://localhost:11434/api/create -d '{
              "model": "ollama",
              "from": "gemma4",
              "system": "You are Ollama the llama."
            }'
        - lang: bash
          label: Create from GGUF
          source: |
            curl http://localhost:11434/api/create -d '{
              "model": "my-gguf-model",
              "files": {
                "model.gguf": "sha256:432f310a77f4650a88d0fd59ecdd7cebed8d684bafea53cbff0473542964f0c3"
              }
            }'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateRequest"
            example:
              model: mario
              from: gemma4
              system: "You are Mario from Super Mario Bros."
      responses:
        "200":
          description: Stream of create status updates
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StatusResponse"
              example:
                status: "success"
            application/x-ndjson:
              schema:
                $ref: "#/components/schemas/StatusEvent"
              example:
                status: "success"
  /api/blobs/{digest}:
    head:
      summary: Check if a blob exists
      operationId: headBlob
      parameters:
        - $ref: "#/components/parameters/DigestParam"
      responses:
        "200":
          description: Blob exists
        "400":
          description: Invalid digest
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "404":
          description: Blob not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "500":
          description: Failed to inspect blob
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
    post:
      summary: Push a blob
      operationId: createBlob
      parameters:
        - $ref: "#/components/parameters/DigestParam"
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        "200":
          description: Blob already exists
        "201":
          description: Blob created
        "400":
          description: Invalid digest or blob content
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "500":
          description: Failed to write blob
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
  /api/copy:
    post:
      summary: Copy a model
      operationId: copy
      x-mint:
        metadata:
          sidebarTitle: /api/copy
        href: /api/copy
      x-codeSamples:
        - lang: bash
          label: Copy a model to a new name
          source: |
            curl http://localhost:11434/api/copy -d '{
              "source": "gemma4",
              "destination": "gemma4-backup"
            }'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CopyRequest"
            example:
              source: gemma4
              destination: gemma4-backup
      responses:
        "200":
          description: Model successfully copied
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StatusResponse"
              example:
                status: "success"
        "400":
          description: Model could not be copied
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "404":
          description: Source model not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
  /api/pull:
    post:
      summary: Pull a model
      operationId: pull
      x-mint:
        metadata:
          sidebarTitle: /api/pull
        href: /api/pull
      x-codeSamples:
        - lang: bash
          label: Default
          source: |
            curl http://localhost:11434/api/pull -d '{
              "model": "gemma4"
            }'
        - lang: bash
          label: Non-streaming
          source: |
            curl http://localhost:11434/api/pull -d '{
              "model": "gemma4",
              "stream": false
            }'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PullRequest"
            example:
              model: gemma4
      responses:
        "200":
          description: Pull status updates.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StatusResponse"
              example:
                status: "success"
            application/x-ndjson:
              schema:
                $ref: "#/components/schemas/StatusEvent"
              example:
                status: "success"
  /api/push:
    post:
      summary: Push a model
      operationId: push
      x-mint:
        metadata:
          sidebarTitle: /api/push
        href: /api/push
      x-codeSamples:
        - lang: bash
          label: Push model
          source: |
            curl http://localhost:11434/api/push -d '{
              "model": "my-username/my-model"
            }'
        - lang: bash
          label: Non-streaming
          source: |
            curl http://localhost:11434/api/push -d '{
              "model": "my-username/my-model",
              "stream": false
            }'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PushRequest"
            example:
              model: my-username/my-model
      responses:
        "200":
          description: Push status updates.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/StatusResponse"
              example:
                status: "success"
            application/x-ndjson:
              schema:
                $ref: "#/components/schemas/StatusEvent"
              example:
                status: "success"
  /api/delete:
    delete:
      summary: Delete a model
      operationId: delete
      x-mint:
        metadata:
          sidebarTitle: /api/delete
        href: /api/delete
      x-codeSamples:
        - lang: bash
          label: Delete model
          source: |
            curl -X DELETE http://localhost:11434/api/delete -d '{
              "model": "gemma4"
            }'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeleteRequest"
            example:
              model: gemma4
      responses:
        "200":
          description: Model successfully deleted
  /api/version:
    get:
      summary: Get version
      description: Retrieve the version of the Ollama
      operationId: version
      x-mint:
        metadata:
          sidebarTitle: /api/version
      x-codeSamples:
        - lang: bash
          label: Default
          source: |
            curl http://localhost:11434/api/version
      responses:
        "200":
          description: Version information
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VersionResponse"
              example:
                version: "0.12.6"
  /api/usage:
    get:
      summary: Cloud usage
      description: Usage statistics for cloud inference, web search, and web fetch.
      operationId: usage
      servers:
        - url: https://ollama.com
          description: Ollama's cloud
      security:
        - bearerAuth: []
      parameters:
        - name: range
          in: query
          description: Completed UTC hours or days to include, plus the current partial hour or day.
          schema:
            type: string
            enum: [24h, 7d, 30d]
            default: 7d
        - name: scope
          in: query
          description: Your requests, or your team's requests. Team scope requires being a team admin.
          schema:
            type: string
            enum: [self, team]
            default: self
        - name: group_by
          in: query
          description: "How to group usage within totals and buckets. Supported values: model."
          schema:
            type: string
            enum: [model]
      responses:
        "200":
          description: Usage for the selected range and scope.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UsageResponse"
        "400":
          description: Invalid query parameters.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "401":
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "403":
          description: Account suspended or team scope requested without team admin access.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "429":
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
                minimum: 1
        "503":
          description: Usage reporting is temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
  /api/balance:
    get:
      summary: Balance
      description: Check your remaining usage credits.
      operationId: balance
      servers:
        - url: https://ollama.com
          description: Ollama's cloud
      security:
        - bearerAuth: []
      responses:
        "200":
          description: Current included and purchased balances.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BalanceResponse"
        "400":
          description: Invalid query parameters.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "401":
          description: Invalid credentials.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "403":
          description: Account suspended.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "429":
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
                minimum: 1
        "503":
          description: Balance reporting is temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
