Skip to main content

Core Types

type ChatMode =
  | "auto" | "fast" | "think" | "image" | "video"
  | "code" | "research" | "roast" | "genui"
  | "data_extraction";

type PersonaInput = "theo" | "none" | { system_prompt: string };

type CompletionAttachment =
  | { type: "image_url"; url: string }
  | { type: "image_base64"; data: string; mime_type: "image/png" | "image/jpeg" | "image/webp" | "image/gif" };

type TheoImageEngine =
  | "auto" | "theo-1-create" | "theo-1-photo" | "theo-1-rapid"
  | "theo-1-design" | "theo-1-studio" | "theo-1-type";

type TheoImageQuality = "draft" | "standard" | "hd";
type TheoStealthAspect = "square" | "portrait" | "landscape" | "wide";
type TheoStealthDuration = "5s" | "6s" | "10s";
Additional domain-specific modes are available for specialized use cases. Contact us or check the API for the full list.

Completion Request / Response Types

TypeUsed ByDescription
CompletionRequesttheo.complete(), theo.stream()Request body — supports conversation, personality_config, response_style, theo_branding, brand_soul, attachments, stealth pins
CompletionResponsetheo.complete()Response — includes request_id, conversation_id, full usage
CompletionUsageCompletionResponse, StreamDoneData{ cost_cents, prompt_tokens, completion_tokens, total_tokens, cached? }
GenUICompletionResponsetheo.complete() when mode === "genui"Adds genui_code field
PersonalityConfigInputCompletionRequest.personality_configPer-request trait + uncensored-mode override
ResponseStyleInputCompletionRequest.response_stylePer-request format/preciseness/intent override
InlineConversation, InlineConversationMessageCompletionRequest.conversationInline history envelope for stateless callers

Streaming Types

TypeDescription
TheoStreamClass returned by theo.stream() — async-iterable with cancel(), conversationId, usage, model, requestId, content, isCancelled
StreamEventDiscriminated union over meta | token | tool | artifact | genui_meta | skills | done | error
StreamMetaDataPayload of the meta event
StreamTokenData{ token: string }
StreamToolData{ name, status, description? }
StreamSkillsData{ active: [...] }
StreamDoneDataPayload of the done event (full content + usage + ids)
StreamErrorDataPayload of the error event — matches the REST error envelope
GenUIMetaEventPayload of the genui_meta event

Diagnostic Types

TypeUsed ByDescription
VerifyResulttheo.verify(){ healthy, authenticated, baseUrl, latencyMs, modelCount?, version?, error?, hint? }

Media & Audio Types

TypeUsed ByDescription
ImageRequest, ImageResponsetheo.images()Image request/response
VideoRequesttheo.video()Video generation request
CodeRequest, CodeResponsetheo.code()Code request/response
ResearchRequesttheo.research()Research request
DocumentRequest, DocumentResponsetheo.documents()Document request/response
TtsRequesttheo.tts()TTS request
SttResponsetheo.stt()STT response
AsyncJobResponsetheo.video(), theo.research()Async job creation response
JobStatustheo.job(), theo.waitForJob()Job polling response

Resource Record Types

TypeUsed ByDescription
ConversationSummarytheo.conversations()Compact conversation metadata
ConversationDetailtheo.conversation(id)Summary plus full message history
ConversationMessageConversationDetail.messages[]Individual message record
SkillSummarytheo.skills(), theo.createSkill()Skill listing shape
SdkToolDefinitiontheo.tools()Tool definition — name, description, inputSchema, outputSchema?, permissionLevel, requiresApproval, skillId?, category?
WorkflowRecordtheo.workflows(), theo.createWorkflow()Workflow shape
WorkflowRunRecordtheo.triggerWorkflow()Workflow run shape
SubmissionRecordtheo.submitSkill(), theo.submissions()Skill marketplace submission
SkillVersiontheo.skillVersions()Version-history entry
WebhookRecord, WebhookDeliveryWebhook methodsWebhook endpoint + delivery attempt
HookRecord, HookExecutionHook methodsHook + execution history
EventAcktheo.publishEvent()Publish acknowledgement
UsageReporttheo.usage()Aggregated usage totals + per-mode / per-model breakdowns
HealthResponsetheo.health()System health response
ModelInfotheo.models()Model registry entry

Browser Session Types

TypeUsed ByDescription
BrowserRegionBrowserCreateRequest.regionDatacenter region
BrowserCreateRequesttheo.browser.create()Start-session options
BrowserSessionHandle, BrowserSessionSnapshottheo.browser.create() / list() / get()Session metadata
BrowserLiveViewtheo.browser.live()Live-view URL + pages + version
BrowserEndResulttheo.browser.end()Duration + billed bytes

Skill Authoring Types

TypeDescription
SkillManifestInputInput to defineSkill()
SkillManifestValidated output of defineSkill()
SkillCategory"productivity", "domain", "integration", "automation", "creative"
SkillPermission"read:conversations", "read:artifacts", "write:artifacts", etc.
SkillTriggerType"manual", "keyword", "event", "schedule"
SkillToolInputTool definition within a skill manifest
SkillTriggerInputTrigger configuration

E.V.I. Types

TypeDescription
EviConfigConfiguration for theo.evi()
CanvasVisibility, CanvasStatusCanvas visibility + lifecycle
CanvasRecordCanvas row as returned by the API
CreateCanvasInput, UpdateCanvasInput, PublishCanvasInputCanvas mutation inputs
CanvasCompileResult, CanvasTestResult, CanvasPublishResultCompile / test / publish results
TheoProjectConfigConfiguration for theo.config.ts
TheoConfigClient constructor options