Skip to main content
API reference sections

Schema

SendTurnRequest

Type object

Shape

FieldTypeDescription
operation_idrequiredstring
chat_idrequiredChatId

ChatId - a client-minted UUID v4, never derived from content or location.

surfacerequiredAiSurface
markdownrequiredstring
explicit_refsarray of ContextRef

Default []

reasoning_overrideReasoningChoice or null
web_searchboolean
system_prompt_overridestring or null

Debug-only, per-request replacement for Koru's bundled system prompt. Empty or omitted keeps the versioned bundled prompt.

replace_pinned_documentsboolean

When true, existing pinned documents are ignored and only the explicit refs are used as context for this turn. Used by the contextual AI pane, where the current document should replace prior context.

attachment_idsarray of ChatAttachmentId

Attachments already stored for this chat and not yet sent, in the order they go with the message. Only an agent chat takes any.

answersNextMessageAnswers or null

A local agent's questions answered by this message (koru-ai D108): a set the agent asked in its reply and moved on from, whose answers go to it as the person's next message. The message is the answers alone - markdown, explicit_refs and attachment_ids empty - and is recorded as no message of the person's: the answers are read on the set's card, and the agent's reply follows the one that asked. user_message_id in the answer is the message the asking reply answered. A set that can no longer be answered is refused (questions_closed).

skillsarray of string

The skills the person picked (koru-ai D121), by the name a local agent lists each under (POST /v1/ai/providers/{provider}/ commands), in the order they appear; markdown says $name where each was. The agent is told each by name beside the text; one it no longer lists is left out, and the text goes as typed. Only an agent chat takes any. Not stored: the message keeps its $name text.

Example
{
  "operation_id": "string",
  "chat_id": "00000000-0000-4000-8000-000000000000",
  "surface": "standalone",
  "markdown": "string",
  "explicit_refs": [],
  "reasoning_override": "default",
  "web_search": false,
  "system_prompt_override": "string",
  "replace_pinned_documents": false,
  "attachment_ids": [
    "00000000-0000-4000-8000-000000000000"
  ],
  "answers": {
    "invocation": {},
    "answers": [
      {
        "question_id": "string",
        "value": {
          "label": "string",
          "kind": "option"
        }
      }
    ]
  },
  "skills": [
    "string"
  ]
}

The contract has no example values, so example bodies are generated from each schema: every field is shown with a placeholder of its type.

Used by

Generated from contract version 1. Last updated .

Privacy choices

Choose which optional tools Koru may use on this site. Your choice is saved in a cookie in this browser for 12 months. Privacy policy

Privacy choices

Keep you signed in, protect forms and remember your language and this choice.

Always on

PostHog and Google Analytics 4 measure page views and actions such as downloads, using cookies or local storage.

PostHog records how pages are used, with form inputs masked and private pages excluded. Needs Analytics.

Ahrefs Web Analytics measures visits and where they come from, and Google Ads measures whether our ads led to a visit or download.