Braize

API & MCP reference

Every REST endpoint and MCP tool available in the Braize API, with request and response schemas — always in sync with the live API.

Every endpoint, tool, and schema below reflects the Braize API exactly as it runs today. The API evolves additively: new fields and tools are added, but existing ones never change or disappear — so your integration keeps working.

REST API

REST API version 2026-09-01. New fields and endpoints are only ever added — existing ones never change or disappear.

Ask questions

POST/v1/query

Ask a question against the workspace knowledge base

Parameters

FieldTypeRequiredDescription
Braize-Version (header)string (date)NoOverride the workspace's pinned contract version.

Request body: QueryRequest

Responses

  • 200 — Answer with citationsQueryResponseEnvelope
  • 503 — Answer generation temporarily unavailable (upstream inference provider outage). RFC 9457 Problem with type https://braize.app/errors/generation-unavailable and a Retry-After header (seconds). Problem
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem

Agent-native retrieval

POST/v1/retrieve

Retrieve ranked, cited passages (no answer generation; for agents/MCP)

Parameters

FieldTypeRequiredDescription
Braize-Version (header)string (date)NoOverride the workspace's pinned contract version.

Request body: RetrieveRequest

Responses

OpenAI-compatible

POST/v1/chat/completions

OpenAI-compatible chat completion over the workspace knowledge base

Thin adapter over the same query pipeline as POST /query — same retrieval, same ACL pre-filter, same grounding, same metering, same request logs. Stateless like OpenAI (the client resends history each call); each call opens a fresh conversation whose id rides in `braize`. Unknown request fields (n, tools, max_tokens, …) are accepted and ignored (must-ignore). Errors are OpenAI-shaped ChatCompletionError objects, NOT RFC 9457 — see the contract-stance note above.

Request body: ChatCompletionRequest

Responses

  • 200 — Chat completion ("chat.completion"). With "stream": true the response is text/event-stream in OpenAI data-only SSE framing (no `event:` names): every frame's `data:` payload is a ChatCompletionChunk; the final chunk carries finish_reason, usage, and the `braize` extension; the stream terminates with `data: [DONE]`. ChatCompletionResponse
  • default — OpenAI-shaped error object (NOT RFC 9457 — owner-approved deviation confined to this compatibility surface). ChatCompletionError

Documents

GET/v1/documents

List documents in the workspace knowledge base

Parameters

FieldTypeRequiredDescription
limit (query)integerNoMaximum rows returned for this page (newest first).
cursor (query)stringNoOPAQUE forward page token from a prior response's `next_cursor` (AIP-158). Clients MUST treat it as opaque and never parse it.
q (query)stringNoCase-insensitive substring search over title, upload filename/URL, source name, and class. Spans the whole corpus, not just one page.
source_id (query)string (uuid)NoOnly documents belonging to this source.
sync_status (query)stringNoOnly documents whose sync lifecycle state matches. Current values: queued, downloading, processing, indexed, failed. New values are additive forever; an unknown value matches nothing (empty page).

Responses

POST/v1/documents

Ingest a document via multipart upload (≤ 100MB)

Parameters

FieldTypeRequiredDescription
mode (query)stringNoLegacy — ignored. Ingestion is always asynchronous: the server enqueues and returns 202 immediately; poll GET /documents/{id}.

Request body: object

Responses

  • 200 — Ingest result (synchronous path)IngestResultEnvelope
  • 202 — Ingestion accepted (async path) — parse/embed happen out of bandIngestPendingEnvelope
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
POST/v1/documents/url

Ingest a document from a URL

Parameters

FieldTypeRequiredDescription
mode (query)stringNoLegacy — ignored. Ingestion is always asynchronous: the server fetches the page, enqueues, and returns 202 immediately.

Request body: UrlIngestRequest

Responses

  • 200 — Ingest result (synchronous path)IngestResultEnvelope
  • 202 — Ingestion accepted (async path) - parse/embed happen out of bandIngestPendingEnvelope
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
GET/v1/documents/{document_id}

Document detail with version history

Parameters

FieldTypeRequiredDescription
document_id (path)string (uuid)Yes

Responses

