---
title: "Create a chat completion"
method: POST
path: "/v1/chat/completions"
---

# Create a chat completion

`POST /v1/chat/completions`

## Request

- Base URL: `https://api.octen.ai`
- URL: `https://api.octen.ai/v1/chat/completions`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

Compatible with the OpenAI Chat Completions protocol, with optional built-in `octen_broad_search` and `octen_search` tools.

## Request body

- ChatCompletionRequest: Request body for the Chat Completions API. Some parameters apply only to certain models; unsupported parameters are ignored for the selected model.
  - `model` 'openai/gpt-6.1-sol' | 'openai/gpt-6-astra' | 'openai/gpt-5.6-sol' | 'openai/gpt-5.6-terra' | 'openai/gpt-5.6-luna' | 'openai/gpt-5.4' | 'anthropic/claude-fable-5.1' | 'anthropic/claude-fable-5' | 'anthropic/claude-opus-5.5' | 'anthropic/claude-opus-5' | 'anthropic/claude-opus-4.8' | 'anthropic/claude-opus-4.6' | 'anthropic/claude-sonnet-5.5' | 'anthropic/claude-sonnet-5' | 'anthropic/claude-sonnet-4.6' | 'anthropic/claude-haiku-5.5' | 'anthropic/claude-haiku-4.5' | 'google/gemini-4-argon' | 'google/gemini-3.8-flash' | 'google/gemini-3.5-flash' | 'google/gemini-3.5-flash-lite' | 'google/gemini-3.1-pro-preview' | 'google/gemini-3.1-flash-lite' | 'google/gemini-3-flash-preview' | 'moonshotai/kimi-k3' | 'moonshotai/kimi-k2.6' | 'moonshotai/kimi-k2.5' | 'minimax/minimax-m2.5' | 'qwen/qwen3.6-plus' | 'deepseek/deepseek-v4-pro' | 'deepseek/deepseek-v4-flash-0731', required: The model to use for chat completion.
  - `messages` ChatMessage[], required: The conversation so far. System prompt plus user and assistant messages in chronological order.
    - union
      - SystemMessage
        - `role` 'system', required: The role of the message author. Always `system`.
        - `content` union, required: The system prompt content. A plain string or an array of content blocks.
          - string
          - ChatContentBlock[]
            - `type` 'text' | 'image' | 'image_url', required: The type of content block.
            - `text` string: The text content. Required when `type` is `text`.
            - `image` string: Base64-encoded image. Required when `type` is `image`.
            - `image_url` object: Image URL object. Required when `type` is `image_url`.
              - …
            - `cache_control` CacheControl: Prompt caching marker. Sets a cache breakpoint so the stable prefix up to this block can be reused.
              - …
      - DeveloperMessage: A developer message. The OpenAI-protocol equivalent of `system` (sent by newer OpenAI SDKs); handled as `system`.
        - `role` 'developer', required: The role of the message author. Always `developer`.
        - `content` union, required: The content. A plain string or an array of content blocks.
          - string
          - ChatContentBlock[]
            - `type` 'text' | 'image' | 'image_url', required: The type of content block.
            - `text` string: The text content. Required when `type` is `text`.
            - `image` string: Base64-encoded image. Required when `type` is `image`.
            - `image_url` object: Image URL object. Required when `type` is `image_url`.
              - …
            - `cache_control` CacheControl: Prompt caching marker. Sets a cache breakpoint so the stable prefix up to this block can be reused.
              - …
      - UserMessage
        - `role` 'user', required: The role of the message author. Always `user`.
        - `content` union, required: The content of the message. A plain string or an array of content blocks.
          - string
          - ChatContentBlock[]
            - `type` 'text' | 'image' | 'image_url', required: The type of content block.
            - `text` string: The text content. Required when `type` is `text`.
            - `image` string: Base64-encoded image. Required when `type` is `image`.
            - `image_url` object: Image URL object. Required when `type` is `image_url`.
              - …
            - `cache_control` CacheControl: Prompt caching marker. Sets a cache breakpoint so the stable prefix up to this block can be reused.
              - …
      - AssistantMessage
        - `role` 'assistant', required: The role of the message author. Always `assistant`.
        - `content` string, nullable: The assistant's text content. May be `null` or omitted when the assistant only produces tool calls.
        - `tool_calls` ChatToolCall[]: Tool calls generated by the model in a previous turn, replayed verbatim. Only valid when `role` is `assistant`.
          - `index` integer: The index of this tool call in the array.
          - `id` string, required: A unique identifier for this tool call. Referenced by the corresponding `tool` message's `tool_call_id`.
          - `type` 'function', required: The type of tool call. Always `function`.
          - `function` ChatToolCallFunction, required: The function invocation details within a tool call.
            - `name` string, required: The name of the function to call.
            - `arguments` string, required: The arguments to the function, as a JSON string generated by the model.
          - `thought_signature` string: Encrypted reasoning state, replayed verbatim. Required when the request ends with a `tool` message.
      - ToolMessage
        - `role` 'tool', required: The role of the message author. Always `tool`.
        - `tool_call_id` string, required: The ID of the tool call this message responds to.
        - `content` string, required: The tool output, typically a JSON string with the function result.
  - `tools` ChatToolDefinition[]
    - union: A tool definition. One of a custom `function` tool, the built-in `octen_broad_search` tool, or the `octen_search` tool.
      - ChatFunctionTool: A custom function tool, executed by the caller.
        - `type` 'function', required: The type of tool. Always `function` for a custom tool.
        - `function` ChatFunctionDefinition, required: A custom function definition.
          - `name` string, required: The name of the function.
          - `description` string: A description of what the function does.
          - `parameters` object: The function's parameter definition in JSON Schema format.
          - `strict` boolean: Whether to enable strict mode. When enabled, generated arguments strictly conform to `parameters`.
      - ChatOctenBroadSearchTool: The built-in `octen_broad_search` server tool, executed by Octen.
        - `type` 'octen_broad_search', required: The type of tool. Always `octen_broad_search`.
        - `parameters` OctenBroadSearchToolParameters: Behavior configuration for the built-in `octen_broad_search` tool. Identical to `octen_search` except it accepts `max_queries` instead of `max_searches`. All parameters are optional and share the same semantics and defaults as the Web Search API.
          - `max_queries` integer: Upper bound on the number of sub-queries generated.
          - `count` integer: Number of results to return.
          - `include_domains` string[]: A list of domains to specifically include in the search results. The `site:` query operator adds to this list.
          - `exclude_domains` string[]: A list of domains to specifically exclude from the search results. The `-site:` query operator adds to this list. If a domain appears in both `include_domains` and `exclude_domains`, `exclude_domains` takes precedence.
          - `include_text` string[]: Strings that must appear in the result page text.
          - `exclude_text` string[]: Strings that must not appear in the result page text.
          - `time_basis` 'auto' | 'published' | 'crawled': Determines which time field is used for time filtering. `published` uses time_published; `crawled` uses time_last_crawled. Results missing this field are excluded when filtering by time.
          - `time_range` 'day' | 'week' | 'month' | 'year' | 'd' | 'w' | 'm' | 'y': Relative time window counting back from the current time based on `time_basis`. Mutually exclusive with `start_time`/`end_time` — if both are provided, `start_time`/`end_time` take precedence.
          - `start_time` string, date-time: Start time for filtering results. ISO 8601 format.
          - `end_time` string, date-time: End time for filtering results. ISO 8601 format.
          - `language` string[]: A list of languages to restrict results to, as ISO 639-1 codes. By default, no language filter is applied.
          - `highlight` HighlightOptions: Controls highlight extraction from result pages.
            - `enable` boolean: If true, returns query-relevant highlight in each result.
            - `max_tokens` integer: Max tokens returned per highlight.
          - `full_content` FullContentOptions: Controls whether to return the full raw content of each result page.
            - `enable` boolean: If true, returns full_content for each result.
            - `max_tokens` integer: Maximum tokens of full content included per result.
          - `format` 'markdown' | 'text': Controls the formatting of highlight outputs.
          - `safesearch` 'off' | 'strict': Controls filtering of explicit/adult content. `off` disables filtering; `strict` drops all adult content.
          - `include_images` boolean: Whether to include images in each result.
      - ChatOctenSearchTool: The built-in `octen_search` server tool, executed by Octen.
        - `type` 'octen_search', required: The type of tool. Always `octen_search`.
        - `parameters` OctenSearchToolParameters: Behavior configuration for the built-in `octen_search` tool. All parameters are optional and share the same semantics and defaults as the Web Search API. The query is generated automatically by the model; a single request may trigger multiple searches.
          - `max_searches` integer: Maximum number of searches allowed in a single request.
          - `count` integer: Number of results to return.
          - `include_domains` string[]: A list of domains to specifically include in the search results. The `site:` query operator adds to this list.
          - `exclude_domains` string[]: A list of domains to specifically exclude from the search results. The `-site:` query operator adds to this list. If a domain appears in both `include_domains` and `exclude_domains`, `exclude_domains` takes precedence.
          - `include_text` string[]: Strings that must appear in the result page text.
          - `exclude_text` string[]: Strings that must not appear in the result page text.
          - `time_basis` 'auto' | 'published' | 'crawled': Determines which time field is used for time filtering. `published` uses time_published; `crawled` uses time_last_crawled. Results missing this field are excluded when filtering by time.
          - `time_range` 'day' | 'week' | 'month' | 'year' | 'd' | 'w' | 'm' | 'y': Relative time window counting back from the current time based on `time_basis`. Mutually exclusive with `start_time`/`end_time` — if both are provided, `start_time`/`end_time` take precedence.
          - `start_time` string, date-time: Start time for filtering results. ISO 8601 format.
          - `end_time` string, date-time: End time for filtering results. ISO 8601 format.
          - `language` string[]: A list of languages to restrict results to, as ISO 639-1 codes. By default, no language filter is applied.
          - `highlight` HighlightOptions: Controls highlight extraction from result pages.
            - `enable` boolean: If true, returns query-relevant highlight in each result.
            - `max_tokens` integer: Max tokens returned per highlight.
          - `full_content` FullContentOptions: Controls whether to return the full raw content of each result page.
            - `enable` boolean: If true, returns full_content for each result.
            - `max_tokens` integer: Maximum tokens of full content included per result.
          - `format` 'markdown' | 'text': Controls the formatting of highlight outputs.
          - `safesearch` 'off' | 'strict': Controls filtering of explicit/adult content. `off` disables filtering; `strict` drops all adult content.
          - `include_images` boolean: Whether to include images in each result.
  - `tool_choice` union: Controls tool invocation. `none`: never call tools; `auto`: model decides (default); `required`: must call a tool. Can also be an object to force a specific tool. Only valid when `tools` is set.
    - 'none' | 'auto' | 'required'
    - ChatToolChoiceObject: Forces a specific tool. The named tool must be declared in `tools`.
      - `type` 'function' | 'octen_broad_search' | 'octen_search', required: The type of tool to force.
      - `function` object: The function to call. Required when `type` is `function`.
        - `name` string, required: The name of the function to call.
  - `parallel_tool_calls` boolean: Whether the model may issue multiple tool calls in one reply. When `false`, at most one tool call per turn.
  - `stream` boolean: Whether to enable streaming output. When `true`, returns `chat.completion.chunk` objects incrementally.
  - `max_tokens` integer: Maximum number of tokens the model can output. If not set, the model's internal default limit is used.
  - `max_completion_tokens` integer: Maximum completion tokens, including reasoning and visible output tokens. If not set, the model's internal default limit is used.
  - `temperature` number: Controls randomness in generation. Higher values produce more diverse output; lower values produce more deterministic output.
  - `top_p` number: Nucleus sampling. Only tokens with cumulative probability up to `top_p` are considered.
  - `top_k` integer: Sample only from the top K most probable tokens. `0` disables it.
  - `min_p` number: Minimum probability threshold relative to the most probable token. Tokens below it are filtered out. `0` disables it.
  - `top_a` number: Dynamic filtering threshold based on the most probable token. `0` disables it.
  - `repetition_penalty` number: Penalizes tokens already present in the input. Above 1 suppresses repetition; below 1 encourages it.
  - `frequency_penalty` number: Penalizes tokens by their frequency in the output so far. Positive values reduce repetition.
  - `presence_penalty` number: Penalizes tokens that have already appeared. Positive values encourage new topics.
  - `response_format` ChatResponseFormat: Controls the output format. Some models may not support structured output and will automatically fall back to `text`.
    - `type` 'text' | 'json_object' | 'json_schema': The output format type.
    - `json_schema` ChatJsonSchemaSpec: JSON Schema specification for structured output. Required when `response_format.type` is `json_schema`.
      - `name` string, required: A user-defined name for the schema.
      - `strict` boolean: Whether the model output must strictly conform to the schema.
      - `description` string: A description of the schema.
      - `schema` object: The JSON Schema definition object. May contain `type`, `properties`, `required`, `additionalProperties`, etc.
  - `stop` string[]: Stop sequences. Generation stops when any of these strings is encountered.
  - `seed` integer: Seed for reproducibility. With the same parameters and model version, output should be as consistent as possible.
  - `reasoning` ChatReasoningOptions: Options for reasoning models. Turns thinking on or off and sets the effort and budget.
    - `enabled` boolean: Set to `false` to turn off thinking. Overrides `effort` and `max_tokens`.
    - `effort` 'max' | 'xhigh' | 'high' | 'medium' | 'low' | 'minimal' | 'none': The reasoning effort level.
    - `max_tokens` integer: Thinking token budget.
  - `reasoning_effort` 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max': Top-level alias for `reasoning.effort`. If both are set, `reasoning` takes precedence.
  - `verbosity` 'low' | 'medium' | 'high': Controls how verbose the reply is.
  - `logit_bias` object: A JSON object mapping token IDs to bias values (-100 to 100), added to the logits before sampling.
  - `logprobs` boolean: Whether to return the log probabilities of the output tokens.
  - `top_logprobs` integer: Number of most likely tokens to return at each position. Requires `logprobs` to be `true`.
  - `user` string: A unique identifier for the end user. Use hashed or pseudonymous identifiers to avoid passing personally identifiable information.
  - `modalities` string[]: Requested output modalities.
  - `prompt_cache_key` string: Cache key for prompt caching.
  - `prompt_cache_options` object: Prompt caching controls.
    - `mode` 'implicit' | 'explicit': `implicit` caches automatically; `explicit` caches only prefixes marked with a cache breakpoint.
    - `ttl` '30m': How long a cache entry is retained.
  - `prompt_cache_retention` 'in_memory' | '24h': Prompt cache retention policy.
  - `previous_response_id` string: The `id` of a previous response, used to chain state across turns.

