# Runs ## Start a technique run `client.techniques.runs.create(stringtechniqueID, RunCreateParamsbody, RequestOptionsoptions?): RunCreateResponse` **post** `/techniques/{techniqueId}/runs` Starts a run for a specific technique using the backward-compatible nested route. Mutating public API requests support an optional Idempotency-Key header for client retries; duplicate keys within two hours return idempotency_duplicate. ### Parameters - `techniqueID: string` Technique identifier or slug - `body: RunCreateParams` - `inputs: Array` Technique inputs - `id: string` Technique input identifier - `type: "text" | "imageUrl" | "videoUrl"` Technique input type - `"text"` - `"imageUrl"` - `"videoUrl"` - `value: string` Technique input value - `mode: "async" | "stream"` Technique run execution mode - `"async"` - `"stream"` - `callback_url?: string` HTTPS callback URL for asynchronous run completion notifications - `idempotency_key?: string` Idempotency key for safely retrying requests ### Returns - `RunCreateResponse` - `created_at: number` - `progress: number` - `run_id: string` Run identifier - `status: "pending" | "running" | "completed" | "failed"` - `"pending"` - `"running"` - `"completed"` - `"failed"` - `charged_cost?: number` - `completed_at?: number` - `error_code?: string` Machine-readable run error code - `error_message?: string` Human-readable run error message - `outputs?: Array` - `output_id: string` Run output identifier - `type: "imageUrl" | "videoUrl" | "audioUrl" | 2 more` Run output media type - `"imageUrl"` - `"videoUrl"` - `"audioUrl"` - `"text"` - `"documentUrl"` - `url: string` Run output URL - `poll_url?: string` - `started_at?: number` ### Example ```typescript import Flora from '@flora-ai/flora'; const client = new Flora({ apiKey: process.env['FLORA_API_KEY'], // This is the default and can be omitted }); const run = await client.techniques.runs.create('art-directors-critique', { inputs: [ { id: 'id', type: 'text', value: 'value', }, ], mode: 'async', }); console.log(run.run_id); ``` #### Response ```json { "created_at": 0, "progress": 0, "run_id": "run_abc123", "status": "pending", "charged_cost": 0, "completed_at": 0, "error_code": "provider_error", "error_message": "The provider failed to complete the generation.", "outputs": [ { "output_id": "output_1", "type": "imageUrl", "url": "https://media.flora.ai/output.png" } ], "poll_url": "https://example.com", "started_at": 0 } ``` ## Get a technique run `client.techniques.runs.retrieve(stringrunID, RunRetrieveParamsparams, RequestOptionsoptions?): RunRetrieveResponse` **get** `/techniques/{techniqueId}/runs/{runId}` Returns status, progress, outputs, and error details for a technique run when it is accessible to the authenticated public API key. ### Parameters - `runID: string` Run identifier - `params: RunRetrieveParams` - `techniqueId: string` Technique identifier or slug ### Returns - `RunRetrieveResponse` - `created_at: number` - `progress: number` - `run_id: string` Run identifier - `status: "pending" | "running" | "completed" | "failed"` - `"pending"` - `"running"` - `"completed"` - `"failed"` - `charged_cost?: number` - `completed_at?: number` - `error_code?: string` Machine-readable run error code - `error_message?: string` Human-readable run error message - `outputs?: Array` - `output_id: string` Run output identifier - `type: "imageUrl" | "videoUrl" | "audioUrl" | 2 more` Run output media type - `"imageUrl"` - `"videoUrl"` - `"audioUrl"` - `"text"` - `"documentUrl"` - `url: string` Run output URL - `poll_url?: string` - `started_at?: number` ### Example ```typescript import Flora from '@flora-ai/flora'; const client = new Flora({ apiKey: process.env['FLORA_API_KEY'], // This is the default and can be omitted }); const run = await client.techniques.runs.retrieve('run_abc123', { techniqueId: 'art-directors-critique', }); console.log(run.run_id); ``` #### Response ```json { "created_at": 0, "progress": 0, "run_id": "run_abc123", "status": "pending", "charged_cost": 0, "completed_at": 0, "error_code": "provider_error", "error_message": "The provider failed to complete the generation.", "outputs": [ { "output_id": "output_1", "type": "imageUrl", "url": "https://media.flora.ai/output.png" } ], "poll_url": "https://example.com", "started_at": 0 } ``` ## Domain Types ### Run Create Response - `RunCreateResponse` - `created_at: number` - `progress: number` - `run_id: string` Run identifier - `status: "pending" | "running" | "completed" | "failed"` - `"pending"` - `"running"` - `"completed"` - `"failed"` - `charged_cost?: number` - `completed_at?: number` - `error_code?: string` Machine-readable run error code - `error_message?: string` Human-readable run error message - `outputs?: Array` - `output_id: string` Run output identifier - `type: "imageUrl" | "videoUrl" | "audioUrl" | 2 more` Run output media type - `"imageUrl"` - `"videoUrl"` - `"audioUrl"` - `"text"` - `"documentUrl"` - `url: string` Run output URL - `poll_url?: string` - `started_at?: number` ### Run Retrieve Response - `RunRetrieveResponse` - `created_at: number` - `progress: number` - `run_id: string` Run identifier - `status: "pending" | "running" | "completed" | "failed"` - `"pending"` - `"running"` - `"completed"` - `"failed"` - `charged_cost?: number` - `completed_at?: number` - `error_code?: string` Machine-readable run error code - `error_message?: string` Human-readable run error message - `outputs?: Array` - `output_id: string` Run output identifier - `type: "imageUrl" | "videoUrl" | "audioUrl" | 2 more` Run output media type - `"imageUrl"` - `"videoUrl"` - `"audioUrl"` - `"text"` - `"documentUrl"` - `url: string` Run output URL - `poll_url?: string` - `started_at?: number`