DELETE/v1/documents/{document_id}

Soft-delete a document and enqueue a content purge

Parameters

FieldTypeRequiredDescription
document_id (path)string (uuid)Yes

Responses

POST/v1/documents/{document_id}/refresh

Re-ingest a URL-backed document so its answers reflect the latest content

Parameters

FieldTypeRequiredDescription
document_id (path)string (uuid)Yes

Responses

  • 200 — Ingest result (a new version of the document)IngestResultEnvelope
  • 202 — Refresh accepted — re-ingest happens out of bandIngestPendingEnvelope
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem

Sources & connectors

GET/v1/sources

List connectors / sources in the workspace

Responses

POST/v1/sources

Create a draft connector source (wizard first step)

Request body: CreateSourceRequest

Responses

  • 201 — Draft source createdSourceDraftEnvelope
  • 400 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • 403 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
POST/v1/sources/{source_id}/activate

Activate a draft connector source (wizard final step)

Parameters

FieldTypeRequiredDescription
source_id (path)string (uuid)Yes

Responses

  • 200 — Source activated (or already active — idempotent)ActivateSourceResponseEnvelope
  • 400 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • 403 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • 404 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
GET/v1/sources/{source_id}

One source's summary — health, counts, live sync progress

Parameters

FieldTypeRequiredDescription
source_id (path)string (uuid)Yes

Responses

  • 200 — Source summarySourceSummaryEnvelope
  • 404 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
DELETE/v1/sources/{source_id}

Disconnect a source and remove all data it indexed

Parameters

FieldTypeRequiredDescription
source_id (path)string (uuid)Yes

Responses

  • 200 — Source disconnected (or already archived — idempotent)DisconnectSourceResponseEnvelope
  • 403 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • 404 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
POST/v1/sources/{source_id}/sync

Trigger an on-demand sync for a connected source

Parameters

FieldTypeRequiredDescription
source_id (path)string (uuid)Yes

Responses

  • 202 — Sync requested — poll GET /sources for progress.TriggerSyncResponseEnvelope
  • 400 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • 403 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • 404 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • 502 — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
GET/v1/connectors

Connector catalog — every connector kind, its capabilities, ACL fidelity, and plan availability

Responses

  • 200 — Connector catalog (the manifest the dashboard renders from)ConnectorCatalogEnvelope
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem

Conversations

GET/v1/conversations/{conversation_id}

Conversation message history

Parameters

FieldTypeRequiredDescription
conversation_id (path)string (uuid)Yes

Responses

Request log

GET/v1/requests

List recent API requests recorded for the workspace (admin scope)

Parameters

FieldTypeRequiredDescription
status (query)stringNofailed = only requests with status_code >= 400. Servers treat unknown values as the default behavior (all).
limit (query)integerNoMaximum number of rows returned (newest first).

Responses

  • 200 — Request log list (newest first)RequestLogListEnvelope
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem

Health

GET/v1/healthz

Content-free liveness probe

Responses

Freshness

GET/v1/freshness/report

Live freshness aggregate over the documents visible to the caller

Parameters

FieldTypeRequiredDescription
Braize-Version (header)string (date)NoOverride the workspace's pinned contract version.

Responses

  • 200 — Freshness report scoped to the caller's ACL-visible documentsFreshnessReportEnvelope
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem

Memory

GET/v1/memory

Search this caller's own memories for one agent (isolated per agent+principal)

Parameters

FieldTypeRequiredDescription
Braize-Version (header)string (date)NoOverride the workspace's pinned contract version.
agent_id (query)stringYesWhich agent's memory to search (the isolation boundary, with the caller's principal).
conversation_id (query)string (uuid)NoNarrow to one conversation's memories; omitted searches all of this agent's memories for the caller.
q (query)stringNoCase-insensitive substring filter over memory content.
limit (query)integerNo

Responses

  • 200 — Active (non-invalidated) memories, newest firstAgentMemoryListEnvelope
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem
POST/v1/memory

Write one new agent memory (append-only; isolated per agent+principal)

Parameters

FieldTypeRequiredDescription
Braize-Version (header)string (date)NoOverride the workspace's pinned contract version.

