Zum Hauptinhalt springen
POST
/
v1
/
messages
curl https://api.apimart.ai/v1/messages \
  -H "x-api-key: $API_KEY" \
  -H "anthropic-version: 2025-10-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5-20250929",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Hello, world"}
    ]
  }'
{
  "code": 200,
  "data": {
    "id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
    "type": "message",
    "role": "assistant",
    "content": [
      {
        "type": "text",
        "text": "Hello! I'm Claude. Nice to meet you."
      }
    ],
    "model": "claude-sonnet-4-5-20250929",
    "stop_reason": "end_turn",
    "stop_sequence": null,
    "usage": {
      "input_tokens": 12,
      "output_tokens": 18
    }
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt

Use this file to discover all available pages before exploring further.

curl https://api.apimart.ai/v1/messages \
  -H "x-api-key: $API_KEY" \
  -H "anthropic-version: 2025-10-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-4-5-20250929",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Hello, world"}
    ]
  }'
{
  "code": 200,
  "data": {
    "id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
    "type": "message",
    "role": "assistant",
    "content": [
      {
        "type": "text",
        "text": "Hello! I'm Claude. Nice to meet you."
      }
    ],
    "model": "claude-sonnet-4-5-20250929",
    "stop_reason": "end_turn",
    "stop_sequence": null,
    "usage": {
      "input_tokens": 12,
      "output_tokens": 18
    }
  }
}

Autorisierung

x-api-key
string
erforderlich
API-Key für die AuthentifizierungBesuchen Sie die Seite zur API-Key-Verwaltung, um Ihren API-Key zu erhaltenIm Anfrage-Header hinzufügen:
x-api-key: YOUR_API_KEY
anthropic-version
string
erforderlich
API-VersionGibt die zu verwendende Version der Claude API anBeispiel: 2025-10-01

Body

model
string
Standard:"claude-haiku-4-5-20251001"
erforderlich
Modellname
  • claude-haiku-4-5-20251001 – Claude 4.5, Version mit schneller Antwort
  • claude-sonnet-4-5-20250929 – Claude 4.5, ausgewogene Version
  • claude-opus-4-1-20250805 – leistungsstärkstes Claude 4.1 Flaggschiff-Modell
  • claude-opus-4-1-20250805-thinking – Claude 4.1 Opus, Version mit tiefem Denken
  • claude-sonnet-4-5-20250929-thinking – Claude 4.5 Sonnet, Version mit tiefem Denken
messages
array
erforderlich
Liste von NachrichtenArray von Nachrichten, auf deren Grundlage das Modell die nächste Antwort generiert. Jede Nachricht enthält die Felder role und content.💡 Schnellausfüllen (Try-it-Bereich):
  1. Klicken Sie auf „+ Add an item”, um eine Nachricht hinzuzufügen
  2. Eingabe role: user (Benutzernachricht) oder assistant (KI-Antwort, für Mehrfach-Dialoge)
  3. Eingabe content: der Text Ihrer Nachricht
Einzelne Benutzernachricht:
[{"role": "user", "content": "Hello, Claude"}]
Mehrfach-Dialog:
[
  {"role": "user", "content": "Hello there."},
  {"role": "assistant", "content": "Hi, I'm Claude. How can I help you?"},
  {"role": "user", "content": "Can you explain LLMs in plain English?"}
]
Vorbefüllte Assistant-Antwort:
[
  {"role": "user", "content": "What's the Greek name for Sun? (A) Sol (B) Helios (C) Sun"},
  {"role": "assistant", "content": "The best answer is ("}
]
max_tokens
integer
Maximale Anzahl zu generierender TokensMaximale Anzahl an Tokens, bevor die Generierung stoppt. Das Modell kann bereits vor Erreichen dieser Grenze stoppen.Verschiedene Modelle haben unterschiedliche Maximalwerte. Minimum: 1
system
string | array
SystemanweisungSystemanweisungen legen Claudes Rolle, Persönlichkeit, Ziele und Anweisungen fest.String-Format:
{
  "system": "You are a professional Python programming tutor"
}
Strukturiertes Format:
{
  "system": [
    {
      "type": "text",
      "text": "You are a professional Python programming tutor"
    }
  ]
}
temperature
number
Temperatur-Parameter, Bereich 0–1Steuert die Zufälligkeit der Ausgabe:
  • Niedrige Werte (z. B. 0.2): deterministischer, konservativer
  • Hohe Werte (z. B. 0.8): zufälliger, kreativer
