{
"openapi": "3.1.0",
"info": {
"version": "3.0.0",
"title": "Firefly API",
"description": "REST API for Adobe Firefly services including image generation, image alteration, image upscaling, video generation, and other related services."
},
"servers": [
{
"url": "https://firefly-api.adobe.io",
"description": "Production server."
}
],
"security": [
{
"X-Api-Key": [],
"AccessToken": []
}
],
"tags": [
{
"name": "Common Operations",
"description": "Core Firefly API operations for generating and manipulating images and videos."
},
{
"name": "Composite Operations",
"description": "Object composite image generation: prompt-based composite, precise composite, and adaptive composite endpoints."
},
{
"name": "Upscale",
"description": "Image upscaling with the precise upsampler."
},
{
"name": "Manage jobs",
"description": "Endpoints for managing running asynchronous 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.",
"tags": ["Common Operations"],
"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": "Accepted",
"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"
}
]
}
},
"unsupported_value": {
"summary": "Unsupported value",
"value": {
"error_code": "validation_error",
"validation_errors": [
{
"loc": ["body", "seeds"],
"msg": "ensure this value has at most 1 items",
"type": "value_error.list.max_items"
}
]
}
},
"assertion_violation": {
"summary": "Assertion violation",
"value": {
"error_code": "cai_assertion_violation_error",
"message": "Request failed content assertion checks."
}
}
},
"schema": {
"$ref": "#/components/schemas/ValidationErrorResponse"
}
}
},
"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 organization\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"
}
}
}
},
"/v4/images/generate-async": {
"post": {
"operationId": "firefly_image_v5_generate_async_v4",
"summary": "Generate images with Image5",
"description": "Generate images asynchronously using Firefly's Image5 model. When referenceBlobs is included in the request, omit aspectRatio or set it to auto.",
"tags": ["Common Operations"],
"parameters": [
{
"name": "x-model-version",
"in": "header",
"required": true,
"schema": {
"type": "string",
"enum": ["image5"],
"default": "image5"
},
"description": "The model version to use for image generation."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImageGenerateRequestV3"
},
"examples": {
"fullPayload": {
"summary": "Full payload example",
"value": {
"prompt": "A futuristic city glowing at night, with neon lights and flying cars",
"aspectRatio": "auto",
"resolutionLevel": "2.4MP",
"modelId": "firefly_image",
"numVariations": 1,
"seeds": [42345],
"modelSpecificPayload": {
"localeCode": "en-US",
"prompt_reasoner": "quality"
},
"referenceBlobs": [
{
"source": {
"url": "https://example.com/reference-image.jpg"
},
"usage": "general"
}
]
}
},
"textToImageGeneration": {
"summary": "Text-to-Image generation",
"value": {
"prompt": "A hyper-detailed illustration of a floating city at sunrise",
"aspectRatio": "16:9",
"resolutionLevel": "4MP",
"modelId": "firefly_image",
"numVariations": 1,
"referenceBlobs": []
}
},
"imageToImageInstructEdit": {
"summary": "Image-to-Image instruct edit",
"value": {
"prompt": "Add warm sunset lighting and enhance the reflection on the water",
"resolutionLevel": "2.4MP",
"modelId": "firefly_image",
"numVariations": 1,
"referenceBlobs": [
{
"source": {
"uploadId": "123e4567-e89b-12d3-a456-426614174000"
},
"usage": "general"
}
]
}
}
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AsyncTaskResponse"
},
"example": {
"links": {
"cancel": {
"href": "https://firefly-api.adobe.io/v3/cancel/job-abc123"
},
"result": {
"href": "https://firefly-api.adobe.io/v3/status/job-abc123"
}
},
"progress": 0
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"404": {
"description": "Requested Resource Was Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"408": {
"description": "Request Timeout",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"409": {
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"410": {
"description": "Gone",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"415": {
"description": "Unsupported Media Type",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationErrorResponse"
},
"examples": {
"invalid_enum": {
"summary": "Invalid enum value",
"value": {
"error_code": "validation_error",
"validation_errors": [
{
"loc": ["body", "aspectRatio"],
"msg": "value is not a valid enumeration member; permitted: '1:1', '4:3', '3:4', '16:9', '9:16', 'auto'",
"type": "type_error.enum"
}
]
}
},
"unsupported_value": {
"summary": "Unsupported value",
"value": {
"error_code": "validation_error",
"validation_errors": [
{
"loc": ["body", "numVariations"],
"msg": "ensure this value is less than or equal to 1",
"type": "value_error.number.not_le"
}
]
}
},
"assertion_violation": {
"summary": "Assertion violation",
"value": {
"error_code": "cai_assertion_violation_error",
"message": "Request failed content assertion checks."
}
}
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"451": {
"description": "Unavailable For Legal Reasons",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ContentPolicyErrorResponse"
},
"examples": {
"prompt_unsafe": {
"summary": "Unsafe prompt",
"value": {
"error_code": "prompt_unsafe",
"message": "The prompt did not pass content policy checks."
}
},
"input_image_unsafe": {
"summary": "Unsafe input image",
"value": {
"error_code": "input_media_unsafe",
"message": "The input image did not pass content policy checks."
}
}
}
}
}
},
"499": {
"description": "Client Closed Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"501": {
"description": "Not Implemented",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
},
"503": {
"description": "Service Unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiError"
}
}
}
}
}
}
},
"/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.",
"tags": ["Common Operations"],
"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": "Accepted",
"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/ValidationErrorResponse"
}
}
},
"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 organization\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 to expand it. Optionally, provide a text prompt to generate additional imagery for the expansion.",
"tags": ["Common Operations"],
"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": "Accepted",
"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/ValidationErrorResponse"
}
}
},
"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 organization\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": "Generates a fill in an area of an image based on a text prompt. A mask defines the area of the image to be filled.",
"tags": ["Common Operations"],
"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": "Accepted",
"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/ValidationErrorResponse"
}
}
},
"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 organization\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, but for a successful result one of the following conditions must be true:
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 along with numVariations, the number of seeds must equal 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 along with numVariations, the number of seeds must equal 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: referenceBlobs is included in the request, this property should be omitted or set to auto."
},
"resolutionLevel": {
"type": "string",
"title": "Resolution level",
"description": "The resolution level.",
"enum": ["1MP", "2.4MP", "4MP"],
"default": "2.4MP"
},
"modelId": {
"$ref": "#/components/schemas/FireflyModelId",
"description": "The specific model to use for image generation. Available options: 'firefly_image' for Firefly Image model."
},
"modelSpecificPayload": {
"$ref": "#/components/schemas/ModelSpecificPayloadV3",
"description": "Additional model-specific parameters for controlling the generation process."
},
"numVariations": {
"type": "integer",
"maximum": 1,
"title": "The number of variations",
"description": "The number of image variations to generate. Greater than 1 is not supported. Only one image per variation is allowed. For multiple variations, send separate requests."
},
"referenceBlobs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ReferenceBlobV3"
},
"title": "Reference blobs",
"description": "List of reference blobs that will be used as additional input for the generation process. Only one reference image is supported. When this array is not empty, aspectRatio must be omitted or set to auto. [Pre-signed URLs can be used from supported domains](https://developer.adobe.com/firefly-services/docs/firefly-api/getting-started/usage-notes/#image-api-usage).",
"default": [],
"maxItems": 1
},
"seeds": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 1,
"title": "The seeds for the generations",
"description": "The seed value to vary the image generation. Only one seed per variation is allowed. If specified alongside with numVariations, the number of seeds must be equal to numVariations."
}
}
},
"ModelSpecificPayloadV3": {
"type": "object",
"title": "ModelSpecificPayloadV3",
"description": "Model-specific payload parameters for V3 generation workflows.",
"properties": {
"localeCode": {
"type": "string",
"title": "The locale code used for image generations",
"description": "The locale code (following RFC 5646 format, e.g., 'en-US') will be used to generate content that is more relevant for user's country and language.",
"example": "en-US"
},
"prompt_reasoner": {
"type": "string",
"title": "Prompt reasoner mode",
"description": "Controls the prompt reasoning strategy used during image generation. When set to quality, the response includes a populated altText field with a generated description of the image. When set to speed, prompt reasoning is optimized for speed and the altText field is returned empty.",
"enum": ["quality", "speed"],
"default": "speed",
"example": "quality"
}
}
},
"ReferenceBlobV3": {
"type": "object",
"title": "ReferenceBlobV3",
"description": "Reference blob for V3 API. Style Guide compliant: The source property specifies the input location, and other properties like usage are peers of source.",
"required": ["source"],
"properties": {
"source": {
"$ref": "#/components/schemas/ReferenceBlobSourceV3",
"description": "The source location of the reference image."
},
"usage": {
"$ref": "#/components/schemas/ReferenceBlobUsageV3",
"description": "The usage of the reference blob. Available options: 'general' for general reference."
}
}
},
"ReferenceBlobSourceV3": {
"type": "object",
"title": "ReferenceBlobSourceV3",
"description": "Source specification for a reference blob input asset. Input images must meet these requirements: file size must be 10 MB or less; image area must be between 512×512 and 2048×2048 pixels (inclusive); aspect ratio must be between 1:5 and 5:1 (inclusive).",
"properties": {
"uploadId": {
"type": "string",
"format": "uuid",
"title": "Upload ID",
"description": "The ID of an asset previously uploaded to the Firefly Upload Image API."
},
"url": {
"type": "string",
"title": "URL",
"description": "URL of the reference image."
}
}
},
"ReferenceBlobUsageV3": {
"type": "string",
"title": "ReferenceBlobUsageV3",
"enum": ["general"]
},
"GenerateImagesResponseV3": {
"properties": {
"altText": {
"description": "A generated text description of the image. Populated when prompt_reasoner is set to quality in the request. Returns an empty string otherwise.",
"title": "Alt text",
"type": "string"
},
"contentClass": {
"$ref": "#/components/schemas/ContentClassV3",
"description": "Generate an image to being more photographic or more like art. Either 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 with 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 with 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 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 along with numVariations, the number of seeds must equal 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."
}
},
"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