Flora.ai API

The Flora.ai public REST API (v1.6.0) exposes the FLORA creative canvas programmatically: discover and run saved Techniques, start one-off model generations, list the model catalog, manage workspaces and projects, upload assets through signed URLs, read and patch the project canvas as a Mermaid graph, and run prebuilt canvas actions. Bearer API-key auth (sk_live_ prefix), optional idempotency keys on mutations, and optional signed HMAC-SHA256 webhooks on run completion.

OpenAPI Specification

flora-fauna-flora-api-openapi.yml Raw ↑
{
  "info": {
    "title": "Flora.ai API",
    "version": "1.6.0",
    "license": {
      "name": "Proprietary",
      "identifier": "LicenseRef-Proprietary"
    }
  },
  "servers": [
    {
      "url": "https://app.flora.ai/api/v1"
    }
  ],
  "tags": [
    {
      "name": "Actions",
      "description": "Prebuilt action catalog endpoints."
    },
    {
      "name": "Workspaces",
      "description": "Workspace discovery endpoints."
    },
    {
      "name": "Projects",
      "description": "Project management endpoints."
    },
    {
      "name": "Models",
      "description": "Model catalog endpoints."
    },
    {
      "name": "Techniques",
      "description": "Technique catalog endpoints."
    },
    {
      "name": "Technique Runs",
      "description": "Nested technique run endpoints."
    },
    {
      "name": "Assets",
      "description": "Asset upload and retrieval endpoints."
    },
    {
      "name": "Runs",
      "description": "Top-level run creation endpoints."
    },
    {
      "name": "Canvas",
      "description": "Project canvas endpoints."
    },
    {
      "name": "Feedback",
      "description": "Product feedback endpoints."
    },
    {
      "name": "Generations",
      "description": "Generation endpoints."
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Flora API key"
      }
    }
  },
  "openapi": "3.1.1",
  "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"
                                ]
                 

# --- truncated at 32 KB (916 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/flora-fauna/refs/heads/main/openapi/flora-fauna-flora-api-openapi.yml