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 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 default: "No" "true": type: string default: "Yes" 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. The maximum number of levels depends on the model. minItems: 2 maxItems: 26 items: type: string SystemOneRequest: type: object required: [model, state, questions] properties: model: type: string pattern: '\S' description: Local model trained for System One, such as nimble. Requires compatible GGUF weights and a scoring-capable runner; cloud and MLX/Safetensors models are not supported. state: $ref: "#/components/schemas/SystemOneContent" images: type: array description: Base64-encoded images shared by all questions, in request order. Requires Clef or Clef Flash with vision weights. 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. 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: 25 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. UsageBucket: allOf: - $ref: "#/components/schemas/UsageMetrics" - 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." 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/UsageMetrics" description: Usage across the entire range. 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 local System One model. Requires Ollama v0.35.0 or later. See the [decision guide](/capabilities/decision) for examples. operationId: systemone x-mint: href: /api/systemone metadata: title: System One sidebarTitle: /v1/systemone content: | Currently available locally in Ollama. - Returns one JSON response; streaming, video, tools, and generation controls are not supported. - Requests without images must fit within 64 KiB; requests with images must fit 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. 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. Cloud models are rejected. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "404": description: Local model not found. Download the model before making a request. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" "413": description: Request body exceeds 64 KiB without images or 32 MiB with images. content: application/json: schema: $ref: "#/components/schemas/ErrorResponse" example: error: request body must not exceed 64 KiB without images "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 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 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 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"