Request body: AppendMemoryRequest

Responses

  • 201 — The written memoryAgentMemoryEnvelope
  • default — RFC 9457 Problem Details. `type` URIs are stable forever.Problem

MCP tools

Tool and parameter names are permanent — new capabilities always arrive as new tools, so your integrations keep working.

search_knowledge

Permission-aware hybrid search over the workspace knowledge base. Returns ranked, cited PASSAGES (the data) so the calling agent synthesizes its own answer — no answer generation. Thin adapter over POST /v1/retrieve; ACL pre-filtered to the caller's principal. For a generated answer in a human channel, use the REST /v1/query surface instead.

Input

FieldTypeRequiredDescription
textstringYesThe search query in any supported language.
top_kintegerNoMax passages to return (server caps).

Output

FieldTypeRequiredDescription
passagesarray of objectYesRanked, cited passages. Passage TEXT and provenance only — never embeddings.
get_document

Fetch the full detail of one document in the workspace by id — version history, parse status, freshness — permission-aware. Thin adapter over GET /v1/documents/{document_id}.

Input

FieldTypeRequiredDescription
document_idstringNoId of the document to fetch. Optional in the schema (additive); required at call time — a missing id is a tool error.

Output

FieldTypeRequiredDescription
idstringNo
titlestringNo
urlstringNo
doc_classstringNo
parse_statusstringNopending | ok | failed | quarantined — open string, tolerate unknown values.
chunk_countintegerNo
freshness_scorenumberNo
versionsarray of objectNo
list_sources

List the connectors / sources connected to the workspace with sync health and indexed-document counts. Thin adapter over GET /v1/sources.

Output

FieldTypeRequiredDescription
sourcesarray of objectNoConnected sources. Sync health + indexed-doc counts only.
get_freshness_report

Live freshness aggregate over the documents visible to the caller (bucket counts + the stalest documents) — permission-aware, ACL-scope-cohort only, never workspace-wide. Thin adapter over GET /v1/freshness/report.

Output

FieldTypeRequiredDescription
as_ofstringYes
scopestringYespublic | principal — open string, tolerate unknown values.
visible_documentsintegerYes
scored_documentsintegerYes
mean_scorenumberNo
bucketsarray of objectYes
stale_documentsarray of objectYesThe stalest scored documents, lowest score first.

Schemas

QueryRequest

FieldTypeRequiredDescription
textstringYes
conversation_idstring (uuid)No
channel_hintstringNo
streambooleanNo
system_promptstringNoOperator instructions appended to (never replacing) Braize's grounded system prompt. Grounding, citation, and numeric-fidelity rules always win.
modelstringNoModel alias to start generation with. Open string — values today: chat-default | chat-strong | chat-fast; new aliases are additive forever. Unknown aliases fail with 422 https://braize.app/errors/invalid-request. Braize may still escalate (complex route / refusal retry).
temperaturenumberNoSampling temperature for the answer generation call. Default 0.
top_kintegerNoMax context chunks assembled for the answer (context_top_k). Default 12.
answer_modestringNoSpeed/accuracy trade-off for this answer. Open string — recognized values today: fast | balanced | thorough; new modes are additive forever, and servers treat unknown values as the default (balanced). fast = quickest, more concise answer with lighter quality checks (no groundedness verdict fields, smaller context) — facts are still cited. balanced (default) = today's behavior, byte-identical. thorough = extra time for the most accurate answer: strongest starting model, larger context, extra retry budget, full groundedness checking. An explicit model/temperature/ top_k override beats the mode's preset for that knob. fast and thorough bypass the answer cache like other overrides; balanced alone stays cache-eligible (it IS the default).

QueryResponseEnvelope

FieldTypeRequiredDescription
dataAnswerYes
metaMetaYes

Meta

FieldTypeRequiredDescription
request_idstringYes
braize_versionstring (date)Yes
degradedbooleanNo

Answer

FieldTypeRequiredDescription
conversation_idstring (uuid)Yes
confidencenumberYes
blocksarray of ContentBlockYesEvidence/content blocks. Native `/v1/query` responses return citation/evidence blocks by default; generated prose (`type: text`) is included only when the workspace response setting `include_generated_answers` is enabled. Clients must still tolerate text blocks because they remain part of the additive content-block union and are used by opted-in workspaces.

