Messages (format Anthropic)

POST /v1/messages mengikuti format Messages Anthropic, cocok untuk SDK Anthropic dan alat seperti Claude Code.

Permintaan

Body
{
  "model": "MODEL_ID",
  "max_tokens": 500,
  "system": "...",
  "messages": [{"role": "user", "content": "..."}],
  "stream": false
}
ParameterWajibKeterangan
modelyaID dari GET /v1/models.
max_tokensyaBatas token keluaran. Juga menentukan tahanan saldo.
messagesya1 sampai 5.000 pesan.
system, tools, temperature, stop_sequences, dan lainnyatidakDiteruskan apa adanya. Dukungannya bergantung model.
streamtidaktrue untuk SSE gaya Anthropic.

Key boleh dikirim lewat x-api-key atau Authorization: Bearer. Header anthropic-version dan anthropic-beta diteruskan ke penyedia.

Contoh

curl https://api.markas.ai.id/v1/messages \
  -H "x-api-key: $MARKASAI_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MODEL_ID",
    "max_tokens": 300,
    "messages": [{"role": "user", "content": "Apa itu API?"}]
  }'
import os
import anthropic

client = anthropic.Anthropic(base_url="https://api.markas.ai.id", api_key=os.environ["MARKASAI_API_KEY"])

msg = client.messages.create(
    model="MODEL_ID",
    max_tokens=300,
    messages=[{"role": "user", "content": "Apa itu API?"}],
)
print(msg.content[0].text)
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ baseURL: "https://api.markas.ai.id", apiKey: process.env.MARKASAI_API_KEY });

const msg = await client.messages.create({
  model: "MODEL_ID",
  max_tokens: 300,
  messages: [{ role: "user", content: "Apa itu API?" }],
});
console.log(msg.content);

Respons

200 OK
{
  "id": "msg_...",
  "type": "message",
  "role": "assistant",
  "model": "MODEL_ID",
  "content": [{"type": "text", "text": "..."}],
  "stop_reason": "end_turn",
  "usage": {"input_tokens": 20, "output_tokens": 120}
}

Dengan "stream": true, event yang dikirim mengikuti Anthropic: message_start, content_block_delta, message_delta, dan message_stop.

Prompt caching

Tandai blok yang ingin disimpan dengan cache_control. Penanda ini diteruskan apa adanya, dan token yang dibaca dari cache ditagih dengan harga cache model (lihat Penagihan).

Body dengan cache_control
{
  "model": "MODEL_ID",
  "max_tokens": 500,
  "system": [
    {"type": "text", "text": "DOKUMEN_PANJANG...", "cache_control": {"type": "ephemeral"}}
  ],
  "messages": [{"role": "user", "content": "..."}]
}

Batasan

  • Endpoint pembantu seperti /v1/messages/count_tokens tidak tersedia.
  • Field khusus Claude yang tidak dikenal model lain dapat ditolak 400. Pada Claude Code, set CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1.