openapi: 3.2.0 info: title: Flora.ai Actions API version: 1.6.0 license: name: Proprietary identifier: LicenseRef-Proprietary description: Prebuilt action catalog endpoints. servers: - url: https://app.flora.ai/api/v1 security: - bearerAuth: [] tags: - name: Actions description: Prebuilt action catalog endpoints. paths: /actions: get: operationId: listActions summary: List actions description: Returns released prebuilt Flora actions that can be executed by the public API. Action identifiers are raw slugs such as rotate-image, not action-prefixed IDs. tags: - Actions parameters: [] responses: '200': description: Actions returned. content: application/json: schema: type: object properties: actions: type: array items: 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 name: type: string description: Action name examples: - Rotate Image description: type: string description: Action description examples: - Rotate an image by a fixed angle. language: enum: - javascript - python type: string description: Action runtime language charged_cost: type: number minimum: 0 description: Cost per execution in USD inputs: type: array items: type: object properties: name: type: string description: Action input or output name examples: - image type: enum: - image - video - text - audio type: string description: Action input or output media type dynamic: type: boolean description: Whether the slot accepts multiple values required: - name - type description: Action input slots outputs: type: array items: type: object properties: name: type: string description: Action input or output name examples: - image type: enum: - image - video - text - audio type: string description: Action input or output media type dynamic: type: boolean description: Whether the slot accepts multiple values required: - name - type description: Action output slots params: type: array items: type: object properties: key: type: string description: Action parameter key examples: - angle type: type: string description: Action parameter control type examples: - select label: type: string description: Action parameter label examples: - Angle info_tooltip: type: string description: Action parameter description examples: - Rotation angle in degrees. default_value: description: Default parameter value available_values: type: array items: type: object properties: value: type: string label: type: string description: type: string required: - value - label description: Allowed parameter values min_number_value: type: number max_number_value: type: number number_step: type: number required: - key - type description: Action parameters required: - action_id - name - description - language - charged_cost - inputs - outputs - params required: - actions '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. /actions/{actionId}: get: operationId: getAction summary: Get an action description: Returns metadata for one released prebuilt Flora action. Action identifiers are raw slugs such as rotate-image, not action-prefixed IDs. tags: - Actions parameters: - name: actionId in: path required: true schema: 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 description: Action identifier responses: '200': description: Action returned. 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 name: type: string description: Action name examples: - Rotate Image description: type: string description: Action description examples: - Rotate an image by a fixed angle. language: enum: - javascript - python type: string description: Action runtime language charged_cost: type: number minimum: 0 description: Cost per execution in USD inputs: type: array items: type: object properties: name: type: string description: Action input or output name examples: - image type: enum: - image - video - text - audio type: string description: Action input or output media type dynamic: type: boolean description: Whether the slot accepts multiple values required: - name - type description: Action input slots outputs: type: array items: type: object properties: name: type: string description: Action input or output name examples: - image type: enum: - image - video - text - audio type: string description: Action input or output media type dynamic: type: boolean description: Whether the slot accepts multiple values required: - name - type description: Action output slots params: type: array items: type: object properties: key: type: string description: Action parameter key examples: - angle type: type: string description: Action parameter control type examples: - select label: type: string description: Action parameter label examples: - Angle info_tooltip: type: string description: Action parameter description examples: - Rotation angle in degrees. default_value: description: Default parameter value available_values: type: array items: type: object properties: value: type: string label: type: string description: type: string required: - value - label description: Allowed parameter values min_number_value: type: number max_number_value: type: number number_step: type: number required: - key - type description: Action parameters required: - action_id - name - description - language - charged_cost - inputs - outputs - params '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