Lightroom Services API
Core partner API for accessing Lightroom cloud catalog data, albums, and assets. Partner applications authenticate Lightroom customers through Adobe Identity Management System using a standard OAuth 2.0 workflow.
Core partner API for accessing Lightroom cloud catalog data, albums, and assets. Partner applications authenticate Lightroom customers through Adobe Identity Management System using a standard OAuth 2.0 workflow.
openapi: 3.1.0
info:
title: Adobe Lightroom Lightroom Services API
description: >-
Core partner API for accessing Adobe Lightroom cloud catalog data, albums,
and assets. Partner applications authenticate Lightroom customers through
Adobe Identity Management System (IMS) using a standard OAuth 2.0 workflow.
Provides RESTful access to a customer's cloud-synced Lightroom catalog
including photos, albums, and metadata.
version: '2'
contact:
name: Adobe Lightroom Developer 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: Lightroom Services API Documentation
url: https://developer.adobe.com/lightroom/lightroom-api-docs/api/
servers:
- url: https://lr.adobe.io/v2
description: Lightroom Services Production Server
tags:
- name: Albums
description: Operations on albums and album assets
- name: Assets
description: >-
Operations on photo assets including upload, download, metadata, and
renditions
- name: Catalog
description: Operations on the customer's Lightroom catalog
- name: Health
description: API health check endpoints
- name: Renditions
description: Operations on asset renditions (thumbnails and previews)
security:
- oauth2:
- lr_partner_apis
- apiKey: []
paths:
/health:
get:
operationId: getHealthCheck
summary: Adobe Lightroom Get Api Health Status
description: >-
Returns the health status of the Lightroom Services API. This endpoint
does not require authentication and can be used to verify API
availability.
tags:
- Health
security: []
responses:
'200':
description: API is healthy and available
content:
application/json:
schema:
$ref: '#/components/schemas/HealthResponse'
examples:
Gethealthcheck200Example:
summary: Default getHealthCheck 200 response
x-microcks-default: true
value:
status: example_value
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/catalog:
get:
operationId: getCatalog
summary: Adobe Lightroom Get the Customer's Catalog
description: >-
Retrieves the catalog metadata for the authenticated Lightroom customer.
Each customer has a single catalog that contains all their assets and
albums. The catalog_id returned is used as a path parameter in most
other API calls.
tags:
- Catalog
parameters:
- $ref: '#/components/parameters/XApiKey'
responses:
'200':
description: Catalog retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogResponse'
examples:
Getcatalog200Example:
summary: Default getCatalog 200 response
x-microcks-default: true
value:
base: example_value
id: abc123
type: example_value
created: '2026-01-15T10:30:00Z'
updated: '2026-01-15T10:30:00Z'
payload:
name: Example Title
userCreated: '2026-01-15T10:30:00Z'
userUpdated: '2026-01-15T10:30:00Z'
links: {}
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/catalogs/{catalog_id}:
get:
operationId: getCatalogById
summary: Adobe Lightroom Get Catalog by Id
description: >-
Retrieves catalog metadata for a specific catalog by its identifier.
tags:
- Catalog
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/XApiKey'
responses:
'200':
description: Catalog retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogResponse'
examples:
Getcatalogbyid200Example:
summary: Default getCatalogById 200 response
x-microcks-default: true
value:
base: example_value
id: abc123
type: example_value
created: '2026-01-15T10:30:00Z'
updated: '2026-01-15T10:30:00Z'
payload:
name: Example Title
userCreated: '2026-01-15T10:30:00Z'
userUpdated: '2026-01-15T10:30:00Z'
links: {}
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/catalogs/{catalog_id}/assets:
get:
operationId: listCatalogAssets
summary: Adobe Lightroom List Assets in a Catalog
description: >-
Retrieves a paginated list of assets in the specified catalog. Assets
represent individual photos or videos. Results can be filtered by
subtype and capture date.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/SubtypeFilter'
- $ref: '#/components/parameters/CapturedAfter'
- $ref: '#/components/parameters/CapturedBefore'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Offset'
responses:
'200':
description: Assets retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AssetsListResponse'
examples:
Listcatalogassets200Example:
summary: Default listCatalogAssets 200 response
x-microcks-default: true
value:
base: example_value
resources:
- id: abc123
type: example_value
subtype: image
created: '2026-01-15T10:30:00Z'
updated: '2026-01-15T10:30:00Z'
revision_ids: {}
payload: {}
links: {}
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/catalogs/{catalog_id}/assets/{asset_id}:
get:
operationId: getAsset
summary: Adobe Lightroom Get a Specific Asset
description: >-
Retrieves metadata for a specific asset including EXIF data, develop
settings, and available renditions.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/AssetId'
- $ref: '#/components/parameters/XApiKey'
responses:
'200':
description: Asset retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AssetResponse'
examples:
Getasset200Example:
summary: Default getAsset 200 response
x-microcks-default: true
value:
base: example_value
id: abc123
type: example_value
subtype: example_value
created: '2026-01-15T10:30:00Z'
updated: '2026-01-15T10:30:00Z'
payload: example_value
links: {}
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
put:
operationId: createRevisionForAsset
summary: Adobe Lightroom Create or Update an Asset
description: >-
Creates a new asset revision or updates an existing asset in the
catalog. Used to upload new photos or update metadata on existing ones.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/AssetId'
- $ref: '#/components/parameters/XApiKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AssetRevisionRequest'
examples:
CreaterevisionforassetRequestExample:
summary: Default createRevisionForAsset request
x-microcks-default: true
value:
subtype: image
payload:
captureDate: '2026-01-15T10:30:00Z'
userCreated: '2026-01-15T10:30:00Z'
userUpdated: '2026-01-15T10:30:00Z'
importSource:
fileName: example_value
importedOnDevice: example_value
importTimestamp: '2026-01-15T10:30:00Z'
responses:
'200':
description: Asset updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AssetResponse'
examples:
Createrevisionforasset200Example:
summary: Default createRevisionForAsset 200 response
x-microcks-default: true
value:
base: example_value
id: abc123
type: example_value
subtype: example_value
created: '2026-01-15T10:30:00Z'
updated: '2026-01-15T10:30:00Z'
payload: example_value
links: {}
'201':
description: Asset created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AssetResponse'
examples:
Createrevisionforasset201Example:
summary: Default createRevisionForAsset 201 response
x-microcks-default: true
value:
base: example_value
id: abc123
type: example_value
subtype: example_value
created: '2026-01-15T10:30:00Z'
updated: '2026-01-15T10:30:00Z'
payload: example_value
links: {}
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/catalogs/{catalog_id}/assets/{asset_id}/master:
put:
operationId: uploadMasterAsset
summary: Adobe Lightroom Upload the Master (original) File for an Asset
description: >-
Uploads the original master file for a previously created asset. The
asset must already exist in the catalog. The request body should contain
the binary image data.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/AssetId'
- $ref: '#/components/parameters/XApiKey'
- name: Content-Type
in: header
required: true
schema:
type: string
enum:
- image/jpeg
- image/png
- image/tiff
- image/dng
- video/mp4
example: image/jpeg
- name: Content-Length
in: header
required: true
schema:
type: integer
example: 10
requestBody:
required: true
content:
application/octet-stream:
schema:
type: string
format: binary
examples:
UploadmasterassetRequestExample:
summary: Default uploadMasterAsset request
x-microcks-default: true
value: example_value
responses:
'200':
description: Master file uploaded successfully
'201':
description: Master file created successfully
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'413':
description: File too large
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/catalogs/{catalog_id}/assets/{asset_id}/xmp/develop:
get:
operationId: getAssetDevelopXmp
summary: Adobe Lightroom Get the Develop Settings Xmp for an Asset
description: >-
Retrieves the external develop XMP sidecar file for the specified asset.
Contains Lightroom develop settings as XMP metadata.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/AssetId'
- $ref: '#/components/parameters/XApiKey'
responses:
'200':
description: XMP develop settings retrieved successfully
content:
application/rdf+xml:
schema:
type: string
examples:
Getassetdevelopxmp200Example:
summary: Default getAssetDevelopXmp 200 response
x-microcks-default: true
value: example_value
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
put:
operationId: putAssetDevelopXmp
summary: Adobe Lightroom Upload Develop Settings Xmp for an Asset
description: >-
Uploads an external develop XMP sidecar file for the specified asset,
applying Lightroom develop settings.
tags:
- Assets
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/AssetId'
- $ref: '#/components/parameters/XApiKey'
requestBody:
required: true
content:
application/rdf+xml:
schema:
type: string
examples:
PutassetdevelopxmpRequestExample:
summary: Default putAssetDevelopXmp request
x-microcks-default: true
value: example_value
responses:
'200':
description: XMP develop settings updated successfully
'201':
description: XMP develop settings created successfully
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/catalogs/{catalog_id}/assets/{asset_id}/renditions/{rendition_type}:
get:
operationId: getAssetRendition
summary: Adobe Lightroom Get an Asset Rendition
description: >-
Retrieves a generated rendition (preview image) for the specified asset.
The rendition_type parameter specifies the size and format. Renditions
are generated server-side from the master file.
tags:
- Renditions
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/AssetId'
- $ref: '#/components/parameters/RenditionType'
- $ref: '#/components/parameters/XApiKey'
responses:
'200':
description: Rendition retrieved successfully
content:
image/jpeg:
schema:
type: string
format: binary
examples:
Getassetrendition200Example:
summary: Default getAssetRendition 200 response
x-microcks-default: true
value: example_value
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/catalogs/{catalog_id}/albums:
get:
operationId: listAlbums
summary: Adobe Lightroom List Albums in a Catalog
description: >-
Retrieves a paginated list of albums in the specified catalog. Albums
are collections of assets organized by the user.
tags:
- Albums
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Offset'
responses:
'200':
description: Albums retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AlbumsListResponse'
examples:
Listalbums200Example:
summary: Default listAlbums 200 response
x-microcks-default: true
value:
base: example_value
resources:
- id: abc123
type: example_value
subtype: collection
created: '2026-01-15T10:30:00Z'
updated: '2026-01-15T10:30:00Z'
payload: {}
links: {}
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/catalogs/{catalog_id}/albums/{album_id}:
get:
operationId: getAlbum
summary: Adobe Lightroom Get a Specific Album
description: >-
Retrieves metadata for a specific album including its name, cover
asset, creation date, and update timestamps.
tags:
- Albums
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/AlbumId'
- $ref: '#/components/parameters/XApiKey'
responses:
'200':
description: Album retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AlbumResponse'
examples:
Getalbum200Example:
summary: Default getAlbum 200 response
x-microcks-default: true
value:
base: example_value
id: abc123
type: example_value
subtype: example_value
created: '2026-01-15T10:30:00Z'
updated: '2026-01-15T10:30:00Z'
payload: example_value
links: {}
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
put:
operationId: createOrUpdateAlbum
summary: Adobe Lightroom Create or Update an Album
description: >-
Creates a new album or updates an existing album in the catalog.
tags:
- Albums
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/AlbumId'
- $ref: '#/components/parameters/XApiKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AlbumCreateRequest'
examples:
CreateorupdatealbumRequestExample:
summary: Default createOrUpdateAlbum request
x-microcks-default: true
value:
subtype: collection
payload:
name: Example Title
userCreated: '2026-01-15T10:30:00Z'
userUpdated: '2026-01-15T10:30:00Z'
parent:
id: abc123
responses:
'200':
description: Album updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AlbumResponse'
examples:
Createorupdatealbum200Example:
summary: Default createOrUpdateAlbum 200 response
x-microcks-default: true
value:
base: example_value
id: abc123
type: example_value
subtype: example_value
created: '2026-01-15T10:30:00Z'
updated: '2026-01-15T10:30:00Z'
payload: example_value
links: {}
'201':
description: Album created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AlbumResponse'
examples:
Createorupdatealbum201Example:
summary: Default createOrUpdateAlbum 201 response
x-microcks-default: true
value:
base: example_value
id: abc123
type: example_value
subtype: example_value
created: '2026-01-15T10:30:00Z'
updated: '2026-01-15T10:30:00Z'
payload: example_value
links: {}
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
delete:
operationId: deleteAlbum
summary: Adobe Lightroom Delete an Album
description: >-
Deletes the specified album from the catalog. This does not delete the
assets within the album.
tags:
- Albums
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/AlbumId'
- $ref: '#/components/parameters/XApiKey'
responses:
'204':
description: Album deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/catalogs/{catalog_id}/albums/{album_id}/assets:
get:
operationId: listAlbumAssets
summary: Adobe Lightroom List Assets in an Album
description: >-
Retrieves a paginated list of assets contained within the specified
album.
tags:
- Albums
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/AlbumId'
- $ref: '#/components/parameters/XApiKey'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Offset'
responses:
'200':
description: Album assets retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AssetsListResponse'
examples:
Listalbumassets200Example:
summary: Default listAlbumAssets 200 response
x-microcks-default: true
value:
base: example_value
resources:
- id: abc123
type: example_value
subtype: image
created: '2026-01-15T10:30:00Z'
updated: '2026-01-15T10:30:00Z'
revision_ids: {}
payload: {}
links: {}
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
put:
operationId: addAssetsToAlbum
summary: Adobe Lightroom Add Assets to an Album
description: >-
Adds one or more existing assets to the specified album. The assets
must already exist in the catalog.
tags:
- Albums
parameters:
- $ref: '#/components/parameters/CatalogId'
- $ref: '#/components/parameters/AlbumId'
- $ref: '#/components/parameters/XApiKey'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AlbumAssetsRequest'
examples:
AddassetstoalbumRequestExample:
summary: Default addAssetsToAlbum request
x-microcks-default: true
value:
resources:
- id: abc123
payload:
order: example_value
responses:
'200':
description: Assets added to album successfully
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
securitySchemes:
oauth2:
type: oauth2
description: >-
OAuth 2.0 authorization code flow via Adobe Identity Management System
(IMS). Partner applications must be registered in the Adobe Developer
Console.
flows:
authorizationCode:
authorizationUrl: https://ims-na1.adobelogin.com/ims/authorize/v2
tokenUrl: https://ims-na1.adobelogin.com/ims/token/v3
scopes:
lr_partner_apis: Access Lightroom partner APIs
openid: OpenID Connect
apiKey:
type: apiKey
name: X-Api-Key
in: header
description: >-
API key from the Adobe Developer Console project (client_id of the
integration)
parameters:
XApiKey:
name: X-Api-Key
in: header
required: true
description: API key from the Adobe Developer Console
schema:
type: string
CatalogId:
name: catalog_id
in: path
required: true
description: Unique identifier of the Lightroom catalog
schema:
type: string
AssetId:
name: asset_id
in: path
required: true
description: Unique identifier of the asset
schema:
type: string
AlbumId:
name: album_id
in: path
required: true
description: Unique identifier of the album
schema:
type: string
RenditionType:
name: rendition_type
in: path
required: true
description: >-
Type of rendition to retrieve. Specifies the size of the generated
preview image.
schema:
type: string
enum:
- thumbnail2x
- 640
- 1024
- 2048
- fullsize
SubtypeFilter:
name: subtype
in: query
required: false
description: Filter assets by subtype
schema:
type: string
enum:
- image
- video
CapturedAfter:
name: captured_after
in: query
required: false
description: Filter assets captured after this ISO 8601 timestamp
schema:
type: string
format: date-time
CapturedBefore:
name: captured_before
in: query
required: false
description: Filter assets captured before this ISO 8601 timestamp
schema:
type: string
format: date-time
Limit:
name: limit
in: query
required: false
description: Maximum number of results to return
schema:
type: integer
default: 100
minimum: 1
maximum: 500
Offset:
name: offset
in: query
required: false
description: Number of results to skip for pagination
schema:
type: integer
default: 0
minimum: 0
schemas:
HealthResponse:
type: object
properties:
status:
type: string
description: Health status of the API
examples:
- available
CatalogResponse:
type: object
properties:
base:
type: string
description: Base URL for the API
example: example_value
id:
type: string
description: Unique identifier of the catalog
example: abc123
type:
type: string
description: Resource type
const: catalog
example: example_value
created:
type: string
format: date-time
description: Catalog creation timestamp
example: '2026-01-15T10:30:00Z'
updated:
type: string
format: date-time
description: Catalog last updated timestamp
example: '2026-01-15T10:30:00Z'
payload:
type: object
description: Catalog payload data
properties:
name:
type: string
description: Name of the catalog
userCreated:
type: string
format: date-time
description: When the user created the catalog
userUpdated:
type: string
format: date-time
description: When the user last updated the catalog
example: example_value
links:
$ref: '#/components/schemas/Links'
AssetsListResponse:
type: object
properties:
base:
type: string
description: Base URL for the API
example: example_value
resources:
type: array
description: List of asset resources
items:
$ref: '#/components/schemas/Asset'
example: []
links:
$ref: '#/components/schemas/Links'
Asset:
type: object
properties:
id:
type: string
description: Unique identifier of the asset
example: abc123
type:
type: string
description: Resource type
const: asset
example: example_value
subtype:
type: string
description: Asset subtype
enum:
- image
- video
example: image
created:
type: string
format: date-time
description: Asset creation timestamp
example: '2026-01-15T10:30:00Z'
updated:
type: string
format: date-time
description: Asset last updated timestamp
example: '2026-01-15T10:30:00Z'
revision_ids:
type: array
description: List of revision identifiers
items:
type: string
example: []
payload:
type: object
description: Asset payload containing metadata
properties:
captureDate:
type: string
format: date-time
description: Date and time the photo was captured
userCreated:
type: string
format: date-time
description: When the user created the asset
userUpdated:
type: string
format: date-time
description: When the user last updated the asset
# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lightroom/refs/heads/main/openapi/lightroom-services-openapi.yml