Standard: 1.0
top_p
number
Nucleus-Sampling-Parameter, Bereich 0–1Verwendet Nucleus-Sampling. Es wird empfohlen, entweder temperature oder top_p zu verwenden, nicht beides.Standard: 1.0
top_k
integer
Top-K-SamplingSampling nur aus den Top-K-Optionen, entfernt „long tail”-Antworten mit niedriger Wahrscheinlichkeit.Nur für fortgeschrittene Anwendungsfälle empfohlen.
stream
boolean
Streaming aktivierenBei true werden Server-Sent Events (SSE) zur Streaming-Übertragung der Antworten verwendet.Standard: false
stop_sequences
array
Stopp-SequenzenBenutzerdefinierte Textsequenzen, bei denen das Modell die Generierung stoppt.Maximal 4 Sequenzen.Beispiel: ["\n\nHuman:", "\n\nAssistant:"]
metadata
object
MetadatenMetadaten-Objekt für die Anfrage.Enthält:
  • user_id: Benutzer-Identifikator
tools
array
Tool-DefinitionenListe der Tools, die das Modell zur Erledigung von Aufgaben verwenden kann.Beispiel für ein Funktions-Tool:
{
  "tools": [
    {
      "name": "get_weather",
      "description": "Get the current weather in a given location",
      "input_schema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string",
            "description": "The city and state, e.g. San Francisco, CA"
          },
          "unit": {
            "type": "string",
            "enum": ["celsius", "fahrenheit"],
            "description": "Temperature unit"
          }
        },
        "required": ["location"]
      }
    }
  ]
}
Unterstützte Tool-Typen:
  • Benutzerdefinierte Funktions-Tools
  • Computer-Use-Tool (computer_20241022)
  • Texteditor-Tool (text_editor_20241022)
  • Bash-Tool (bash_20241022)
tool_choice
object
Tool-AuswahlstrategieSteuert, wie das Modell Tools verwendet:
  • {"type": "auto"}: automatische Entscheidung (Standard)
  • {"type": "any"}: muss ein Tool verwenden
  • {"type": "tool", "name": "tool_name"}: spezifisches Tool verwenden

Response

id
string
Eindeutiger Nachrichten-IdentifikatorBeispiel: "msg_013Zva2CMHLNnXjNJJKqJ2EF"
type
string
ObjekttypImmer "message"
role
string
RolleImmer "assistant"
content
array
Array von Content-BlöckenVom Modell generierter Inhalt als Array von Content-Blöcken.Textinhalt:
[{"type": "text", "text": "Hello! I'm Claude."}]
Tool-Nutzung:
[
  {
    "type": "tool_use",
    "id": "toolu_01A09q90qw90lq917835lq9",
    "name": "get_weather",
    "input": {"location": "San Francisco, CA", "unit": "celsius"}
  }
]
Content-Typen:
  • text: Textinhalt
  • tool_use: Tool-Aufruf
model
string
Das Modell, das die Anfrage bearbeitet hatBeispiel: "claude-sonnet-4-5-20250929"
stop_reason
string
Stopp-GrundMögliche Werte:
  • end_turn: natürliche Beendigung
  • max_tokens: maximale Token-Anzahl erreicht
  • stop_sequence: Stopp-Sequenz erreicht
  • tool_use: Tool aufgerufen
stop_sequence
string | null
Ausgelöste Stopp-SequenzDie generierte Stopp-Sequenz, falls vorhanden; andernfalls null
usage
object
Statistik zur Token-Nutzung

Anwendungsbeispiele

Einfacher Dialog

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.apimart.ai"
)

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Explain quantum computing basics"}
    ]
)

print(message.content[0].text)

Mehrfach-Dialog

messages = [
    {"role": "user", "content": "What is machine learning?"},
    {"role": "assistant", "content": "Machine learning is a branch of AI..."},
    {"role": "user", "content": "Can you give a practical example?"}
]

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=messages
)

Verwendung von Systemanweisungen

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    system="You are a senior Python developer expert in code review and optimization.",
    messages=[
        {"role": "user", "content": "How to optimize this code?\n\n[code]"}
    ]
)

