Messages
Send a conversation and get Kalle by Appmake's next message.
Base URLhttps://api.kalle.build/v1AuthBearer kalle_sk_…VersionKalle-Version: 2026-11-01
Create a message
modelstringRequiredThe model ID or snapshot, for example kalle-turbo-max. See Models.messagesarrayRequiredThe conversation so far. Each item has a role (user or assistant) and content, a string or a list of content blocks. The first and the last message are from user.max_tokensintegerRequiredThe most tokens the reply may use, up to the model's max output. The model may stop earlier.systemstringInstructions for the whole conversation, such as tone or rules. A list of text blocks also works.effortstringlow, medium, high, extra or max, within the levels the model allows. Defaults to the model's recommended effort. max needs the Pro plan. See Effort.temperaturenumberFrom 0 to 1. Lower gives more predictable wording. Ignored at high effort and above, where the model reasons first.stop_sequencesarrayUp to four strings that end the reply when the model writes them.streambooleanSend the reply as server-sent events. See Streaming.toolsarrayFunctions the model may ask you to run. See Tool use.tool_choiceobjectWhether the model must use a tool. See Tool use.metadataobjectYour own user_id, for your records. It is not stored and never used for training.POST/v1/messages
curl https://api.kalle.build/v1/messages \
-H "Authorization: Bearer $KALLE_API_KEY" \
-H "Kalle-Version: 2026-11-01" \
-H "Content-Type: application/json" \
-d '{
"model": "kalle-turbo-max",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Write a short welcome text for a yoga studio in Copenhagen."
}
]
}'The response
idstringThe message ID, starting with msg_.modelstringThe snapshot that answered, for example kalle-turbo-max-2026-11-01.contentarrayContent blocks. Text is in blocks with type: "text". Tool calls are in blocks with type: "tool_use".stop_reasonstringend_turn, max_tokens, tool_use, stop_sequence or refusal.usageobjectinput_tokens and output_tokens for billing. Output includes the reasoning tokens that effort adds.Multi-turn conversations
The API keeps no memory between calls. To continue a conversation, send the earlier messages again with the new one at the end, alternating user and assistant.
Conversation
"messages": [
{ "role": "user", "content": "Suggest a name for my yoga studio." },
{ "role": "assistant", "content": "How about Lotus Yoga?" },
{ "role": "user", "content": "Something warmer, please." }
]