Interface StartChatRunParams

interface StartChatRunParams {
    appSource?: string;
    attribution?: WorkloadAttributionInput;
    billingMode?: BillingMode;
    clientMessageId?: string;
    confirmCost?: boolean;
    idempotencyKey?: string;
    maxEstimatedCapacityUnits?: number;
    mediaContext?: {
        audio: string[];
        images: string[];
        uploadedAudio?: string[];
        uploadedImages?: string[];
        uploadedVideos?: string[];
        videos: string[];
    };
    mediaReferences?: unknown[];
    messages: unknown[];
    model?: string;
    runtimeConfig?: {
        jobConfirmationThresholdUsd?: number;
        personaNames?: string[];
        qualityTier?: "fast"
        | "hq"
        | "pro";
        requireJobConfirmation?: boolean;
        safeContentFilter?: boolean;
    };
    sampling?: Record<string, unknown>;
    sessionId?: string;
    tokenType?: "sogni" | "spark";
    toolChoice?: unknown;
    tools?: unknown[];
}

Properties

appSource?: string

Optional source label for attribution. Defaults to the client appSource when configured.

Optional workload attribution overriding this client's defaults.

billingMode?: BillingMode

Billing mode for the run. 'subscription' bills against the active subscription entitlement, 'tokens' forces token billing, 'auto' (server default when omitted) lets the server decide. Serialized as billing_mode to match the durable-run body's snake_case convention.

clientMessageId?: string

Stable client message id for pairing with the assistant response.

confirmCost?: boolean

Set true to confirm higher-cost work.

idempotencyKey?: string

Idempotency key (also accepted via Idempotency-Key header).

maxEstimatedCapacityUnits?: number

Cost ceiling for this run (capacity units).

mediaContext?: {
    audio: string[];
    images: string[];
    uploadedAudio?: string[];
    uploadedImages?: string[];
    uploadedVideos?: string[];
    videos: string[];
}

Full chat media context snapshot for generated + uploaded source indexing. Durable runs require uploaded HTTP(S) URLs, not inline data URIs.

mediaReferences?: unknown[]

Inbound media references attached to the run. Durable runs require uploaded HTTP(S) URLs, not inline data URIs.

messages: unknown[]

OpenAI-style messages array. Required.

model?: string

Model id requested for the run.

runtimeConfig?: {
    jobConfirmationThresholdUsd?: number;
    personaNames?: string[];
    qualityTier?: "fast" | "hq" | "pro";
    requireJobConfirmation?: boolean;
    safeContentFilter?: boolean;
}

Host-app runtime config (quality tier, NSFW filter) the cloud executor should apply when tool calls omit the equivalent field — e.g. resolve qualityTier: "fast" → model: "z-turbo" for generate_image so cloud runs match client-mode defaults.

Type declaration

  • OptionaljobConfirmationThresholdUsd?: number

    Skip the pause for jobs estimated at or below this USD figure.

  • OptionalpersonaNames?: string[]

    Registered persona names so the cloud executor can apply the same persona-resolution gate as the client.

  • OptionalqualityTier?: "fast" | "hq" | "pro"
  • OptionalrequireJobConfirmation?: boolean

    When true, the cloud emits cost-approval pauses before paid media tools.

  • OptionalsafeContentFilter?: boolean
sampling?: Record<string, unknown>

Sampling defaults captured with the run for reproducibility.

sessionId?: string

Stable session id for browser-side rehydration queries.

tokenType?: "sogni" | "spark"

Token type for billing.

toolChoice?: unknown

OpenAI-style tool choice (auto, none, or specific tool).

tools?: unknown[]

OpenAI-style tools array.