---
title: "Create a message"
method: POST
path: "/anthropic/v1/messages"
tags: ["Anthropic"]
---

# Create a message

`POST /anthropic/v1/messages`

## Request

- Base URL: `https://api.neosantara.xyz`
- URL: `https://api.neosantara.xyz/anthropic/v1/messages`
- Auth: HTTP bearer

Create a message using the Anthropic-compatible API. Supports tool use and sseStreaming.

## Request body

- object
  - `model` string, required
  - `messages` object[], required
    - `role` 'user' | 'assistant' | 'system', required
    - `content` union, required
      - string
      - union[]
        - union
          - object
            - `type` 'text', required
            - `text` string, required
            - `citations` union[]
              - …
          - object
            - `type` 'image', required
            - `source` object, required
              - …
          - object
            - `type` 'document', required
            - `source` object, required
              - …
            - `title` string
            - `context` string
            - `citations` object
              - …
          - object
            - `type` 'tool_use', required
            - `id` string, required
            - `name` string, required
            - `input` unknown
            - `caller` union
              - …
          - object
            - `type` 'server_tool_use', required
            - `id` string, required
            - `name` string, required
            - `input` object, nullable
          - object
            - `type` 'tool_result', required
            - `tool_use_id` string, required
            - `content` union
              - …
            - `is_error` boolean
          - object
            - `type` 'thinking', required
            - `thinking` string, required
            - `signature` string, required
          - object
            - `type` 'redacted_thinking', required
            - `data` string, required
          - object
            - `type` 'compaction', required
            - `content` string, required
          - object
            - `type` 'mcp_tool_use', required
            - `id` string, required
            - `name` string, required
            - `input` unknown
            - `server_name` string, required
          - object
            - `type` 'mcp_tool_result', required
            - `tool_use_id` string, required
            - `is_error` boolean, required
            - `content` union[], required
              - …
          - object
            - `type` 'code_execution_tool_result', required
            - `tool_use_id` string, required
            - `content` unknown
          - object
            - `type` 'bash_code_execution_tool_result', required
            - `tool_use_id` string, required
            - `content` unknown
          - object
            - `type` 'text_editor_code_execution_tool_result', required
            - `tool_use_id` string, required
            - `content` unknown
          - object
            - `type` 'tool_search_tool_result', required
            - `tool_use_id` string, required
            - `content` unknown
          - object
            - `type` 'web_fetch_tool_result', required
            - `tool_use_id` string, required
            - `content` unknown
          - object
            - `type` 'web_search_tool_result', required
            - `tool_use_id` string, required
            - `content` unknown
  - `max_tokens` integer, required
  - `system` union
    - string
    - unknown[]
      - unknown
  - `temperature` number
  - `top_p` number
  - `top_k` integer
  - `stream` boolean
  - `stop_sequences` string[]
  - `metadata` object
  - `tools` unknown[]
    - unknown
  - `tool_choice` unknown
  - `mcp_servers` object[]
    - `type` 'url'
    - `url` string, uri, required
    - `name` string, required
    - `authorization_token` string
    - `allowed_tools` string[]
  - `thinking` object
    - `type` 'enabled' | 'disabled' | 'adaptive', required
    - `budget_tokens` integer
  - `effort` 'low' | 'medium' | 'high' | 'max'
  - `speed` 'fast' | 'standard'
  - `context_management` object
    - `edits` unknown[], required
      - unknown
  - `output_config` object
    - `effort` 'low' | 'medium' | 'high' | 'max'
    - `format` unknown
    - `budget_tokens` integer

## Response `200`

Successful response or SSE stream

- object
  - `id` string, nullable
  - `type` 'message', required
  - `role` 'assistant' | 'null', nullable
  - `content` union[], required
    - union
      - object
        - `type` 'text', required
        - `text` string, required
        - `citations` union[]
          - union
            - object
              - …
            - object
              - …
            - object
              - …
      - object
        - `type` 'image', required
        - `source` object, required
          - `type` 'base64', required
          - `media_type` string, required
          - `data` string, required
      - object
        - `type` 'document', required
        - `source` object, required
          - `type` union, required
            - 'base64'
            - 'url'
          - `media_type` string, required
          - `data` string
          - `url` string
        - `title` string
        - `context` string
        - `citations` object
          - `enabled` boolean, required
      - object
        - `type` 'tool_use', required
        - `id` string, required
        - `name` string, required
        - `input` unknown
        - `caller` union
          - object
            - `type` 'code_execution_20250825', required
            - `tool_id` string, required
          - object
            - `type` 'direct', required
      - object
        - `type` 'server_tool_use', required
        - `id` string, required
        - `name` string, required
        - `input` object, nullable
      - object
        - `type` 'tool_result', required
        - `tool_use_id` string, required
        - `content` union
          - string
          - unknown[]
            - unknown
        - `is_error` boolean
      - object
        - `type` 'thinking', required
        - `thinking` string, required
        - `signature` string, required
      - object
        - `type` 'redacted_thinking', required
        - `data` string, required
      - object
        - `type` 'compaction', required
        - `content` string, required
      - object
        - `type` 'mcp_tool_use', required
        - `id` string, required
        - `name` string, required
        - `input` unknown
        - `server_name` string, required
      - object
        - `type` 'mcp_tool_result', required
        - `tool_use_id` string, required
        - `is_error` boolean, required
        - `content` union[], required
          - union
            - string
            - object
              - …
      - object
        - `type` 'code_execution_tool_result', required
        - `tool_use_id` string, required
        - `content` unknown
      - object
        - `type` 'bash_code_execution_tool_result', required
        - `tool_use_id` string, required
        - `content` unknown
      - object
        - `type` 'text_editor_code_execution_tool_result', required
        - `tool_use_id` string, required
        - `content` unknown
      - object
        - `type` 'tool_search_tool_result', required
        - `tool_use_id` string, required
        - `content` unknown
      - object
        - `type` 'web_fetch_tool_result', required
        - `tool_use_id` string, required
        - `content` unknown
      - object
        - `type` 'web_search_tool_result', required
        - `tool_use_id` string, required
        - `content` unknown
  - `model` string, nullable
  - `stop_reason` string, nullable
  - `stop_sequence` string, nullable
  - `usage` object, required
    - `input_tokens` number, required
    - `output_tokens` number, required
    - `total_tokens` number
    - `cache_creation_input_tokens` number, nullable
    - `cache_read_input_tokens` number, nullable
    - `iterations` object[], nullable
      - `type` union, required
        - 'compaction'
        - 'message'
      - `input_tokens` number, required
      - `output_tokens` number, required
  - `container` object, nullable
    - `expires_at` string, required
    - `id` string, required
    - `skills` object[], nullable
      - `type` union, required
        - 'anthropic'
        - 'custom'
      - `skill_id` string, required
      - `version` string, required
  - `context_management` object, nullable
    - `applied_edits` unknown[], required
      - unknown

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `404`: Model Not Found

## Changes

- **2026-11-03** `f87af696a63e`: 10 breaking, 2 warning, 7 info
  - the response property `id` became nullable for the status `200`
  - the response property `model` became nullable for the status `200`
  - the response property `role` became nullable for the status `200`
  - the response property `id` became optional for the status `200`
  - …15 more

[Operation history](https://skmtc.dev/neosantara/apis/neosantara-ai-api/changes/anthropic/v1/messages/post.md)

---

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