openapi: 3.2.0 info: title: Flora.ai Canvas API version: 1.6.0 license: name: Proprietary identifier: LicenseRef-Proprietary description: Project canvas endpoints. servers: - url: https://app.flora.ai/api/v1 security: - bearerAuth: [] tags: - name: Canvas description: Project canvas endpoints. paths: /projects/{projectId}/actions: post: operationId: createCanvasAction summary: Create a canvas action description: Creates a prebuilt action node on a project canvas using a raw action slug. tags: - Canvas parameters: - name: projectId in: path required: true schema: type: string pattern: ^prj_\S+$ description: Project identifier examples: - prj_abc123 description: Project identifier requestBody: required: true content: application/json: schema: type: object properties: action_id: enum: - split-text - find-and-replace-text - concat-text - ken-burns-video - color-grade-image - change-image-ar - rotate-image - flip-image - color-filter-image - color-tint-image - filter-color-image - blur-image - duplicate-image - side-by-side-composite - add-shape-to-image - generate-shape-image - add-text-to-image - generate-text-image - qr-code-generator - stitch-videos - split-video - extract-video-frames - color-grade-video - video-to-frame-grid - boomerang-video - reverse-video - video-to-long-exposure - video-effect - color-filter-video - speed-up-video - slow-down-video - duplicate-video - greenscreen-video - resize-video - change-video-ar - split-audio-from-video - merge-audio-into-video type: string description: Action identifier examples: - split-text - find-and-replace-text - concat-text - ken-burns-video - color-grade-image - change-image-ar - rotate-image - flip-image - color-filter-image - color-tint-image - filter-color-image - blur-image - duplicate-image - side-by-side-composite - add-shape-to-image - generate-shape-image - add-text-to-image - generate-text-image - qr-code-generator - stitch-videos - split-video - extract-video-frames - color-grade-video - video-to-frame-grid - boomerang-video - reverse-video - video-to-long-exposure - video-effect - color-filter-video - speed-up-video - slow-down-video - duplicate-video - greenscreen-video - resize-video - change-video-ar - split-audio-from-video - merge-audio-into-video params: type: object additionalProperties: {} description: Action parameters required: - action_id responses: '201': description: Canvas action created. content: application/json: schema: type: object properties: project_id: type: string pattern: ^prj_\S+$ description: Project identifier examples: - prj_abc123 node_id: type: string minLength: 1 description: Canvas action node identifier examples: - node_abc123 action_id: enum: - split-text - find-and-replace-text - concat-text - ken-burns-video - color-grade-image - change-image-ar - rotate-image - flip-image - color-filter-image - color-tint-image - filter-color-image - blur-image - duplicate-image - side-by-side-composite - add-shape-to-image - generate-shape-image - add-text-to-image - generate-text-image - qr-code-generator - stitch-videos - split-video - extract-video-frames - color-grade-video - video-to-frame-grid - boomerang-video - reverse-video - video-to-long-exposure - video-effect - color-filter-video - speed-up-video - slow-down-video - duplicate-video - greenscreen-video - resize-video - change-video-ar - split-audio-from-video - merge-audio-into-video type: string description: Action identifier examples: - split-text - find-and-replace-text - concat-text - ken-burns-video - color-grade-image - change-image-ar - rotate-image - flip-image - color-filter-image - color-tint-image - filter-color-image - blur-image - duplicate-image - side-by-side-composite - add-shape-to-image - generate-shape-image - add-text-to-image - generate-text-image - qr-code-generator - stitch-videos - split-video - extract-video-frames - color-grade-video - video-to-frame-grid - boomerang-video - reverse-video - video-to-long-exposure - video-effect - color-filter-video - speed-up-video - slow-down-video - duplicate-video - greenscreen-video - resize-video - change-video-ar - split-audio-from-video - merge-audio-into-video canvas_url: type: string format: uri description: Project canvas URL required: - project_id - node_id - action_id - canvas_url '400': description: '400' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: input_validation_error: summary: Invalid request value: error: code: input_validation_error message: 'prompt: Required' fields: - field: prompt message: Required '401': description: '401' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: unauthorized: summary: Unauthorized value: error: code: unauthorized message: Invalid API key. '402': description: '402' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: insufficient_credits: summary: Insufficient credits value: error: code: insufficient_credits message: Insufficient credits. '403': description: '403' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: forbidden: summary: Forbidden value: error: code: forbidden message: Forbidden. '404': description: '404' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: not_found: summary: Not found value: error: code: not_found message: Not found. '409': description: '409' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: idempotency_duplicate: summary: Conflict value: error: code: idempotency_duplicate message: Duplicate idempotency key. '429': description: '429' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: rate_limited: summary: Rate limited value: error: code: rate_limited message: Rate limit exceeded. '500': description: '500' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: unknown_error: summary: Unknown error value: error: code: unknown_error message: An unknown error occurred. /projects/{projectId}/actions/{nodeId}/run: post: operationId: runCanvasAction summary: Run a canvas action description: Runs an existing canvas action node through the action execution workflow. tags: - Canvas parameters: - name: projectId in: path required: true schema: type: string pattern: ^prj_\S+$ description: Project identifier examples: - prj_abc123 description: Project identifier - name: nodeId in: path required: true schema: type: string minLength: 1 pattern: ^\S+$ description: Canvas action node identifier description: Canvas action node identifier responses: '201': description: Canvas action run started. content: application/json: schema: type: object properties: run_id: type: string pattern: ^run_\S+$ description: Run identifier examples: - run_abc123 type: enum: - generation - technique - action type: string description: Run type model: anyOf: - type: object properties: model_id: type: string minLength: 1 description: Model identifier examples: - t2i-flux-2-pro required: - model_id - type: 'null' technique: anyOf: - type: object properties: technique_id: type: string pattern: ^tech_\S+$ description: Technique identifier examples: - tech_abcd1234 name: type: string description: Technique name required: - technique_id - name - type: 'null' action: anyOf: - type: object properties: action_id: enum: - split-text - find-and-replace-text - concat-text - ken-burns-video - color-grade-image - change-image-ar - rotate-image - flip-image - color-filter-image - color-tint-image - filter-color-image - blur-image - duplicate-image - side-by-side-composite - add-shape-to-image - generate-shape-image - add-text-to-image - generate-text-image - qr-code-generator - stitch-videos - split-video - extract-video-frames - color-grade-video - video-to-frame-grid - boomerang-video - reverse-video - video-to-long-exposure - video-effect - color-filter-video - speed-up-video - slow-down-video - duplicate-video - greenscreen-video - resize-video - change-video-ar - split-audio-from-video - merge-audio-into-video type: string description: Action identifier examples: - split-text - find-and-replace-text - concat-text - ken-burns-video - color-grade-image - change-image-ar - rotate-image - flip-image - color-filter-image - color-tint-image - filter-color-image - blur-image - duplicate-image - side-by-side-composite - add-shape-to-image - generate-shape-image - add-text-to-image - generate-text-image - qr-code-generator - stitch-videos - split-video - extract-video-frames - color-grade-video - video-to-frame-grid - boomerang-video - reverse-video - video-to-long-exposure - video-effect - color-filter-video - speed-up-video - slow-down-video - duplicate-video - greenscreen-video - resize-video - change-video-ar - split-audio-from-video - merge-audio-into-video required: - action_id - type: 'null' estimated_seconds: anyOf: - type: integer minimum: 0 - type: 'null' charged_cost: type: number minimum: 0 description: Cost charged in USD poll_url: anyOf: - type: string format: uri - type: 'null' project_id: anyOf: - type: string pattern: ^prj_\S+$ description: Project identifier examples: - prj_abc123 - type: 'null' description: Project identifier required: - run_id - type - estimated_seconds - charged_cost '400': description: '400' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: input_validation_error: summary: Invalid request value: error: code: input_validation_error message: 'prompt: Required' fields: - field: prompt message: Required '401': description: '401' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: unauthorized: summary: Unauthorized value: error: code: unauthorized message: Invalid API key. '402': description: '402' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: insufficient_credits: summary: Insufficient credits value: error: code: insufficient_credits message: Insufficient credits. '403': description: '403' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: forbidden: summary: Forbidden value: error: code: forbidden message: Forbidden. '404': description: '404' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: not_found: summary: Not found value: error: code: not_found message: Not found. '409': description: '409' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: idempotency_duplicate: summary: Conflict value: error: code: idempotency_duplicate message: Duplicate idempotency key. '429': description: '429' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: rate_limited: summary: Rate limited value: error: code: rate_limited message: Rate limit exceeded. '500': description: '500' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: unknown_error: summary: Unknown error value: error: code: unknown_error message: An unknown error occurred. /projects/{projectId}/nodes: get: operationId: listCanvasNodes summary: List project canvas nodes description: Returns sanitized visible media nodes on a project canvas. The response omits raw graph documents, Liveblocks internals, raw Convex IDs, and unbounded node data blobs. tags: - Canvas parameters: - name: projectId in: path required: true schema: type: string pattern: ^prj_\S+$ description: Project identifier examples: - prj_abc123 description: Project identifier - name: limit in: query schema: type: integer minimum: 1 maximum: 100 description: Maximum number of results to return allowEmptyValue: true allowReserved: true description: Maximum number of results to return - name: cursor in: query schema: type: string description: Opaque cursor for fetching the next page examples: - eyJvZmZzZXQiOjIwfQ allowEmptyValue: true allowReserved: true description: Opaque cursor for fetching the next page responses: '200': description: Canvas nodes returned. content: application/json: schema: type: object properties: project_id: type: string pattern: ^prj_\S+$ description: Project identifier examples: - prj_abc123 canvas_url: type: string format: uri description: Project canvas URL nodes: type: array items: type: object properties: node_id: type: string minLength: 1 description: Canvas node identifier examples: - node_abc123 type: enum: - image - video - audio - text type: string description: Canvas node media type label: anyOf: - type: string description: Canvas node label examples: - Logo - type: 'null' description: Canvas node label asset_id: anyOf: - type: string pattern: ^asset_\S+$ description: Asset identifier examples: - asset_abc123 - type: 'null' description: Asset identifier url: anyOf: - type: string minLength: 1 description: Canvas node output URL or text content examples: - https://media.flora.ai/output.png - type: 'null' description: Canvas node output URL or text content width: anyOf: - type: integer - type: 'null' height: anyOf: - type: integer - type: 'null' required: - node_id - type meta: type: object properties: next_cursor: anyOf: - type: string description: Opaque cursor for fetching the next page examples: - eyJvZmZzZXQiOjIwfQ - type: 'null' description: Opaque cursor for fetching the next page total_estimate: anyOf: - type: integer minimum: 0 description: Estimated total matching items - type: 'null' description: Estimated total matching items required: - next_cursor required: - project_id - canvas_url - nodes - meta '400': description: '400' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: input_validation_error: summary: Invalid request value: error: code: input_validation_error message: 'prompt: Required' fields: - field: prompt message: Required '401': description: '401' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: unauthorized: summary: Unauthorized value: error: code: unauthorized message: Invalid API key. '402': description: '402' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: insufficient_credits: summary: Insufficient credits value: error: code: insufficient_credits message: Insufficient credits. '403': description: '403' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: forbidden: summary: Forbidden value: error: code: forbidden message: Forbidden. '404': description: '404' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: not_found: summary: Not found value: error: code: not_found message: Not found. '409': description: '409' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: idempotency_duplicate: summary: Conflict value: error: code: idempotency_duplicate message: Duplicate idempotency key. '429': description: '429' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: rate_limited: summary: Rate limited value: error: code: rate_limited message: Rate limit exceeded. '500': description: '500' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: unknown_error: summary: Unknown error value: error: code: unknown_error message: An unknown error occurred. /projects/{projectId}/assets/{assetId}/attach: post: operationId: attachCanvasAsset summary: Attach an asset to a canvas description: Attaches an existing ready asset to a project canvas as a static media node. Mutating public API requests support an optional Idempotency-Key header for client retries; duplicate keys within two hours return idempotency_duplicate. tags: - Canvas parameters: - name: projectId in: path required: true schema: type: string pattern: ^prj_\S+$ description: Project identifier examples: - prj_abc123 description: Project identifier - name: assetId in: path required: true schema: type: string pattern: ^asset_\S+$ description: Asset identifier examples: - asset_abc123 description: Asset identifier responses: '201': description: Asset attached to canvas. content: application/json: schema: type: object properties: project_id: type: string pattern: ^prj_\S+$ description: Project identifier examples: - prj_abc123 asset_id: type: string pattern: ^asset_\S+$ description: Asset identifier examples: - asset_abc123 node_id: type: string minLength: 1 description: Canvas node identifier examples: - node_abc123 canvas_url: type: string format: uri description: Project canvas URL required: - project_id - asset_id - node_id - canvas_url '400': description: '400' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: input_validation_error: summary: Invalid request value: error: code: input_validation_error message: 'prompt: Required' fields: - field: prompt message: Required '401': description: '401' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: unauthorized: summary: Unauthorized value: error: code: unauthorized message: Invalid API key. '402': description: '402' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: insufficient_credits: summary: Insufficient credits value: error: code: insufficient_credits message: Insufficient credits. '403': description: '403' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: forbidden: summary: Forbidden value: error: code: forbidden message: Forbidden. '404': description: '404' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: not_found: summary: Not found value: error: code: not_found message: Not found. '409': description: '409' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: idempotency_duplicate: summary: Conflict value: error: code: idempotency_duplicate message: Duplicate idempotency key. '429': description: '429' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: rate_limited: summary: Rate limited value: error: code: rate_limited message: Rate limit exceeded. '500': description: '500' content: application/json: schema: type: object required: - error additionalProperties: false properties: error: type: object required: - code - message additionalProperties: false properties: code: type: string enum: - unauthorized - invalid_api_key - forbidden - invalid_json - input_validation_error - not_found - insufficient_credits - idempotency_duplicate - rate_limited - unknown_error examples: - input_validation_error message: type: string examples: - 'name: Required' fields: type: array items: type: object required: - field - message additionalProperties: false properties: field: type: string examples: - name message: type: string examples: - Required examples: unknown_error: summary: Unknown error value: error: code: unknown_error message: An unknown error occurred. components: securitySchemes: bearerAuth: type: http scheme: bearer description: Flora API key