TextBlock

FieldTypeRequiredDescription
type"text" (constant)Yes
textstringYes

RetrieveRequest

FieldTypeRequiredDescription
textstringYes
top_kintegerNoMax passages to return (after rerank). Default 25 (the agent surface has no generation cost, so it returns a wider set than the generated-answer context).

RetrieveResponseEnvelope

FieldTypeRequiredDescription
dataRetrieveResultYes
metaMetaYes

RetrieveResult

FieldTypeRequiredDescription
passagesarray of PassageYes

Passage

FieldTypeRequiredDescription
textstringYes
scorenumberYesRelevance in [0,1] (normalized rerank score; higher = more relevant).
document_idstring (uuid)Yes
document_versionstringNo
titlestringYes
source_refstringNoSource document reference (upload filename / connector ref).
heading_patharray of stringNoAncestor headings locating the passage in its document.
context_prefixstringNoSituating sentence the passage was indexed with (helps interpret it).

CitationBlock

FieldTypeRequiredDescription
type"citation" (constant)Yes
document_idstring (uuid)Yes
document_versionstringNo
titlestringYes
urlstring (uri)No
excerptstringNo
markerintegerNo

Problem

FieldTypeRequiredDescription
typestring (uri)Yes
titlestringYes
statusintegerYes
detailstringNo
instancestringNo

SseStream

Server-Sent Events stream. Each event's `data:` payload conforms to the schema named by its `event:` field — answer.delta → SseAnswerDelta, answer.sources → SseAnswerSources, answer.citation → SseAnswerCitation, answer.done → SseAnswerDone, error → SseError.

SseAnswerDelta

FieldTypeRequiredDescription
textstringYes

SseAnswerCitation

FieldTypeRequiredDescription
blockCitationBlockYes
anchor_offsetintegerNo

SseAnswerSources

FieldTypeRequiredDescription
sourcesarray of CitationBlockYes

SseAnswerDone

FieldTypeRequiredDescription
conversation_idstring (uuid)Yes
confidencenumberYes
groundedbooleanNo
groundednessnumberNo
metaMetaNo

SseError

FieldTypeRequiredDescription
problemProblemYes

UrlIngestRequest

FieldTypeRequiredDescription
urlstring (uri)Yes

IngestResult

FieldTypeRequiredDescription
document_idstring (uuid)Yes
version_idstring (uuid)Yes
chunksintegerYes
quarantinedbooleanYes

IngestResultEnvelope

FieldTypeRequiredDescription
dataIngestResultYes
metaMetaYes

IngestPending

FieldTypeRequiredDescription
document_idstring (uuid)Yes
version_idstring (uuid)Yes
statusstringYes'pending' — poll GET /documents/{document_id} for parse_status

IngestPendingEnvelope

FieldTypeRequiredDescription
dataIngestPendingYes
metaMetaYes

DocumentSummary

FieldTypeRequiredDescription
idstring (uuid)Yes
titlestringNo
filenameobjectNo
doc_classstringNo
parse_statusstringNopending | ok | failed | quarantined ('pending' = async ingest in flight). Open string — clients MUST tolerate unknown values.
chunk_countintegerYes
freshness_scorenumberNo
source_idobjectNo
source_typeobjectNo
source_display_nameobjectNo
sync_statusobjectNoqueued | downloading | processing | indexed | failed — the per-document sync lifecycle. Null for documents that predate the sync-status column (legacy rows). Open string — clients MUST tolerate unknown values.
sync_errorobjectNo
byte_sizeobjectNo
mimeobjectNo
updated_atobjectNo

DocumentList

FieldTypeRequiredDescription
documentsarray of DocumentSummaryYes
next_cursorobjectNo
totalobjectNo

DocumentListEnvelope

FieldTypeRequiredDescription
dataDocumentListYes
metaMetaYes

DocumentVersion

FieldTypeRequiredDescription
idstring (uuid)Yes
versionintegerYes
byte_sizeintegerNo
mimestringNo
created_atstring (date-time)Yes
purged_atstring (date-time)No

