{
"openapi": "3.1.0",
"info": {
"version": "3.0.0",
"title": "Firefly API",
"description": "REST API for Adobe Firefly services including image generation, image alteration, video generation, and other related services."
},
"servers": [
{
"url": "https://firefly-api.adobe.io",
"description": "Production server."
}
],
"security": [
{
"X-Api-Key": [],
"AccessToken": []
}
],
"tags": [
{
"name": "Manage jobs",
"description": "Endpoints for managing running asyncronous jobs."
}
],
"paths": {
"/v3/images/generate-async": {
"post": {
"operationId": "generateImagesV3Async",
"summary": "Generate images",
"description": "Generate images based on a text prompt. You may also include a reference image and Firefly will try to mimic the characteristics, such as color scheme, lighting, layout of objects in the image, etc.\n\nThis task is performed asynchronously, which means that a successful response returns a jobID. Use this ID with the Get Result endpoint to check the status of the job and get the processed image result or with the Cancel Job endpoint to cancel the job.",
"parameters": [
{
"name": "x-model-version",
"in": "header",
"description": "Specify the Firefly model version to use for the image generation. When a custom model is used, a `customModelId` must also be passed in the request body.",
"required": false,
"schema": {
"type": "string",
"default": "image3",
"enum": [
"image3",
"image3_custom",
"image4_standard",
"image4_ultra",
"image4_custom"
]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenerateImagesRequestV3"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_generateImagesV3Async"
}
}
},
"required": true
},
"responses": {
"202": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptResponseV3"
}
}
},
"description": "Successful Response",
"headers": {
"Link": {
"description": "Links to check the job status or cancel the job.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"content": {
"application/json": {
"examples": {
"bad_request": {
"value": {
"error_code": "bad_request"
}
},
"empty_input_body": {
"value": {
"error_code": "empty_input_body"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Bad Request"
},
"403": {
"content": {
"application/json": {
"examples": {
"access_error": {
"value": {
"error_code": "access_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Forbidden",
"headers": {
"x-access-error": {
"description": "Indicates the reason access is not authorized.",
"schema": {
"type": "string",
"enum": [
"quota_exhausted",
"user_non_entitled",
"user_profile_denied",
"invalid_ims_scope"
]
}
}
}
},
"408": {
"content": {
"application/json": {
"examples": {
"timeout_error": {
"value": {
"error_code": "timeout_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Request Timeout"
},
"413": {
"content": {
"text/html": {
"schema": {
"type": "string"
}
}
},
"description": "Request Entity Too Large"
},
"415": {
"content": {
"application/json": {
"examples": {
"invalid_content_type": {
"value": {
"error_code": "invalid_content_type"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unsupported Media Type"
},
"422": {
"content": {
"application/json": {
"examples": {
"validation_error": {
"value": {
"error_code": "validation_error",
"validation_errors": [
{
"ctx": {
"enum_values": [
"photo",
"art"
]
},
"loc": [
"body",
"contentClass"
],
"msg": "value is not a valid enumeration member; permitted: 'photo', 'art'",
"type": "type_error.enum"
}
]
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"examples": {
"rate_limited": {
"value": {
"error_code": "rate_limited"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Too Many Requests",
"headers": {
"retry-after": {
"description": "Indicates the date after which the client should retry the request.",
"schema": {
"type": "string"
}
},
"x-access-rate-limit-level": {
"description": "Indicates the level at which the rate limit was applied. Possible values are:\n- org: The rate limit was applied to the organisation\n- account: The rate limit was applied to the organization's tech account",
"schema": {
"type": "string"
}
}
}
},
"500": {
"content": {
"application/json": {
"examples": {
"runtime_error": {
"value": {
"error_code": "runtime_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Internal Server Error"
}
}
}
},
"/v3/images/generate-similar-async": {
"post": {
"operationId": "generateSimilarImagesV3Async",
"summary": "Generate similar images",
"description": "Generate similar images based on a reference image that you provide as a parameter.\n\nThis task is performed asynchronously, which means that a successful response returns a jobID. Use this ID with the Get Result endpoint to check the status of the job and get the processed image result or with the Cancel Job endpoint to cancel the job.",
"parameters": [
{
"name": "x-model-version",
"in": "header",
"description": "Specify the Firefly model version to use for the image generation.",
"required": false,
"schema": {
"type": "string",
"default": "image3",
"enum": [
"image3",
"image4_standard",
"image4_ultra"
]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenerateSimilarImagesRequestV3"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_generateSimilarImagesV3Async"
}
}
},
"required": true
},
"responses": {
"202": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptResponseV3"
}
}
},
"description": "Successful Response",
"headers": {
"Link": {
"description": "Links to check the job status or cancel the job.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"content": {
"application/json": {
"examples": {
"bad_request": {
"value": {
"error_code": "bad_request"
}
},
"empty_input_body": {
"value": {
"error_code": "empty_input_body"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Bad Request"
},
"403": {
"content": {
"application/json": {
"examples": {
"access_error": {
"value": {
"error_code": "access_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Forbidden",
"headers": {
"x-access-error": {
"description": "Indicates the reason access is not authorized.",
"schema": {
"type": "string",
"enum": [
"quota_exhausted",
"user_non_entitled",
"user_profile_denied",
"invalid_ims_scope"
]
}
}
}
},
"408": {
"content": {
"application/json": {
"examples": {
"timeout_error": {
"value": {
"error_code": "timeout_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Request Timeout"
},
"413": {
"content": {
"text/html": {
"schema": {
"type": "string"
}
}
},
"description": "Request Entity Too Large"
},
"415": {
"content": {
"application/json": {
"examples": {
"invalid_content_type": {
"value": {
"error_code": "invalid_content_type"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unsupported Media Type"
},
"422": {
"content": {
"application/json": {
"examples": {
"validation_error": {
"value": {
"error_code": "validation_error",
"validation_errors": [
{
"ctx": {
"enum_values": [
"photo",
"art"
]
},
"loc": [
"body",
"contentClass"
],
"msg": "value is not a valid enumeration member; permitted: 'photo', 'art'",
"type": "type_error.enum"
}
]
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"examples": {
"rate_limited": {
"value": {
"error_code": "rate_limited"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Too Many Requests",
"headers": {
"retry-after": {
"description": "Indicates the date after which the client should retry the request.",
"schema": {
"type": "string"
}
},
"x-access-rate-limit-level": {
"description": "Indicates the level at which the rate limit was applied. Possible values are:\n- org: The rate limit was applied to the organisation\n- account: The rate limit was applied to the organization's tech account",
"schema": {
"type": "string"
}
}
}
},
"500": {
"content": {
"application/json": {
"examples": {
"runtime_error": {
"value": {
"error_code": "runtime_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Internal Server Error"
}
}
}
},
"/v3/images/expand-async": {
"post": {
"operationId": "expandImagesV3Async",
"summary": "Expand image",
"description": "Change the aspect ratio or size of an image and expand it. You can optionally provide a text prompt and Firefly generates additional filler image based on the prompt. For example, you can add a prompt to as Firefly to generate pine trees and a forest landscape which fills empty parts of the newly expanded image.\n\nThis task is performed asynchronously, which means that a successful response returns a jobID. Use this ID with the Get Result endpoint to check the status of the job and get the processed image result or with the Cancel Job endpoint to cancel the job.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExpandImageRequestV3"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_expandImagesV3Async"
}
}
},
"required": true
},
"responses": {
"202": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptResponseV3"
}
}
},
"description": "Successful Response",
"headers": {
"Link": {
"description": "Links to check the job status or cancel the job.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"content": {
"application/json": {
"examples": {
"bad_request": {
"value": {
"error_code": "bad_request"
}
},
"empty_input_body": {
"value": {
"error_code": "empty_input_body"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Bad Request"
},
"403": {
"content": {
"application/json": {
"examples": {
"access_error": {
"value": {
"error_code": "access_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Forbidden",
"headers": {
"x-access-error": {
"description": "Indicates the reason access is not authorized.",
"schema": {
"type": "string",
"enum": [
"quota_exhausted",
"user_non_entitled",
"user_profile_denied",
"invalid_ims_scope"
]
}
}
}
},
"408": {
"content": {
"application/json": {
"examples": {
"timeout_error": {
"value": {
"error_code": "timeout_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Request Timeout"
},
"413": {
"content": {
"text/html": {
"schema": {
"type": "string"
}
}
},
"description": "Request Entity Too Large"
},
"415": {
"content": {
"application/json": {
"examples": {
"invalid_content_type": {
"value": {
"error_code": "invalid_content_type"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unsupported Media Type"
},
"422": {
"content": {
"application/json": {
"examples": {
"validation_error": {
"value": {
"error_code": "validation_error",
"validation_errors": [
{
"ctx": {
"enum_values": [
"photo",
"art"
]
},
"loc": [
"body",
"contentClass"
],
"msg": "value is not a valid enumeration member; permitted: 'photo', 'art'",
"type": "type_error.enum"
}
]
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"examples": {
"rate_limited": {
"value": {
"error_code": "rate_limited"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Too Many Requests",
"headers": {
"retry-after": {
"description": "Indicates the date after which the client should retry the request.",
"schema": {
"type": "string"
}
},
"x-access-rate-limit-level": {
"description": "Indicates the level at which the rate limit was applied. Possible values are:\n- org: The rate limit was applied to the organisation\n- account: The rate limit was applied to the organization's tech account",
"schema": {
"type": "string"
}
}
}
},
"500": {
"content": {
"application/json": {
"examples": {
"runtime_error": {
"value": {
"error_code": "runtime_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Internal Server Error"
}
}
}
},
"/v3/images/fill-async": {
"post": {
"operationId": "fillImagesV3Async",
"summary": "Fill image",
"description": "Fills an area of an image based on images that Firefly generates based on your prompt. We call this part of an image an image, and this mask defines the area which should be filled. For example you can have an circular mask defined on an image and Firefly can generate the image of a planet in that area.\n\nThis task is performed asynchronously, which means that a successful response returns a jobID. Use this ID with the Get Result endpoint to check the status of the job and get the processed image result or with the Cancel Job endpoint to cancel the job.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FillImageRequestV3"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_fillImagesV3Async"
}
}
},
"required": true
},
"responses": {
"202": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptResponseV3"
}
}
},
"description": "Successful Response",
"headers": {
"Link": {
"description": "Links to check the job status or cancel the job.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"content": {
"application/json": {
"examples": {
"bad_request": {
"value": {
"error_code": "bad_request"
}
},
"empty_input_body": {
"value": {
"error_code": "empty_input_body"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Bad Request"
},
"403": {
"content": {
"application/json": {
"examples": {
"access_error": {
"value": {
"error_code": "access_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Forbidden",
"headers": {
"x-access-error": {
"description": "Indicates the reason access is not authorized.",
"schema": {
"type": "string",
"enum": [
"quota_exhausted",
"user_non_entitled",
"user_profile_denied",
"invalid_ims_scope"
]
}
}
}
},
"408": {
"content": {
"application/json": {
"examples": {
"timeout_error": {
"value": {
"error_code": "timeout_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Request Timeout"
},
"413": {
"content": {
"text/html": {
"schema": {
"type": "string"
}
}
},
"description": "Request Entity Too Large"
},
"415": {
"content": {
"application/json": {
"examples": {
"invalid_content_type": {
"value": {
"error_code": "invalid_content_type"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unsupported Media Type"
},
"422": {
"content": {
"application/json": {
"examples": {
"validation_error": {
"value": {
"error_code": "validation_error",
"validation_errors": [
{
"ctx": {
"enum_values": [
"photo",
"art"
]
},
"loc": [
"body",
"contentClass"
],
"msg": "value is not a valid enumeration member; permitted: 'photo', 'art'",
"type": "type_error.enum"
}
]
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"examples": {
"rate_limited": {
"value": {
"error_code": "rate_limited"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Too Many Requests",
"headers": {
"retry-after": {
"description": "Indicates the date after which the client should retry the request.",
"schema": {
"type": "string"
}
},
"x-access-rate-limit-level": {
"description": "Indicates the level at which the rate limit was applied. Possible values are:\n- org: The rate limit was applied to the organisation\n- account: The rate limit was applied to the organization's tech account",
"schema": {
"type": "string"
}
}
}
},
"500": {
"content": {
"application/json": {
"examples": {
"runtime_error": {
"value": {
"error_code": "runtime_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Internal Server Error"
}
}
}
},
"/v3/images/generate-object-composite-async": {
"post": {
"operationId": "generateObjectCompositeV3Async",
"summary": "Generate object composite",
"description": "Combines your image and images generated by Firefly to create an image composite, or scene. The images that Firefly generates are based on a text prompt that you provide. You can upload an image with or without an image mask, such as a product photo.\n\nThis task is performed asynchronously, which means that a successful response returns a jobID. Use this ID with the Get Result endpoint to check the status of the job and get the processed image result or with the Cancel Job endpoint to cancel the job.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenerateObjectCompositeRequestV3"
}
},
"multipart/form-data": {
"schema": {
"$ref": "#/components/schemas/Body_generateObjectCompositeV3Async"
}
}
},
"required": true
},
"responses": {
"202": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptResponseV3"
}
}
},
"description": "Successful Response",
"headers": {
"Link": {
"description": "Links to check the job status or cancel the job.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"content": {
"application/json": {
"examples": {
"bad_request": {
"value": {
"error_code": "bad_request"
}
},
"empty_input_body": {
"value": {
"error_code": "empty_input_body"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Bad Request"
},
"403": {
"content": {
"application/json": {
"examples": {
"access_error": {
"value": {
"error_code": "access_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Forbidden",
"headers": {
"x-access-error": {
"description": "Indicates the reason access is not authorized.",
"schema": {
"type": "string",
"enum": [
"quota_exhausted",
"user_non_entitled",
"user_profile_denied",
"invalid_ims_scope"
]
}
}
}
},
"408": {
"content": {
"application/json": {
"examples": {
"timeout_error": {
"value": {
"error_code": "timeout_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Request Timeout"
},
"415": {
"content": {
"application/json": {
"examples": {
"invalid_content_type": {
"value": {
"error_code": "invalid_content_type"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unsupported Media Type"
},
"422": {
"content": {
"application/json": {
"examples": {
"validation_error": {
"value": {
"error_code": "validation_error",
"validation_errors": [
{
"ctx": {
"enum_values": [
"photo",
"art"
]
},
"loc": [
"body",
"contentClass"
],
"msg": "value is not a valid enumeration member; permitted: 'photo', 'art'",
"type": "type_error.enum"
}
]
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"examples": {
"rate_limited": {
"value": {
"error_code": "rate_limited"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Too Many Requests",
"headers": {
"retry-after": {
"description": "Indicates the date after which the client should retry the request.",
"schema": {
"type": "string"
}
},
"x-access-rate-limit-level": {
"description": "Indicates the level at which the rate limit was applied. Possible values are:\n- org: The rate limit was applied to the organisation\n- account: The rate limit was applied to the organization's tech account",
"schema": {
"type": "string"
}
}
}
},
"500": {
"content": {
"application/json": {
"examples": {
"runtime_error": {
"value": {
"error_code": "runtime_error"
}
}
},
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Internal Server Error"
}
}
}
},
"/v3/videos/generate": {
"post": {
"operationId": "generateVideoV3",
"summary": "Generate video",
"description": "Generate a five second video using a text prompt.",
"parameters": [
{
"name": "x-model-version",
"in": "header",
"description": "Specify the Firefly model version to use for the video generation.",
"required": false,
"schema": {
"type": "string",
"default": "video1_standard",
"enum": [
"video1_standard"
]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenerateVideoRequestV3"
}
}
},
"required": true,
"description": "The request body for the video generation."
},
"responses": {
"202": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncAcceptResponseV3"
}
}
},
"description": "Successful Response",
"headers": {
"Link": {
"description": "Links to check the job status or cancel the job.",
"schema": {
"type": "string"
}
}
}
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Bad Request"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Forbidden",
"headers": {
"x-access-error": {
"description": "Indicates the reason access is not authorized.",
"schema": {
"type": "string",
"enum": [
"quota_exhausted",
"user_non_entitled",
"user_profile_denied",
"invalid_ims_scope"
]
}
}
}
},
"408": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Request Timeout"
},
"415": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unsupported Media Type"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Unprocessable Entity"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Too Many Requests",
"headers": {
"retry-after": {
"description": "Indicates the date after which the client should retry the request.",
"schema": {
"type": "string"
}
},
"x-access-rate-limit-level": {
"description": "Indicates the level at which the rate limit was applied.",
"schema": {
"type": "string"
}
}
}
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
},
"description": "Internal Server Error"
}
}
}
},
"/v3/custom-models": {
"get": {
"summary": "Retrieve custom models",
"description": "Retrieve the custom models for a user.",
"operationId": "getCustomModels",
"parameters": [
{
"name": "x-user-token",
"in": "header",
"description": "A user token referencing the user's individual account, obtained using their credentials. The user token must be preceded by `Bearer`.",
"schema": {
"type": "string"
}
},
{
"name": "x-request-id",
"in": "header",
"description": "A unique request identifier defined by you. This is used by Adobe Support to trace the request in logs. This header is automatically generated by the server if not set it explicitly.",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "sortBy",
"in": "query",
"description": "A sorting option for the response list. For a reverse sort, use `-` (e.g., `-modifiedDate`). Multi-vector sorting is not currently supported.",
"schema": {
"type": "string",
"default": "modifiedDate",
"enum": [
"assetName",
"createdDate",
"modifiedDate"
]
}
},
{
"name": "start",
"in": "query",
"description": "The first result to include in a paginated response. Required if a `limit` is specified.",
"schema": {
"type": "string",
"default": "0"
}
},
{
"name": "limit",
"in": "query",
"description": "The number of custom models to return in a paginated response.",
"schema": {
"type": "string",
"maximum": 50,
"minimum": 1
}
},
{
"name": "publishedState",
"in": "query",
"description": "This filters custom models by published state.",
"schema": {
"type": "string",
"default": "published",
"enum": [
"all",
"ready",
"published",
"unpublished",
"queued",
"training",
"failed",
"cancelled"
]
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CustomModelsFF3pInfo"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"406": {
"description": "Not Acceptable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
},
"503": {
"description": "Service Unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
}
}
}
}
},
"/v2/storage/image": {
"post": {
"summary": "Upload image",
"description": "Upload source image or mask for image-to-image operations, such as fill, expand. This API returns an identifier that is used to refer to uploaded content. The uploaded assets will be valid for 7 days from the date you upload them.",
"operationId": "storageImageV2",
"requestBody": {
"content": {
"image/jpeg": {
"schema": {
"type": "string",
"format": "binary"
}
},
"image/png": {
"schema": {
"type": "string",
"format": "binary"
}
},
"image/webp": {
"schema": {
"type": "string",
"format": "binary"
}
}
},
"description": "The PNG/JPEG/WEBP image to be stored (binary data). The maximum file size supported for uploading an image is 15MB.",
"required": true
},
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StorageImageResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorBody"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorBody"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorBody"
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorBody"
}
}
}
},
"451": {
"description": "Unavailable for Legal Reasons",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorBody"
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorBody"
}
}
}
}
}
}
},
"/v3/status/{jobId}": {
"get": {
"operationId": "jobResultV3",
"summary": "Get job result",
"description": "Get the result of the job.",
"tags": [
"Manage jobs"
],
"parameters": [
{
"description": "Unique identifier for the submitted job",
"in": "path",
"name": "jobId",
"required": true,
"schema": {
"description": "Unique identifier for the submitted job",
"title": "title job urn id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"examples": {
"cancel_pending": {
"value": {
"error_code": "some_error_code",
"jobId": "ede28272-5726-4179-84f0-020250966e32",
"message": "some_message",
"status": "cancel_pending"
}
},
"cancelled": {
"value": {
"error_code": "some_error_code",
"jobId": "ede28272-5726-4179-84f0-020250966e32",
"message": "some_message",
"status": "cancelled"
}
},
"failed": {
"value": {
"error_code": "some_error_code",
"jobId": "ede28272-5726-4179-84f0-020250966e32",
"message": "some_message",
"status": "failed"
}
},
"running": {
"value": {
"jobId": "ede28272-5726-4179-84f0-020250966e32",
"status": "running"
}
},
"succeeded": {
"value": {
"jobId": "ede28272-5726-4179-84f0-020250966e32",
"result": {
"outputs": [
{
"image": {
"url": "https://example.com"
},
"seed": 1
}
],
"size": {
"height": 1024,
"width": 1024
}
},
"status": "succeeded"
}
},
"timeout": {
"value": {
"error_code": "some_error_code",
"jobId": "ede28272-5726-4179-84f0-020250966e32",
"message": "some_message",
"status": "timeout"
}
}
},
"schema": {
"anyOf": [
{
"$ref": "#/components/schemas/AsyncTaskResponseV3"
},
{
"$ref": "#/components/schemas/AsyncApiErrorV3"
}
],
"title": "Response Jobresultv3"
}
}
},
"description": "Successful Response",
"headers": {
"Link": {
"description": "Links to check job status & cancel job",
"schema": {
"type": "string"
}
}
}
},
"404": {
"content": {
"application/json": {
"example": {
"error_code": "unknown_job_id",
"message": "The job id is unknown."
},
"schema": {
"$ref": "#/components/schemas/AsyncApiErrorV3"
}
}
},
"description": "Not Found"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}
}
},
"/v3/cancel/{jobId}": {
"put": {
"operationId": "cancelJobV3",
"summary": "Cancel job",
"description": "Cancel the asynchronous job.",
"tags": [
"Manage jobs"
],
"parameters": [
{
"description": "Unique identifier for the submitted job",
"in": "path",
"name": "jobId",
"required": true,
"schema": {
"description": "Unique identifier for the submitted job",
"title": "title job urn id",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {}
}
},
"description": "Successful Response"
},
"404": {
"content": {
"application/json": {
"examples": {
"unknown_job_id": {
"value": {
"error_code": "unknown_job_id",
"message": "The job id is unknown."
}
}
},
"schema": {
"$ref": "#/components/schemas/AsyncApiErrorV3"
}
}
},
"description": "Not Found"
},
"409": {
"content": {
"application/json": {
"examples": {
"job_already_canceled": {
"value": {
"error_code": "job_already_canceled",
"message": "The job was already canceled."
}
},
"job_cancel_failed": {
"value": {
"error_code": "job_cancel_failed",
"message": "The job failed to cancel."
}
},
"job_completed": {
"value": {
"error_code": "job_completed",
"message": "The job was already completed."
}
}
},
"schema": {
"$ref": "#/components/schemas/AsyncApiErrorV3"
}
}
},
"description": "Conflict"
},
"410": {
"content": {
"application/json": {
"examples": {
"job_timeout": {
"value": {
"error_code": "job_timeout",
"message": "The job timed out."
}
}
},
"schema": {
"$ref": "#/components/schemas/AsyncApiErrorV3"
}
}
},
"description": "Gone"
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/HTTPValidationError"
}
}
},
"description": "Validation Error"
}
}
}
}
},
"components": {
"schemas": {
"AlignmentHorizontal": {
"description": "An enumeration.",
"enum": [
"center",
"left",
"right"
],
"title": "AlignmentHorizontal"
},
"AlignmentVertical": {
"description": "An enumeration.",
"enum": [
"center",
"top",
"bottom"
],
"title": "AlignmentVertical"
},
"ApiError": {
"description": "The error within the error response.",
"properties": {
"error_code": {
"$ref": "#/components/schemas/ColligoErrorCodeAsyncV3"
},
"message": {
"title": "Message",
"type": "string"
},
"stack_trace": {
"items": {
"type": "string"
},
"title": "Stack Trace",
"type": "array"
},
"validation_errors": {
"items": {
"$ref": "#/components/schemas/ValidationErrorMessage"
},
"title": "Validation Errors",
"type": "array"
}
},
"required": [
"error_code"
],
"title": "ApiError",
"type": "object"
},
"AsyncAcceptResponseV3": {
"properties": {
"cancelUrl": {
"description": "The URL to cancel the job.",
"title": "Cancel URL",
"type": "string"
},
"jobId": {
"description": "The ID of the job.",
"title": "Job ID",
"type": "string"
},
"statusUrl": {
"description": "The URL to check the status of the job.",
"title": "Status URL",
"type": "string"
}
},
"required": [
"jobId",
"statusUrl",
"cancelUrl"
],
"title": "AsyncAcceptResponseV3",
"type": "object"
},
"AsyncApiErrorV3": {
"description": "The error within the error response.",
"properties": {
"error_code": {
"anyOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/ColligoErrorCodeAsyncV3"
},
{
"$ref": "#/components/schemas/ColliogAsyncStatusErrorCodeV3"
},
{
"$ref": "#/components/schemas/ColligoAsyncCancelErrorCodeV3"
}
],
"title": "Error Code"
},
"jobId": {
"title": "Jobid",
"type": "string"
},
"message": {
"title": "Message",
"type": "string"
},
"status": {
"title": "Status",
"type": "string"
},
"validation_errors": {
"items": {
"$ref": "#/components/schemas/ValidationErrorMessage"
},
"title": "Validation Errors",
"type": "array"
}
},
"title": "AsyncApiErrorV3",
"type": "object"
},
"AsyncTaskResponseV3": {
"properties": {
"jobId": {
"description": "The ID of async job.",
"title": "Job ID",
"type": "string"
},
"progress": {
"title": "Progress",
"type": "number"
},
"result": {
"anyOf": [
{
"$ref": "#/components/schemas/GenerateImagesResponseV3"
},
{
"$ref": "#/components/schemas/GenerateSimilarImagesResponseV3"
},
{
"$ref": "#/components/schemas/ExpandImageResponseV3"
},
{
"$ref": "#/components/schemas/FillImageResponseV3"
},
{
"$ref": "#/components/schemas/GenerateObjectCompositeResponseV3"
}
],
"description": "The result of the job, if the job has completed.",
"title": "Result"
},
"status": {
"description": "The status of the job.",
"title": "Status of the job",
"type": "string",
"enum": [
"pending",
"running",
"succeeded",
"failed",
"canceled"
]
}
},
"required": [
"status",
"jobId"
],
"title": "AsyncTaskResponseV3",
"type": "object"
},
"BaseInputImageV3": {
"properties": {
"source": {
"$ref": "#/components/schemas/PublicBinaryInputV3",
"description": "Source image that Firefly expands, fills or uses to generate similar images"
}
},
"required": [
"source"
],
"title": "BaseInputImageV3",
"type": "object"
},
"BaseInputMaskV3": {
"properties": {
"source": {
"$ref": "#/components/schemas/PublicBinaryInputV3",
"description": "Original mask image."
}
},
"required": [
"source"
],
"title": "BaseInputMaskV3",
"type": "object"
},
"Body_expandImagesV3Async": {
"properties": {
"files": {
"items": {
"format": "binary",
"type": "string"
},
"title": "Files",
"type": "array"
},
"request": {
"$ref": "#/components/schemas/ExpandImageRequestV3"
}
},
"required": [
"request",
"files"
],
"title": "Body_expandImagesV3Async",
"type": "object"
},
"Body_fillImagesV3Async": {
"properties": {
"files": {
"items": {
"format": "binary",
"type": "string"
},
"title": "Files",
"type": "array"
},
"request": {
"$ref": "#/components/schemas/FillImageRequestV3"
}
},
"required": [
"request",
"files"
],
"title": "Body_fillImagesV3Async",
"type": "object"
},
"Body_generateImagesV3Async": {
"properties": {
"files": {
"items": {
"format": "binary",
"type": "string"
},
"title": "Files",
"type": "array"
},
"request": {
"$ref": "#/components/schemas/GenerateImagesRequestV3"
}
},
"required": [
"request",
"files"
],
"title": "Body_generateImagesV3Async",
"type": "object"
},
"Body_generateObjectCompositeV3Async": {
"properties": {
"files": {
"items": {
"format": "binary",
"type": "string"
},
"title": "Files",
"type": "array"
},
"request": {
"$ref": "#/components/schemas/GenerateObjectCompositeRequestV3"
}
},
"required": [
"request",
"files"
],
"title": "Body_generateObjectCompositeV3Async",
"type": "object"
},
"Body_generateSimilarImagesV3Async": {
"properties": {
"files": {
"items": {
"format": "binary",
"type": "string"
},
"title": "Files",
"type": "array"
},
"request": {
"$ref": "#/components/schemas/GenerateSimilarImagesRequestV3"
}
},
"required": [
"request",
"files"
],
"title": "Body_generateSimilarImagesV3Async",
"type": "object"
},
"ColligoAsyncCancelErrorCodeV3": {
"description": "An enumeration.",
"enum": [
"job_timeout",
"job_completed",
"unknown_job_id",
"job_already_canceled",
"job_cancel_failed"
],
"title": "ColligoAsyncCancelErrorCodeV3",
"type": "string"
},
"ColligoErrorCodeAsyncV3": {
"description": "An enumeration.",
"enum": [
"validation_error",
"runtime_error",
"timeout_error",
"rate_limited",
"access_error",
"invalid_content_type",
"empty_input_body",
"bad_request"
],
"type": "string"
},
"ColliogAsyncStatusErrorCodeV3": {
"description": "An enumeration.",
"enum": [
"unknown_job_id"
],
"type": "string"
},
"ContentClassV3": {
"description": "An enumeration.",
"enum": [
"photo",
"art"
],
"type": "string"
},
"ExpandImageRequestV3": {
"properties": {
"image": {
"$ref": "#/components/schemas/InputImageV3",
"description": "The image to expand. Use a URL or an uploadID as the source for the image. Firefly only allows these listed domains for input URLs in the request:
amazonaws.comwindows.netdropboxusercontent.comstorage.googleapis.comnumVariations defaults to the number of seed images, or to 1 if you do not specify seeds.",
"maximum": 4,
"minimum": 1,
"title": "The number of variations to generate",
"type": "integer"
},
"placement": {
"$ref": "#/components/schemas/Placement",
"description": "The position of the source image after Firefly resizes it. The value describes the horizontal and vertical placement and dimensions of the image in the output. Note you cannot use placement for source images when you also apply a mask image."
},
"prompt": {
"description": "An optional text prompt up to 1024 characters. The longer the prompt the better Firefly performs.",
"maxLength": 1024,
"minLength": 1,
"title": "The prompt",
"type": "string"
},
"seeds": {
"description": "Array of seed image IDs. These reference images help ensure consistent image generation across multiple API calls. For example, you can use the same seed to generate a similar image with different styles. If specified alongside with numVariations, the number of seeds must equal to numVariations.",
"items": {
"type": "integer"
},
"maxItems": 4,
"minItems": 1,
"title": "The seed image for each variation",
"type": "array",
"uniqueItems": true
},
"size": {
"allOf": [
{
"$ref": "#/components/schemas/Size"
}
],
"default": {
"height": 2048,
"width": 2048
},
"description": "The desired width and height for the final expanded image in pixels. The maximum size for the output images is 3999px by 3999px.",
"title": "The size"
}
},
"required": [
"image"
],
"title": "Images expand payload",
"type": "object"
},
"ExpandImageResponseV3": {
"properties": {
"outputs": {
"description": "Each image ID.",
"items": {
"$ref": "#/components/schemas/OutputImageV3"
},
"minItems": 1,
"title": "The list of images",
"type": "array"
},
"size": {
"$ref": "#/components/schemas/Size",
"description": "When you provide size as input, this value is the same."
}
},
"required": [
"size",
"outputs"
],
"title": "Images expand response",
"type": "object"
},
"FillImageRequestV3": {
"properties": {
"image": {
"$ref": "#/components/schemas/InputImageV3",
"description": "The image to expand. Use a URL or an uploadID as the source for the image. Firefly only allows these listed domains for input URLs in the request: amazonaws.comwindows.netdropboxusercontent.comstorage.googleapis.comnumVariations defaults to the number of seed images, or to 1 if you do not specify seeds.",
"maximum": 4,
"minimum": 1,
"title": "The number of variations",
"type": "integer"
},
"prompt": {
"description": "An optional text prompt up to 1024 characters. The longer the prompt the better Firefly performs.",
"maxLength": 1024,
"minLength": 1,
"title": "The prompt",
"type": "string"
},
"promptBiasingLocaleCode": {
"description": "A hyphen-separated string combining the ISO 639-1 language code and the ISO 3166-1 region, such as en-US. When a locale is set, the prompt will be biased to generate more relevant content for that region. The locale will be auto-detected if not specified based on your profile and the accepted language header.",
"title": "The locale used to generate an image",
"type": "string"
},
"seeds": {
"description": "Array of seed image IDs. These reference images help ensure consistent image generation across multiple API calls. For example, you can use the same seed to generate a similar image with different styles. If specified alongside with numVariations, the number of seeds must equal to numVariations.",
"items": {
"type": "integer"
},
"maxItems": 4,
"minItems": 1,
"title": "The seed of each variation",
"type": "array",
"uniqueItems": true
},
"size": {
"allOf": [
{
"$ref": "#/components/schemas/Size"
}
],
"default": {
"height": 2048,
"width": 2048
},
"description": "The desired width and height for the final expanded image in pixels. The supported sizes for the output images are: numVariations defaults to the number of seed images, or to 1 if you do not specify `seeds`.",
"maximum": 4,
"minimum": 1,
"type": "integer"
},
"prompt": {
"description": "A text prompt to support the generation of an image. The longer the prompt the better Firefly performs.",
"maxLength": 1024,
"minLength": 1,
"type": "string"
},
"promptBiasingLocaleCode": {
"description": "A hyphen-separated string combining the ISO 639-1 language code and the ISO 3166-1 region (like en-US). When a locale is set, the prompt will be biased to generate more relevant content for that region. If not specified, the locale will be auto-detected based on your profile and the accepted language header.",
"type": "string"
},
"seeds": {
"description": "An array of seed image IDs. These reference images help ensure consistent image generation across multiple API calls. For example, use the same seed to generate a similar image in different styles. If specified along with numVariations, the number of seeds provided must equal numVariations.",
"items": {
"type": "integer"
},
"maxItems": 4,
"minItems": 1,
"type": "array",
"uniqueItems": true
},
"size": {
"allOf": [
{
"$ref": "#/components/schemas/Size"
}
],
"default": {
"height": 2048,
"width": 2048
},
"description": "The desired width and height for the final image, in pixels. Supported sizes for the output images with `image3` are: photo or art."
},
"outputs": {
"description": "Each image ID.",
"items": {
"$ref": "#/components/schemas/OutputImageV3"
},
"minItems": 1,
"title": "List of images",
"type": "array"
},
"promptHasBlockedArtists": {
"description": "The generated image does not comply to its full prompt if the prompt names artists that are blocked.",
"title": "The prompt had artists that were blocked",
"type": "boolean"
},
"promptHasDeniedWords": {
"description": "The generated image does not comply to its full prompt if the prompt contains blocked words or descriptions.",
"title": "The prompt had denied words",
"type": "boolean"
},
"size": {
"$ref": "#/components/schemas/Size"
}
},
"required": [
"size",
"outputs"
],
"title": "Generating images from prompt",
"type": "object"
},
"GenerateObjectCompositeRequestV3": {
"properties": {
"contentClass": {
"$ref": "#/components/schemas/ContentClassV3"
},
"image": {
"$ref": "#/components/schemas/InputImageV3",
"description": "The image to expand. Use a URL or an uploadID as the source for the image. Firefly only allows these listed domains for input URLs in the request: amazonaws.comwindows.netdropboxusercontent.comstorage.googleapis.comnumVariations, the number of seeds must equal to numVariations.",
"items": {
"type": "integer"
},
"maxItems": 4,
"minItems": 1,
"title": "The seed image for each variation",
"type": "array",
"uniqueItems": true
},
"size": {
"allOf": [
{
"$ref": "#/components/schemas/Size"
}
],
"default": {
"height": 2048,
"width": 2048
},
"description": "The desired width and height for the final image in pixels. The supported sizes for the output images are: uploadID as the source for the image. Firefly only allows these listed domains: amazonaws.comwindows.netdropboxusercontent.comstorage.googleapis.comnumVariations defaults to the number of seed images, or to 1 if you do not specify `seeds`.",
"maximum": 4,
"minimum": 1,
"title": "The number of variations",
"type": "integer"
},
"seeds": {
"description": "Array of seed image IDs. These reference images help ensure consistent image generation across multiple API calls. If specified alongside with numVariations, the number of seeds must equal to numVariations.",
"items": {
"type": "integer"
},
"maxItems": 4,
"minItems": 1,
"title": "The seed image for each variation",
"type": "array",
"uniqueItems": true
},
"size": {
"allOf": [
{
"$ref": "#/components/schemas/Size"
}
],
"default": {
"height": 2048,
"width": 2048
},
"description": "The desired width and height for the final image in pixels. The supported sizes for the output images are: mask instead.",
"title": "Deprecated mask image"
},
"source": {
"$ref": "#/components/schemas/PublicBinaryInputV3",
"description": "Source image that Firefly expands, fills or uses to generate similar images",
"title": "Source image"
}
},
"required": [
"source"
],
"title": "InputImageV3",
"type": "object"
},
"InputMaskV3": {
"properties": {
"invert": {
"description": "Invert mask is an optional boolen property, use true if you want take an image mask, invert it and apply it.",
"title": "Invert mask",
"type": "boolean"
},
"source": {
"$ref": "#/components/schemas/PublicBinaryInputV3"
}
},
"required": [
"source"
],
"title": "InputMaskV3",
"type": "object"
},
"OutputImageV3": {
"properties": {
"image": {
"$ref": "#/components/schemas/PublicBinaryOutputV3"
},
"seed": {
"title": "Seed",
"type": "integer"
}
},
"required": [
"seed",
"image"
],
"title": "OutputImageV3",
"type": "object"
},
"Placement": {
"properties": {
"alignment": {
"allOf": [
{
"$ref": "#/components/schemas/PlacementAlignment"
}
],
"description": "Specify horizontal and vertical alignment. Possible values for horizontal=(center|left|right) and for vertical=(center|top|bottom).",
"title": "Alignment"
},
"inset": {
"allOf": [
{
"$ref": "#/components/schemas/PlacementInset"
}
],
"description": "Margin values in target size",
"title": "Margin values in target size"
}
},
"title": "Placement",
"type": "object"
},
"PlacementAlignment": {
"properties": {
"horizontal": {
"allOf": [
{
"$ref": "#/components/schemas/AlignmentHorizontal"
}
],
"default": "center"
},
"vertical": {
"allOf": [
{
"$ref": "#/components/schemas/AlignmentVertical"
}
],
"default": "center"
}
},
"title": "PlacementAlignment",
"type": "object"
},
"PlacementInset": {
"properties": {
"bottom": {
"description": "The space between bottom edge of the result image and bottom edge of the placed object image.",
"title": "Bottom Inset",
"type": "integer"
},
"left": {
"description": "The space between left edge of the result image and left edge of the placed object image.",
"title": "Left Inset",
"type": "integer"
},
"right": {
"description": "The space between right edge of the result image and right edge of the placed object image.",
"title": "Right Inset",
"type": "integer"
},
"top": {
"description": "The space between top edge of the result image and top edge of the placed object image.",
"title": "Top Inset",
"type": "integer"
}
},
"title": "PlacementInset",
"type": "object"
},
"PublicBinaryInputV3": {
"properties": {
"uploadId": {
"description": "The `uploadId` from the storage API response.",
"format": "uuid4",
"title": "The upload ID",
"type": "string"
},
"url": {
"description": "The pre-signed URL of an uploaded file. Use a URL or an `uploadID` as the source for the image. Firefly only allows these listed domains in the request: amazonaws.comwindows.netdropboxusercontent.comstorage.googleapis.com