API reference
10 endpoints, served at https://orbitwrite.com/api/v1. Each one lists the credentials it accepts, its parameters and every response it can give.
/api/v1/ai/assistantPOST/api/v1/ai/refinePOST/api/v1/ai/campaign-planPOST/api/v1/ai/campaign-namePOST/api/v1/ai/alt-textPOST/api/v1/ai/agentGET/api/v1/assistant/conversationsGET/api/v1/assistant/conversations/{id}DEL/api/v1/assistant/conversations/{id}POST/api/v1/assistant/conversations/{id}/created-postsStreams AI-generated text for one of the assistant panel's intents (refine, optimize, tone, translate, CTA, hashtags, promote a URL, generate, ideas). Scoped to the session's active workspace.
A signed-in session only. The Orbitwrite app calls this; an API key is refused.
intentstringRequired"refine""optimize_social"textstringRequiredBetween 1 and 25000 characters.
platformstringAt most 100 characters.
maxCharsPerPostintegerAt least 0.
accountIdstringAt least 1 character.
200stringThe generated text stream
curl -X POST "https://orbitwrite.com/api/v1/ai/assistant" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"intent": "refine",
"text": "string"
}'"string"Streams an edited version of the supplied post text for one of the refine palette's actions. The free-text custom action runs an abuse pre-flight (scope classifier + moderation). Scoped to the session's active workspace.
A signed-in session only. The Orbitwrite app calls this; an API key is refused.
promptstringRequiredBetween 1 and 25000 characters.
actionstringRequired"improve""grammar""spelling""punchier""shorten""expand""rewrite""announcement""structure""positive""split""poll""custom"platformstringAt most 100 characters.
maxCharsPerPostintegerAt least 0.
accountIdstringAt least 1 character.
fullContextstringAt most 25000 characters.
instructionstringAt most 500 characters.
variationintegerBetween 0 and 10.
200stringThe generated text stream
422ErrorCustom instruction refused by the scope guard
curl -X POST "https://orbitwrite.com/api/v1/ai/refine" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "string",
"action": "improve"
}'"string"Reads the article behind a campaign's source URL and breaks its content into count distinct post angles. Free-text sources return reason: "not_url" so the client can fall back to its template generator.
A signed-in session only. The Orbitwrite app calls this; an API key is refused.
sourcestringRequiredBetween 1 and 4000 characters.
countintegerRequiredBetween 1 and 40.
variationintegerBetween 0 and 50.
200AiCampaignPlanResultThe planned angles, or a not_url fallback signal
curl -X POST "https://orbitwrite.com/api/v1/ai/campaign-plan" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": "string",
"count": 1
}'{
"ok": true,
"topics": [
"string"
],
"title": "string",
"truncated": true,
"reason": "string",
"error": "string"
}Generates a short campaign name from free-text context. Non-streaming.
A signed-in session only. The Orbitwrite app calls this; an API key is refused.
contextstringRequiredFree-text topic the name is derived from
At most 500 characters.
curl -X POST "https://orbitwrite.com/api/v1/ai/campaign-name" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"context": "string"
}'{
"ok": true,
"name": "string",
"error": "string"
}Describes one of the workspace's uploaded images for screen readers, by mediaId or by its url. Optional context (the post's text) steers what the description emphasises. Returns a suggestion and stores nothing — set it as altText on the post's attachment to use it. Spends one AI assist; requires media:read. At most 1,000 characters, the shortest limit among the networks that take alt text.
An API key or OAuth access token as a bearer token, or a signed-in session.
organizationIdstringSession callers only — an API key already determines the workspace.
At least 1 character.
mediaIdstringThe image's media id — from an upload, list_media, or a post's attachment.
At least 1 character.
urlstringThe image's URL, for an attachment that carries no media id. Must be one of this workspace's own uploads.
Format uri.
contextstringThe post the image goes with. Used to decide what in the image matters, never as a source of facts the image doesn't show.
At most 2000 characters.
200AltTextSuggestionThe suggested alt text
curl -X POST "https://orbitwrite.com/api/v1/ai/alt-text" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mediaId": "string",
"url": "https://example.com",
"context": "string"
}'{
"mediaId": "string",
"altText": "string"
}Streams an AI SDK UI message stream for a free-text conversation in which the model may call workspace tools (the MCP server's, under the caller's own permissions), app tools (run by the browser, such as opening a post) and, when context describes an open composer, composer tools (run by the browser on the open post). Tools that change or remove existing state stop for the caller's approval. Session only.
A signed-in session only. The Orbitwrite app calls this; an API key is refused.
messagesany[]RequiredAt least 1 item.
organizationIdstringAt least 1 character.
contextobjectgroupIdstring | nullRequiredAt least 1 character.
titlestringAt most 200 characters. Defaults to "".
textstringAt most 25000 characters. Defaults to "".
statusstring | nullAt most 50 characters. Defaults to null.
scheduledAtstring | nullAt most 40 characters. Defaults to null.
channelsobject[]At most 20 items. Defaults to [].
idstringRequiredAt least 1 character.
platformstringRequiredAt most 50 characters.
namestring | nullRequiredAt most 200 characters.
maxCharsinteger | nullRequiredAt least 0.
threadsboolean | nullDefaults to null.
maxMediainteger | nullAt least 0. Defaults to null.
syncedbooleanRequiredformatstring | nullDefaults to null.
"post""story""reel""short"nullformatsstring[]At most 4 items. Defaults to [].
"post""story""reel""short"engagementstring[]At most 5 items. Defaults to [].
timezonestring | nullAt most 64 characters. Defaults to null.
suggestionsobject[]At most 50 items. Defaults to [].
openCommentsintegerAt least 0. Defaults to 0.
pageobjectapprovalModestringDefaults to "ask".
"ask""auto"conversationIdstringBetween 8 and 64 characters.
200stringThe UI message stream
curl -X POST "https://orbitwrite.com/api/v1/ai/agent" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"messages": []
}'"string"Newest first, up to 30. Your own only. Session only.
A signed-in session only. The Orbitwrite app calls this; an API key is refused.
organizationIdstringSession callers only — an API key already determines the workspace.
At least 1 character.
200objectThe history list
conversationsAssistantConversationSummary[]Requiredcurl -X GET "https://orbitwrite.com/api/v1/assistant/conversations" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY"{
"conversations": [
{
"id": "string",
"title": "string",
"updatedAt": "string"
}
]
}A signed-in session only. The Orbitwrite app calls this; an API key is refused.
idstringRequiredorganizationIdstringSession callers only — an API key already determines the workspace.
At least 1 character.
200AssistantConversationThe conversation
curl -X GET "https://orbitwrite.com/api/v1/assistant/conversations/{id}" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY"{
"id": "string",
"title": "string",
"updatedAt": "string",
"messages": []
}A signed-in session only. The Orbitwrite app calls this; an API key is refused.
idstringRequiredorganizationIdstringSession callers only — an API key already determines the workspace.
At least 1 character.
204Deleted
curl -X DELETE "https://orbitwrite.com/api/v1/assistant/conversations/{id}" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY"{
"error": "string",
"issues": []
}Marks the show_post card toolCallId as created as the draft groupId, so the card stays created after a reload and Orb AI's next turn knows the post exists. Your own conversations only. Session only.
A signed-in session only. The Orbitwrite app calls this; an API key is refused.
idstringRequiredorganizationIdstringSession callers only — an API key already determines the workspace.
At least 1 character.
toolCallIdstringRequiredBetween 1 and 200 characters.
groupIdstringRequiredBetween 1 and 200 characters.
204Recorded
curl -X POST "https://orbitwrite.com/api/v1/assistant/conversations/{id}/created-posts" \
-H "Authorization: Bearer $ORBITWRITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"toolCallId": "string",
"groupId": "string"
}'{
"error": "string",
"issues": []
}