DocumentDetail

FieldTypeRequiredDescription
idstring (uuid)Yes
titlestringNo
filenameobjectNo
urlstring (uri)No
doc_classstringNo
parse_statusstringNopending | ok | failed | quarantined ('pending' = async ingest in flight). Open string — clients MUST tolerate unknown values.
chunk_countintegerYes
freshness_scorenumberNo
source_idobjectNo
source_typeobjectNo
source_display_nameobjectNo
sync_statusobjectNo
sync_errorobjectNo
byte_sizeobjectNo
mimeobjectNo
updated_atobjectNo
deleted_atstring (date-time)No
versionsarray of DocumentVersionYes

DocumentDetailEnvelope

FieldTypeRequiredDescription
dataDocumentDetailYes
metaMetaYes

DeleteResult

FieldTypeRequiredDescription
document_idstring (uuid)Yes
deletedbooleanYes
purge_enqueuedbooleanYes

DeleteResultEnvelope

FieldTypeRequiredDescription
dataDeleteResultYes
metaMetaYes

AppendMemoryRequest

FieldTypeRequiredDescription
agent_idstringYesWhich agent is writing this memory (part of the isolation boundary, with the caller's principal).
contentstringYes
conversation_idstring (uuid)NoOptional — scopes this memory to one conversation instead of the whole agent+principal.
source_doc_idsarray of string (uuid)NoProvenance when this memory was derived from retrieved documents; empty for a purely agent-authored note.

AgentMemory

FieldTypeRequiredDescription
idstring (uuid)Yes
agent_idstringYes
conversation_idobjectNo
contentstringYes
source_doc_idsarray of string (uuid)No
invalidated_atobjectNoSet only once this memory has been superseded by a consolidation — never deleted.
created_atstring (date-time)Yes

AgentMemoryEnvelope

FieldTypeRequiredDescription
dataAgentMemoryYes
metaMetaYes

AgentMemoryList

FieldTypeRequiredDescription
memoriesarray of AgentMemoryYes

AgentMemoryListEnvelope

FieldTypeRequiredDescription
dataAgentMemoryListYes
metaMetaYes

FreshnessBucket

FieldTypeRequiredDescription
bucketstringYesfresh | aging | stale | unknown — open string.
countintegerYes

DocumentFreshnessSummary

FieldTypeRequiredDescription
idstring (uuid)Yes
titleobjectNo
doc_classobjectNo
freshness_scoreobjectNo
updated_atobjectNo

FreshnessReport

FieldTypeRequiredDescription
as_ofstring (date-time)Yes
scopestringYespublic | principal — whether the caller asserted an end-user identity (X-Braize-Principal) or was resolved to the workspace-public group. Open string, tolerate unknown values.
visible_documentsintegerYesCount of documents ACL-visible to the caller (the report's cohort).
scored_documentsintegerYesOf visible_documents, how many have a computable freshness score.
mean_scoreobjectNo
bucketsarray of FreshnessBucketYes
stale_documentsarray of DocumentFreshnessSummaryYesThe stalest scored documents, lowest score first (top 10).

FreshnessReportEnvelope

FieldTypeRequiredDescription
dataFreshnessReportYes
metaMetaYes

CreateSourceRequest

FieldTypeRequiredDescription
connector_kindstringYesOne of the known connector kinds (see GET /connectors catalog). Immortal — the kind is stored on the source row and flows through the sync engine; changing it after creation is not supported.
display_namestringYesHuman-readable name for this source (e.g. "Marketing Drive"). The user can rename it later; this is the wizard's default label.
configobjectNoOptional partial configuration (e.g. pre-selected root folder). Validated against the connector's config_schema; unknown keys are rejected. Safe to omit — the wizard populates it on Screen 2.

SourceDraft

FieldTypeRequiredDescription
source_idstring (uuid)YesDurable ID for this source. Embedded in the OAuth state token so the callback can attach the credential to this exact draft. Also passed in wizard redirect URLs (?source_id=…) so the frontend can resume.
statestringYesCurrent wizard lifecycle state. Always "draft" on creation. Immutable string values (additive-only; clients must-ignore unknown states): draft | awaiting_credentials | validating | configuring | ready | active | paused | broken | disconnecting | archived
wizard_cursorstringNoKey of the wizard step the user last reached (matches setup_steps_v2[].key). Null on creation; set by the callback and PATCH calls.

ActivateSourceResponse

FieldTypeRequiredDescription
source_idstring (uuid)YesThe activated source ID.
statestringYesAlways 'active' on success.

ActivateSourceResponseEnvelope

FieldTypeRequiredDescription
dataActivateSourceResponseYes
metaMetaYes

DisconnectSourceResponse

FieldTypeRequiredDescription
source_idstring (uuid)YesThe disconnected source ID.
statestringYesAlways 'archived' after a successful disconnect (idempotent).
purge_enqueuedbooleanYesTrue when the source's indexed content was enqueued for the RTBF purge cascade (documents soft-deleted + purge_log rows written). False only when the source had no content to purge (e.g. a never-synced draft).

DisconnectSourceResponseEnvelope

FieldTypeRequiredDescription
dataDisconnectSourceResponseYes
metaMetaYes

SourceDraftEnvelope

FieldTypeRequiredDescription
dataSourceDraftYes
metaMetaYes

SourceSummary

FieldTypeRequiredDescription
idstring (uuid)Yes
typestringYes
display_namestringYes
healthstringYes
docs_indexedintegerNo
capabilitiesarray of stringNo
acl_fidelitystringNo
setup_statestringNo
last_indexed_atstring (date-time)No
failed_countintegerNo
sync_stateobjectNoPer-source sync progress: {"status":"syncing"} / {"status":"completed","upserted":N}
sync_progressone of: SyncProgress | nullNo
recent_runsobjectNo

SyncProgress

FieldTypeRequiredDescription
queuedintegerYes
downloadingintegerYes
processingintegerYes
indexedintegerYes
failedintegerYes

SyncRunSummary

FieldTypeRequiredDescription
started_atstring (date-time)Yes
finished_atstring (date-time)No
modestringYes
statusstringYes
docs_upsertedintegerNo
docs_deletedintegerNo
errorobjectNo

SourceList

FieldTypeRequiredDescription
sourcesarray of SourceSummaryYes

SourceSummaryEnvelope

FieldTypeRequiredDescription
dataSourceSummaryYes
metaMetaYes

TriggerSyncResponse

FieldTypeRequiredDescription
source_idstring (uuid)Yes
sync_requestedbooleanYes

TriggerSyncResponseEnvelope

FieldTypeRequiredDescription
dataTriggerSyncResponseYes
metaMetaYes

SourceListEnvelope

FieldTypeRequiredDescription
dataSourceListYes
metaMetaYes

SetupStepV2

One step in the connector wizard (framework §5.2). The `type` field is the immortal discriminator the wizard engine reads to decide which widget to render. Additional type-specific properties are added additively as OPTIONAL FLAT FIELDS on this same object (clients must-ignore unknown fields per api-design §4). CONSTRAINT: this schema is intentionally flat — never restructure to oneOf/ discriminatedUnion. Adding a oneOf branch removes the flat path, which is a breaking change for any client that already reads the flat fields.

FieldTypeRequiredDescription
typestringYesImmortal step-type token (never renamed; new types added additively): authenticate.oauth_flow | authenticate.enter_api_key | authenticate.enter_basic | authenticate.enter_token | authenticate.enter_webhook_secret | authenticate.none | set_permissions | configure_scope | preview | confirm
titlestringYesHuman-readable step label the wizard renders in the progress bar.
keystringYesUnique step identifier within this connector (wizard cursor / resume-from-step; never reused within a connector's step list).

ConnectorCatalogEntry

FieldTypeRequiredDescription
kindstringYes
display_namestringYes
statusstringYeslive | skeleton | broken — honest wiring state
authstringYesnone | api_key | oauth2
capabilitiesarray of stringYes
acl_fidelitystringYesconnector ACL-fidelity ladder (PRD §5.8)
min_planstringYescheapest plan that unlocks this connector
webhook_capablebooleanNo
delete_detectionbooleanNo
oauth_scopesarray of stringNo
subprocessorsarray of stringNo
setup_stepsarray of stringNo
setup_steps_v2array of SetupStepV2No

ConnectorCatalog

FieldTypeRequiredDescription
connectorsarray of ConnectorCatalogEntryYes

ConnectorCatalogEnvelope

FieldTypeRequiredDescription
dataConnectorCatalogYes
metaMetaYes

RequestLog

FieldTypeRequiredDescription
idstring (uuid)Yes
request_idstring (uuid)Yes
methodstringYes
pathstringYes
status_codeintegerYes
duration_msintegerYes
error_typeobjectNoRFC 9457 `type` URI of the failure (status_code >= 400 only)
error_titleobjectNo
error_detailobjectNo
created_atstring (date-time)Yes

RequestLogList

FieldTypeRequiredDescription
requestsarray of RequestLogYes

RequestLogListEnvelope

FieldTypeRequiredDescription
dataRequestLogListYes
metaMetaYes

ConversationMessage

FieldTypeRequiredDescription
rolestringYes
contentstringYes
created_atstring (date-time)Yes

ConversationHistory

FieldTypeRequiredDescription
conversation_idstring (uuid)Yes
messagesarray of ConversationMessageYes

ConversationHistoryEnvelope

FieldTypeRequiredDescription
dataConversationHistoryYes
metaMetaYes

ChatMessage

FieldTypeRequiredDescription
rolestringYes
contentstringYes

ChatCompletionRequest

FieldTypeRequiredDescription
modelstringYesBraize model alias (chat-default | chat-strong | chat-fast; new aliases additive forever). Unknown values fail with an OpenAI-shaped 404 model_not_found error.
messagesarray of ChatMessageYes
temperaturenumberNo
streambooleanNo
answer_modestringNoADDITIVE Braize extension (standard OpenAI SDKs may pass it via extra_body): the same speed/accuracy trade-off as QueryRequest's answer_mode — fast | balanced | thorough, open string, unknown values treated as balanced. Mapped through to the shared query pipeline; the explicit `model`/`temperature` fields of this request beat the mode's presets for those knobs.

ChatCompletionChoice

FieldTypeRequiredDescription
indexintegerYes
messageChatMessageYes
finish_reasonobjectYes

ChatCompletionUsage

Token counts estimated with the pipeline's token counter over the request messages and the answer text — an estimate, not vendor billing.

FieldTypeRequiredDescription
prompt_tokensintegerYes
completion_tokensintegerYes
total_tokensintegerYes

ChatCompletionResponse

FieldTypeRequiredDescription
idstringYes
objectstringYes
createdintegerYes
modelstringYes
choicesarray of ChatCompletionChoiceYes
usageChatCompletionUsageNo
braizeBraizeChatExtensionNo

ChatCompletionDelta

FieldTypeRequiredDescription
rolestringNo
contentstringNo

ChatCompletionChunkChoice

FieldTypeRequiredDescription
indexintegerYes
deltaChatCompletionDeltaYes
finish_reasonobjectNo

ChatCompletionChunk

FieldTypeRequiredDescription
idstringYes
objectstringYes
createdintegerYes
modelstringYes
choicesarray of ChatCompletionChunkChoiceYes
usageChatCompletionUsageNo
braizeBraizeChatExtensionNo

BraizeChatExtension

Braize vendor extension on chat completions: grounding verdict and the existing CitationBlock citations (one transformer, two surfaces). A KB miss is NOT an error — content carries the fallback message with finish_reason "stop", is_fallback true, and empty citations. A mid-stream failure surfaces as `error` (a stable RFC 9457 Problem object) on the final chunk, then `data: [DONE]`.

FieldTypeRequiredDescription
conversation_idstring (uuid)No
groundedbooleanNo
groundednessnumberNo
confidencenumberNo
is_fallbackbooleanNo
citationsarray of CitationBlockNo
errorProblemNo

ChatCompletionErrorDetail

FieldTypeRequiredDescription
messagestringYes
typestringYes
codeobjectNo
paramobjectNo

ChatCompletionError

FieldTypeRequiredDescription
errorChatCompletionErrorDetailYes