Messages (format Anthropic)
POST /v1/messages mengikuti format Messages Anthropic, cocok untuk SDK Anthropic dan alat seperti Claude Code.
Permintaan
{
"model": "MODEL_ID",
"max_tokens": 500,
"system": "...",
"messages": [{"role": "user", "content": "..."}],
"stream": false
}
| Parameter | Wajib | Keterangan |
|---|---|---|
model | ya | ID dari GET /v1/models. |
max_tokens | ya | Batas token keluaran. Juga menentukan tahanan saldo. |
messages | ya | 1 sampai 5.000 pesan. |
system, tools, temperature, stop_sequences, dan lainnya | tidak | Diteruskan apa adanya. Dukungannya bergantung model. |
stream | tidak | true untuk SSE gaya Anthropic. |
Header
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
{
"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).
{
"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_tokenstidak tersedia. - Field khusus Claude yang tidak dikenal model lain dapat ditolak
400. Pada Claude Code, setCLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1.