Streaming-Antwort

with client.messages.stream(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Write a short essay about AI"}
    ]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

Tool-Nutzung

tools = [
    {
        "name": "get_stock_price",
        "description": "Get real-time stock price",
        "input_schema": {
            "type": "object",
            "properties": {
                "ticker": {
                    "type": "string",
                    "description": "Stock ticker symbol, e.g., AAPL"
                }
            },
            "required": ["ticker"]
        }
    }
]

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    tools=tools,
    messages=[
        {"role": "user", "content": "What's Tesla's stock price?"}
    ]
)

# Handle tool calls
if message.stop_reason == "tool_use":
    tool_use = next(block for block in message.content if block.type == "tool_use")
    print(f"Calling tool: {tool_use.name}")
    print(f"Arguments: {tool_use.input}")

Bildverständnis

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "url",
                        "url": "https://example.com/image.jpg"
                    }
                },
                {
                    "type": "text",
                    "text": "Describe this image"
                }
            ]
        }
    ]
)

Bild im Base64-Format

import base64

with open("image.jpg", "rb") as image_file:
    image_data = base64.b64encode(image_file.read()).decode("utf-8")

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/jpeg",
                        "data": image_data
                    }
                },
                {
                    "type": "text",
                    "text": "Analyze this image"
                }
            ]
        }
    ]
)

Best Practices

1. Prompt Engineering

Klare Rollendefinition:
system = """You are an experienced data scientist specializing in:
- Statistical analysis and data visualization
- Machine learning model development
- Python and R programming
Provide professional, accurate advice."""
Strukturierte Ausgabe:
message = "Please return the analysis results in JSON format with summary, key_findings, and recommendations fields."

2. Fehlerbehandlung

from anthropic import APIError, RateLimitError

try:
    message = client.messages.create(
        model="claude-sonnet-4-5-20250929",
        max_tokens=1024,
        messages=[{"role": "user", "content": "Hello"}]
    )
except RateLimitError:
    print("Rate limit exceeded, please retry later")
except APIError as e:
    print(f"API error: {e}")

3. Token-Optimierung

# Use shorter prompts
messages = [
    {"role": "user", "content": "Summarize key points:\n\n[long text]"}
]

# Limit output length
message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=500,  # Limit output
    messages=messages
)

4. Vorbefüllung von Antworten

# Guide model to specific format
messages = [
    {"role": "user", "content": "List 5 Python best practices"},
    {"role": "assistant", "content": "Here are 5 Python best practices:\n\n1."}
]

message = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=messages
)

Verarbeitung von Streaming-Antworten

Streaming in Python

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.apimart.ai"
)

with client.messages.stream(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Write a Python decorator example"}
    ]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

Streaming in JavaScript

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({
  apiKey: process.env.API_KEY,
  baseURL: 'https://api.apimart.ai'
});

const stream = await client.messages.stream({
  model: 'claude-sonnet-4-5-20250929',
  max_tokens: 1024,
  messages: [
    { role: 'user', content: 'Write a React component example' }
  ]
});

for await (const chunk of stream) {
  if (chunk.type === 'content_block_delta' && 
      chunk.delta.type === 'text_delta') {
    process.stdout.write(chunk.delta.text);
  }
}

Wichtige Hinweise

  1. API-Key-Sicherheit:
    • Speichern Sie API-Keys in Umgebungsvariablen
    • Schreiben Sie Keys niemals fest in den Quellcode
    • Rotieren Sie Keys regelmäßig
  2. Rate-Limiting:
    • Beachten Sie die API-Rate-Limits
    • Implementieren Sie Retry-Mechanismen
    • Verwenden Sie exponentielles Backoff
  3. Token-Verwaltung:
    • Überwachen Sie die Token-Nutzung
    • Optimieren Sie die Prompt-Länge
    • Verwenden Sie passende max_tokens-Werte
  4. Modellauswahl:
    • Opus: komplexe Aufgaben, die tiefes Denken erfordern
    • Sonnet: ausgewogene Leistung und Kosten
    • Haiku: schnelle Antwort, einfache Aufgaben
  5. Inhaltsfilterung:
    • Validieren Sie Benutzereingaben
    • Filtern Sie sensible Informationen
    • Implementieren Sie Inhaltsmoderation