Adobe Lightroom API (Firefly Services)
AI-powered image editing API available through Adobe Firefly Services. Provides auto tone, auto straighten, preset application, and programmatic editing capabilities using REST endpoints.
AI-powered image editing API available through Adobe Firefly Services. Provides auto tone, auto straighten, preset application, and programmatic editing capabilities using REST endpoints.
openapi: 3.1.0
info:
title: Adobe Lightroom API (Firefly Services)
description: >-
AI-powered image editing API available through Adobe Firefly Services.
Provides programmatic access to Lightroom editing capabilities including
auto tone, auto straighten, preset application, and image editing
operations. All operations accept cloud-stored images and return processed
results to cloud storage. Supports Adobe Creative Cloud, Amazon S3,
Azure Blob Storage, and Dropbox as storage backends.
version: '1'
contact:
name: Adobe Firefly Services Support
url: https://community.adobe.com/t5/lightroom/ct-p/ct-lightroom
license:
name: Adobe Terms of Service
url: https://www.adobe.com/legal/terms.html
termsOfService: https://www.adobe.com/legal/terms.html
externalDocs:
description: Firefly Services Lightroom API Documentation
url: https://developer.adobe.com/firefly-services/docs/lightroom/
servers:
- url: https://image.adobe.io
description: Adobe Firefly Services Production Server
tags:
- name: Auto Straighten
description: Automatically detect and correct image horizon alignment
- name: Auto Tone
description: Automatically adjust tonal values for optimal exposure and contrast
- name: Edit Image
description: Apply custom Lightroom edit settings to images
- name: Presets
description: Apply Lightroom presets (XMP develop settings) to images
security:
- oauth2:
- firefly_api
- apiKey: []
paths:
/lrService/autoTone:
post:
operationId: autoTone
summary: Adobe Lightroom Apply Auto Tone Adjustments
description: >-
Automatically adjusts the tonal values of an image for optimal
exposure, contrast, highlights, shadows, whites, blacks, and
vibrance. The AI analyzes the image content and applies appropriate
adjustments similar to the Auto button in Lightroom's Basic panel.
tags:
- Auto Tone
parameters:
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/Authorization'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AutoToneRequest'
examples:
AutotoneRequestExample:
summary: Default autoTone request
x-microcks-default: true
value:
inputs:
source:
href: example_value
storage: adobe
outputs:
- href: example_value
storage: adobe
type: image/jpeg
overwrite: true
quality: 10
responses:
'200':
description: Auto tone applied successfully
content:
application/json:
schema:
$ref: '#/components/schemas/JobResponse'
examples:
Autotone200Example:
summary: Default autoTone 200 response
x-microcks-default: true
value:
jobId: '500123'
created: '2026-01-15T10:30:00Z'
modified: '2026-01-15T10:30:00Z'
outputs:
- input: example_value
status: pending
href: example_value
errors:
type: example_value
title: Example Title
code: 10
_links:
self:
href: example_value
'202':
description: Job accepted and processing
content:
application/json:
schema:
$ref: '#/components/schemas/JobResponse'
examples:
Autotone202Example:
summary: Default autoTone 202 response
x-microcks-default: true
value:
jobId: '500123'
created: '2026-01-15T10:30:00Z'
modified: '2026-01-15T10:30:00Z'
outputs:
- input: example_value
status: pending
href: example_value
errors:
type: example_value
title: Example Title
code: 10
_links:
self:
href: example_value
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'415':
$ref: '#/components/responses/UnsupportedMediaType'
'429':
$ref: '#/components/responses/TooManyRequests'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/lrService/autoStraighten:
post:
operationId: autoStraighten
summary: Adobe Lightroom Automatically Straighten an Image
description: >-
Detects the horizon or dominant lines in an image and applies a
rotation correction to straighten it. Uses AI analysis to determine
the appropriate rotation angle, similar to Lightroom's auto
straighten feature in the Crop & Rotate tool.
tags:
- Auto Straighten
parameters:
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/Authorization'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AutoStraightenRequest'
examples:
AutostraightenRequestExample:
summary: Default autoStraighten request
x-microcks-default: true
value:
inputs:
source:
href: example_value
storage: adobe
outputs:
- href: example_value
storage: adobe
type: image/jpeg
overwrite: true
quality: 10
responses:
'200':
description: Auto straighten applied successfully
content:
application/json:
schema:
$ref: '#/components/schemas/JobResponse'
examples:
Autostraighten200Example:
summary: Default autoStraighten 200 response
x-microcks-default: true
value:
jobId: '500123'
created: '2026-01-15T10:30:00Z'
modified: '2026-01-15T10:30:00Z'
outputs:
- input: example_value
status: pending
href: example_value
errors:
type: example_value
title: Example Title
code: 10
_links:
self:
href: example_value
'202':
description: Job accepted and processing
content:
application/json:
schema:
$ref: '#/components/schemas/JobResponse'
examples:
Autostraighten202Example:
summary: Default autoStraighten 202 response
x-microcks-default: true
value:
jobId: '500123'
created: '2026-01-15T10:30:00Z'
modified: '2026-01-15T10:30:00Z'
outputs:
- input: example_value
status: pending
href: example_value
errors:
type: example_value
title: Example Title
code: 10
_links:
self:
href: example_value
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/lrService/presets:
post:
operationId: applyPresets
summary: Adobe Lightroom Apply Lightroom Presets to an Image
description: >-
Applies one or more Lightroom presets (XMP develop settings files) to
an image. Presets are provided as references to XMP files stored in
cloud storage. Multiple presets can be applied in sequence, with later
presets overriding earlier settings where they overlap.
tags:
- Presets
parameters:
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/Authorization'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApplyPresetsRequest'
examples:
ApplypresetsRequestExample:
summary: Default applyPresets request
x-microcks-default: true
value:
inputs:
source:
href: example_value
storage: adobe
presets:
- {}
outputs:
- href: example_value
storage: adobe
type: image/jpeg
overwrite: true
quality: 10
responses:
'200':
description: Presets applied successfully
content:
application/json:
schema:
$ref: '#/components/schemas/JobResponse'
examples:
Applypresets200Example:
summary: Default applyPresets 200 response
x-microcks-default: true
value:
jobId: '500123'
created: '2026-01-15T10:30:00Z'
modified: '2026-01-15T10:30:00Z'
outputs:
- input: example_value
status: pending
href: example_value
errors:
type: example_value
title: Example Title
code: 10
_links:
self:
href: example_value
'202':
description: Job accepted and processing
content:
application/json:
schema:
$ref: '#/components/schemas/JobResponse'
examples:
Applypresets202Example:
summary: Default applyPresets 202 response
x-microcks-default: true
value:
jobId: '500123'
created: '2026-01-15T10:30:00Z'
modified: '2026-01-15T10:30:00Z'
outputs:
- input: example_value
status: pending
href: example_value
errors:
type: example_value
title: Example Title
code: 10
_links:
self:
href: example_value
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/lrService/edit:
post:
operationId: editImage
summary: Adobe Lightroom Apply Custom Edit Settings to an Image
description: >-
Applies custom Lightroom develop settings to an image. Accepts a
comprehensive set of editing parameters covering white balance,
exposure, contrast, highlights, shadows, tone curve, HSL, split
toning, sharpening, noise reduction, lens corrections, and more.
Provides the full range of non-destructive editing capabilities
available in the Lightroom develop module.
tags:
- Edit Image
parameters:
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/Authorization'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EditImageRequest'
examples:
EditimageRequestExample:
summary: Default editImage request
x-microcks-default: true
value:
inputs:
source:
href: example_value
storage: adobe
outputs:
- href: example_value
storage: adobe
type: image/jpeg
overwrite: true
quality: 10
options:
Exposure: 42.5
Contrast: 10
Highlights: 10
Shadows: 10
Whites: 10
Blacks: 10
Clarity: 10
Dehaze: 10
Vibrance: 10
Saturation: 10
WhiteBalance: As Shot
Temperature: 10
Tint: 10
Sharpness: 10
SharpenRadius: 42.5
SharpenDetail: 10
NoiseReduction: 10
ColorNoiseReduction: 10
VignetteAmount: 10
GrainAmount: 10
responses:
'200':
description: Edit applied successfully
content:
application/json:
schema:
$ref: '#/components/schemas/JobResponse'
examples:
Editimage200Example:
summary: Default editImage 200 response
x-microcks-default: true
value:
jobId: '500123'
created: '2026-01-15T10:30:00Z'
modified: '2026-01-15T10:30:00Z'
outputs:
- input: example_value
status: pending
href: example_value
errors:
type: example_value
title: Example Title
code: 10
_links:
self:
href: example_value
'202':
description: Job accepted and processing
content:
application/json:
schema:
$ref: '#/components/schemas/JobResponse'
examples:
Editimage202Example:
summary: Default editImage 202 response
x-microcks-default: true
value:
jobId: '500123'
created: '2026-01-15T10:30:00Z'
modified: '2026-01-15T10:30:00Z'
outputs:
- input: example_value
status: pending
href: example_value
errors:
type: example_value
title: Example Title
code: 10
_links:
self:
href: example_value
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
securitySchemes:
oauth2:
type: oauth2
description: OAuth 2.0 via Adobe IMS for Firefly Services
flows:
clientCredentials:
tokenUrl: https://ims-na1.adobelogin.com/ims/token/v3
scopes:
firefly_api: Access Firefly Services APIs
openid: OpenID Connect
apiKey:
type: apiKey
name: X-Api-Key
in: header
description: API key from Adobe Developer Console
parameters:
XApiKey:
name: X-Api-Key
in: header
required: true
description: API key (client_id) from Adobe Developer Console
schema:
type: string
Authorization:
name: Authorization
in: header
required: true
description: Bearer token from Adobe IMS
schema:
type: string
pattern: ^Bearer .+$
schemas:
StorageInput:
type: object
description: Reference to an input file stored in cloud storage
required:
- href
- storage
properties:
href:
type: string
description: >-
URL or path to the input file. For Creative Cloud, use the asset
path. For external storage, use the presigned URL.
example: example_value
storage:
type: string
description: Storage type where the input file is located
enum:
- adobe
- external
- azure
- dropbox
example: adobe
StorageOutput:
type: object
description: Reference to the output destination in cloud storage
required:
- href
- storage
- type
properties:
href:
type: string
description: URL or path for the output file
example: example_value
storage:
type: string
description: Storage type for the output
enum:
- adobe
- external
- azure
- dropbox
example: adobe
type:
type: string
description: Output image format
enum:
- image/jpeg
- image/png
- image/tiff
- image/dng
example: image/jpeg
overwrite:
type: boolean
description: Whether to overwrite existing files
default: true
example: true
quality:
type: integer
description: JPEG quality (1-12) when output type is image/jpeg
minimum: 1
maximum: 12
example: 10
AutoToneRequest:
type: object
required:
- inputs
- outputs
properties:
inputs:
type: object
required:
- source
properties:
source:
$ref: '#/components/schemas/StorageInput'
example: example_value
outputs:
type: array
description: One or more output destinations
items:
$ref: '#/components/schemas/StorageOutput'
example: []
AutoStraightenRequest:
type: object
required:
- inputs
- outputs
properties:
inputs:
type: object
required:
- source
properties:
source:
$ref: '#/components/schemas/StorageInput'
example: example_value
outputs:
type: array
items:
$ref: '#/components/schemas/StorageOutput'
example: []
ApplyPresetsRequest:
type: object
required:
- inputs
- outputs
properties:
inputs:
type: object
required:
- source
- presets
properties:
source:
$ref: '#/components/schemas/StorageInput'
presets:
type: array
description: >-
List of preset XMP files to apply. Presets are applied in
order, with later presets overriding earlier ones.
items:
$ref: '#/components/schemas/StorageInput'
example: example_value
outputs:
type: array
items:
$ref: '#/components/schemas/StorageOutput'
example: []
EditImageRequest:
type: object
required:
- inputs
- outputs
properties:
inputs:
type: object
required:
- source
properties:
source:
$ref: '#/components/schemas/StorageInput'
example: example_value
outputs:
type: array
items:
$ref: '#/components/schemas/StorageOutput'
example: []
options:
type: object
description: >-
Lightroom develop settings to apply. All values are optional and
correspond to Lightroom develop module parameters.
properties:
Exposure:
type: number
description: Exposure adjustment in stops
minimum: -5.0
maximum: 5.0
Contrast:
type: integer
description: Contrast adjustment
minimum: -100
maximum: 100
Highlights:
type: integer
description: Highlights recovery
minimum: -100
maximum: 100
Shadows:
type: integer
description: Shadow recovery
minimum: -100
maximum: 100
Whites:
type: integer
description: White point adjustment
minimum: -100
maximum: 100
Blacks:
type: integer
description: Black point adjustment
minimum: -100
maximum: 100
Clarity:
type: integer
description: Clarity (midtone contrast)
minimum: -100
maximum: 100
Dehaze:
type: integer
description: Dehaze amount
minimum: -100
maximum: 100
Vibrance:
type: integer
description: Vibrance adjustment
minimum: -100
maximum: 100
Saturation:
type: integer
description: Saturation adjustment
minimum: -100
maximum: 100
WhiteBalance:
type: string
description: White balance preset
enum:
- As Shot
- Auto
- Cloudy
- Custom
- Daylight
- Flash
- Fluorescent
- Shade
- Tungsten
Temperature:
type: integer
description: Color temperature in Kelvin
minimum: 2000
maximum: 50000
Tint:
type: integer
description: Tint adjustment (green-magenta)
minimum: -150
maximum: 150
Sharpness:
type: integer
description: Sharpening amount
minimum: 0
maximum: 150
SharpenRadius:
type: number
description: Sharpening radius
minimum: 0.5
maximum: 3.0
SharpenDetail:
type: integer
description: Sharpening detail
minimum: 0
maximum: 100
NoiseReduction:
type: integer
description: Luminance noise reduction
minimum: 0
maximum: 100
ColorNoiseReduction:
type: integer
description: Color noise reduction
minimum: 0
maximum: 100
VignetteAmount:
type: integer
description: Post-crop vignette amount
minimum: -100
maximum: 100
GrainAmount:
type: integer
description: Film grain amount
minimum: 0
maximum: 100
example: example_value
JobResponse:
type: object
properties:
jobId:
type: string
description: Unique job identifier for tracking
example: '500123'
created:
type: string
format: date-time
description: Job creation timestamp
example: '2026-01-15T10:30:00Z'
modified:
type: string
format: date-time
description: Job last modified timestamp
example: '2026-01-15T10:30:00Z'
outputs:
type: array
items:
type: object
properties:
input:
type: string
description: Reference to the input file
status:
type: string
description: Processing status for this output
enum:
- pending
- running
- succeeded
- failed
href:
type: string
description: URL of the completed output
errors:
type: object
description: Error details if processing failed
properties:
type:
type: string
title:
type: string
code:
type: integer
example: []
_links:
type: object
properties:
self:
type: object
properties:
href:
type: string
example: example_value
ErrorResponse:
type: object
properties:
type:
type: string
description: Error type URI
example: example_value
title:
type: string
description: Short error description
example: Example Title
code:
type: integer
description: Error code
example: 10
detail:
type: string
description: Detailed error message
example: example_value
responses:
BadRequest:
description: Invalid request parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: Authentication required or invalid token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Forbidden:
description: Insufficient permissions or quota exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
UnsupportedMediaType:
description: Input file format not supported
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
TooManyRequests:
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'