## Response `200`

Successful chat completion. When `stream=false`, returns a single `chat.completion` object. When `stream=true`, returns a stream of `chat.completion.chunk` objects (`search_done`, `content`, `finish`, `usage`), followed by `data: [DONE]`.

- union
  - ChatCompletionResponse: A non-streaming chat completion response. Returned when `stream=false`.
    - `id` string, required: The unique identifier for this request.
    - `object` 'chat.completion', required: The object type, always `chat.completion` for non-streaming responses.
    - `created` integer, required: Unix timestamp (in seconds) of when the completion was created.
    - `model` string, required: The model used for this completion.
    - `choices` ChatCompletionChoice[], required: A list of completion choices.
      - `index` integer: The index of this choice. Usually 0.
      - `finish_reason` 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'error': The reason the model stopped generating. `stop` indicates normal completion.
      - `message` ChatCompletionMessage: The assistant's response message.
        - `role` 'assistant': The role of the message author. Always `assistant`.
        - `content` string, nullable: The assistant's text content. May be `null` when the model only produces tool calls or refuses.
        - `tool_calls` ChatToolCall[]: Custom function calls generated by the model. Present only when `finish_reason` is `tool_calls`.
          - `index` integer: The index of this tool call in the array.
          - `id` string, required: A unique identifier for this tool call. Referenced by the corresponding `tool` message's `tool_call_id`.
          - `type` 'function', required: The type of tool call. Always `function`.
          - `function` ChatToolCallFunction, required: The function invocation details within a tool call.
            - `name` string, required: The name of the function to call.
            - `arguments` string, required: The arguments to the function, as a JSON string generated by the model.
          - `thought_signature` string: Encrypted reasoning state, replayed verbatim. Required when the request ends with a `tool` message.
        - `annotations` ChatAnnotation[]: Citation annotations. Present only when `octen_broad_search` or `octen_search` was used.
          - `type` 'url_citation': The annotation type.
          - `url_citation` object
            - `url` string: The URL of the cited source.
            - `title` string: The title of the cited source.
            - `start_index` integer: Start position of the cited span in `content`.
            - `end_index` integer: End position of the cited span in `content`.
        - `refusal` string, nullable: A model-generated refusal message, or `null`.
        - `reasoning` string, nullable: Reasoning text. Present only for reasoning models, otherwise `null`.
        - `reasoning_details` ChatReasoningDetail[]: Detailed reasoning information. Present only for reasoning models.
          - `format` 'unknown' | 'openai-responses-v1' | 'azure-openai-responses-v1' | 'xai-responses-v1' | 'anthropic-claude-v1' | 'google-gemini-v1': The format of the reasoning information.
          - `index` integer: The position of this entry in the output. Usually 0.
          - `type` 'reasoning.text' | 'reasoning.summary' | 'reasoning.encrypted': The kind of reasoning information.
          - `text` string: Reasoning text. Present only when `type` is `reasoning.text`.
          - `summary` string: Reasoning summary. Present only when `type` is `reasoning.summary`.
          - `data` string: Encrypted reasoning. Present only when `type` is `reasoning.encrypted`.
      - `logprobs` ChatLogprobs, nullable: Log probability information for the output tokens. Present only when `logprobs` is `true`, otherwise `null`.
        - `content` object[], nullable
          - `token` string: The token text.
          - `logprob` number: The log probability of this token.
          - `bytes` integer[], nullable: UTF-8 byte representation.
          - `top_logprobs` object[]: The top candidate tokens at this position, same structure.
    - `search_results` ChatSearchResultGroup[]: Search results. Present only when `octen_search` was actually triggered.
      - `query` string: The query the model actually searched for. One message may produce multiple queries.
      - `results` ChatSearchResultItem[]: The search results for this query.
        - `title` string: The title of the result page.
        - `url` string: The URL of the result page.
        - `highlights` string: Query-relevant highlight snippets. Returned only if `highlight.enable` is true.
        - `full_content` string: Full raw page content. Returned only if `full_content.enable` is true.
        - `authors` string: Website name or author.
        - `time_published` string, date-time: Publish time in ISO 8601.
        - `time_last_crawled` string, date-time: Last crawl time in ISO 8601.
    - `usage` ChatCompletionUsage: Token usage information. When `stream=true`, returned only in the final `usage` chunk.
      - `num_search_queries` integer: Number of searches executed. Returned only when search was used.
      - `full_content_extra_count` integer: Billable full_content results beyond the free allowance. Returned only when `full_content` is enabled.
      - `prompt_tokens` integer, required: Number of input tokens. Cache read and write tokens are included here, not listed separately.
      - `completion_tokens` integer, required: Number of output tokens (reasoning tokens are included).
      - `total_tokens` integer, required: Total tokens (prompt_tokens + completion_tokens).
      - `prompt_tokens_details` object: Breakdown of input tokens. Returned only when the prompt cache is hit or written to.
        - `cached_tokens` integer: Portion of `prompt_tokens` served from cache (a subset of `prompt_tokens`).
        - `cache_write_tokens` integer: Tokens written to cache (a subset of `prompt_tokens`). Returned only when `cache_control` was used and the model supports cache writes.
        - `cache_write_5m_tokens` integer: Tokens written to the 5-minute cache (a subset of `cache_write_tokens`). Only the field matching the TTL used is returned.
        - `cache_write_1h_tokens` integer: Tokens written to the 1-hour cache (a subset of `cache_write_tokens`). Only the field matching the TTL used is returned.
      - `completion_tokens_details` object: Breakdown of output tokens. Returned only for reasoning models.
        - `reasoning_tokens` integer: Number of reasoning tokens (already included in `completion_tokens`).
    - `warning` string: Warning message, if any.
  - ChatCompletionChunk: A streaming chunk. Returned when `stream=true`. The `type` field indicates the chunk kind: `search_done`, `content`, `finish`, `usage`. After the last chunk, `data: [DONE]` is sent.
    - `type` 'search_done' | 'content' | 'finish' | 'usage': The type of this streaming chunk.
    - `id` string: The unique identifier for this request.
    - `object` 'chat.completion.chunk', required: The object type, always `chat.completion.chunk` for streaming responses.
    - `created` integer, required: Unix timestamp (in seconds) of when the chunk was created.
    - `model` string, required: The model used for this completion.
    - `choices` ChatCompletionChunkChoice[]: Incremental choices. Present in `content` and `finish` chunks.
      - `index` integer: The index of this choice. Usually 0.
      - `delta` ChatCompletionDelta: Incremental content in a streaming chunk. Contains only the new fields for this chunk.
        - `role` 'assistant': The role. Typically included in the first chunk.
        - `content` string: Incremental text content.
        - `tool_calls` ChatToolCallDelta[]: Incremental tool call data.
          - `index` number: The index of this tool call in the tool_calls array.
          - `id` string: The tool call ID. Only present in the first chunk for this tool call.
          - `type` 'function': The type of tool call.
          - `function` object: Incremental function call data.
            - `name` string: The function name. Only present in the first chunk for this tool call.
            - `arguments` string: Incremental JSON string of the function arguments. Concatenate across chunks to build the complete arguments.
          - `thought_signature` string: Encrypted reasoning state, replayed verbatim.
      - `finish_reason` 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'error' | 'null', nullable: The reason generation stopped. `null` for intermediate chunks; set in the `finish` chunk.
      - `logprobs` ChatLogprobs, nullable: Log probability information for the output tokens. Present only when `logprobs` is `true`, otherwise `null`.
        - `content` object[], nullable
          - `token` string: The token text.
          - `logprob` number: The log probability of this token.
          - `bytes` integer[], nullable: UTF-8 byte representation.
          - `top_logprobs` object[]: The top candidate tokens at this position, same structure.
    - `search_results` ChatSearchResultGroup[]: Search results. Present in `search_done` chunks.
      - `query` string: The query the model actually searched for. One message may produce multiple queries.
      - `results` ChatSearchResultItem[]: The search results for this query.
        - `title` string: The title of the result page.
        - `url` string: The URL of the result page.
        - `highlights` string: Query-relevant highlight snippets. Returned only if `highlight.enable` is true.
        - `full_content` string: Full raw page content. Returned only if `full_content.enable` is true.
        - `authors` string: Website name or author.
        - `time_published` string, date-time: Publish time in ISO 8601.
        - `time_last_crawled` string, date-time: Last crawl time in ISO 8601.
    - `usage` ChatCompletionUsage: Token usage information. When `stream=true`, returned only in the final `usage` chunk.
      - `num_search_queries` integer: Number of searches executed. Returned only when search was used.
      - `full_content_extra_count` integer: Billable full_content results beyond the free allowance. Returned only when `full_content` is enabled.
      - `prompt_tokens` integer, required: Number of input tokens. Cache read and write tokens are included here, not listed separately.
      - `completion_tokens` integer, required: Number of output tokens (reasoning tokens are included).
      - `total_tokens` integer, required: Total tokens (prompt_tokens + completion_tokens).
      - `prompt_tokens_details` object: Breakdown of input tokens. Returned only when the prompt cache is hit or written to.
        - `cached_tokens` integer: Portion of `prompt_tokens` served from cache (a subset of `prompt_tokens`).
        - `cache_write_tokens` integer: Tokens written to cache (a subset of `prompt_tokens`). Returned only when `cache_control` was used and the model supports cache writes.
        - `cache_write_5m_tokens` integer: Tokens written to the 5-minute cache (a subset of `cache_write_tokens`). Only the field matching the TTL used is returned.
        - `cache_write_1h_tokens` integer: Tokens written to the 1-hour cache (a subset of `cache_write_tokens`). Only the field matching the TTL used is returned.
      - `completion_tokens_details` object: Breakdown of output tokens. Returned only for reasoning models.
        - `reasoning_tokens` integer: Number of reasoning tokens (already included in `completion_tokens`).

## Other responses

- `400`: Missing or invalid parameter
- `401`: Invalid API Key
- `403`: Insufficient balance in account
- `404`: Model or resource not found
- `429`: Exceeding the rate limit
- `500`: Internal error

---

[API](https://skmtc.dev/octen/apis/octen-api.md) - [All operations](https://skmtc.dev/octen/apis/octen-api/llms.txt) - [OpenAPI document](https://skmtc.dev/octen/apis/octen-api/revisions/aaa6caaf46b0?raw)
