Adobe Lightroom Assets API

CRUD operations on photo and video assets

OpenAPI Specification

lightroom-assets-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Adobe Lightroom Lightroom Albums Album Assets API
  description: API for creating and managing albums and collections within an Adobe Lightroom cloud catalog. Albums organize assets into user-defined collections. Supports listing, creating, updating, and deleting albums as well as managing the assets within each album.
  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
servers:
- url: https://lr.adobe.io/v2
  description: Lightroom Services Production Server
security:
- oauth2:
  - lr_partner_apis
- apiKey: []
tags:
- name: Assets
  description: CRUD operations on photo and video assets
paths:
  /catalogs/{catalog_id}/assets:
    get:
      operationId: listAssets
      summary: Adobe Lightroom List Assets in a Catalog
      description: Retrieves a paginated list of assets in the specified catalog. Supports filtering by subtype (image or video) and capture date range.
      tags:
      - Assets
      parameters:
      - $ref: '#/components/parameters/CatalogId'
      - $ref: '#/components/parameters/XApiKey'
      - name: subtype
        in: query
        description: Filter by asset subtype
        schema:
          type: string
          enum:
          - image
          - video
        example: image
      - name: captured_after
        in: query
        description: Filter assets captured after this ISO 8601 timestamp
        schema:
          type: string
          format: date-time
        example: '2026-01-15T10:30:00Z'
      - name: captured_before
        in: query
        description: Filter assets captured before this ISO 8601 timestamp
        schema:
          type: string
          format: date-time
        example: '2026-01-15T10:30:00Z'
      - name: limit
        in: query
        description: Maximum number of results
        schema:
          type: integer
          default: 100
          minimum: 1
          maximum: 500
        example: 10
      - name: offset
        in: query
        description: Pagination offset
        schema:
          type: integer
          default: 0
        example: 10
      responses:
        '200':
          description: Assets retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetsListResponse'
              examples:
                Listassets200Example:
                  summary: Default listAssets 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: {}
                    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 Asset Metadata
      description: Retrieves complete metadata for a specific asset including EXIF data, capture date, import source, location, develop settings, and links to available renditions.
      tags:
      - Assets
      parameters:
      - $ref: '#/components/parameters/CatalogId'
      - $ref: '#/components/parameters/AssetId'
      - $ref: '#/components/parameters/XApiKey'
      responses:
        '200':
          description: Asset metadata 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:
                      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'
                      develop: example_value
                      xmp: example_value
                      location:
                        latitude: 42.5
                        longitude: 42.5
                        altitude: 42.5
                        direction: 42.5
                    links: {}
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: createOrUpdateAsset
      summary: Adobe Lightroom Create or Update an Asset
      description: Creates a new asset or updates an existing asset in the catalog. The asset_id should be a client-generated UUID. After creating an asset, upload the master file using the master endpoint.
      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/AssetCreateRequest'
            examples:
              CreateorupdateassetRequestExample:
                summary: Default createOrUpdateAsset 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:
                Createorupdateasset200Example:
                  summary: Default createOrUpdateAsset 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:
                      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'
                      develop: example_value
                      xmp: example_value
                      location:
                        latitude: 42.5
                        longitude: 42.5
                        altitude: 42.5
                        direction: 42.5
                    links: {}
        '201':
          description: Asset created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetResponse'
              examples:
                Createorupdateasset201Example:
                  summary: Default createOrUpdateAsset 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:
                      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'
                      develop: example_value
                      xmp: example_value
                      location:
                        latitude: 42.5
                        longitude: 42.5
                        altitude: 42.5
                        direction: 42.5
                    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_2'
      - $ref: '#/components/parameters/XApiKey_2'
      - 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_2'
        '403':
          $ref: '#/components/responses/Forbidden_2'
        '404':
          $ref: '#/components/responses/NotFound_2'
        '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_2'
      - $ref: '#/components/parameters/XApiKey_2'
      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_2'
        '404':
          $ref: '#/components/responses/NotFound_2'
      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_2'
      - $ref: '#/components/parameters/XApiKey_2'
      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_2'
        '404':
          $ref: '#/components/responses/NotFound_2'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  parameters:
    AssetId:
      name: asset_id
      in: path
      required: true
      description: Unique identifier of the asset (UUID format)
      schema:
        type: string
        format: uuid
    CatalogId:
      name: catalog_id
      in: path
      required: true
      description: Unique identifier of the Lightroom catalog
      schema:
        type: string
    XApiKey_2:
      name: X-Api-Key
      in: header
      required: true
      description: API key from the Adobe Developer Console
      schema:
        type: string
    AssetId_2:
      name: asset_id
      in: path
      required: true
      description: Unique identifier of the asset
      schema:
        type: string
    XApiKey:
      name: X-Api-Key
      in: header
      required: true
      description: API key from Adobe Developer Console
      schema:
        type: string
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden_2:
      description: Insufficient permissions. The user has not granted access or the partner application is not entitled.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse_2'
    Unauthorized_2:
      description: Authentication required or invalid credentials
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse_2'
    Forbidden:
      description: Insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound_2:
      description: The specified resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse_2'
  schemas:
    ErrorResponse:
      type: object
      properties:
        code:
          type: integer
          example: 10
        description:
          type: string
          example: A sample description.
    Links:
      type: object
      additionalProperties:
        type: object
        properties:
          href:
            type: string
    AssetsListResponse:
      type: object
      properties:
        base:
          type: string
          description: Base URL for API
          example: example_value
        resources:
          type: array
          items:
            $ref: '#/components/schemas/Asset'
          example: []
        links:
          $ref: '#/components/schemas/Links'
    AssetCreateRequest:
      type: object
      required:
      - subtype
      - payload
      properties:
        subtype:
          type: string
          enum:
          - image
          - video
          example: image
        payload:
          type: object
          properties:
            captureDate:
              type: string
              format: date-time
            userCreated:
              type: string
              format: date-time
            userUpdated:
              type: string
              format: date-time
            importSource:
              type: object
              properties:
                fileName:
                  type: string
                importedOnDevice:
                  type: string
                importTimestamp:
                  type: string
                  format: date-time
          example: example_value
    Asset:
      type: object
      properties:
        id:
          type: string
          description: Asset unique identifier
          example: abc123
        type:
          type: string
          const: asset
          example: example_value
        subtype:
          type: string
          enum:
          - image
          - video
          example: image
        created:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00Z'
        updated:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00Z'
        revision_ids:
          type: array
          items:
            type: string
          example: []
        payload:
          $ref: '#/components/schemas/AssetPayload'
        links:
          $ref: '#/components/schemas/Links'
    AssetPayload:
      type: object
      properties:
        captureDate:
          type: string
          format: date-time
          description: Date and time the photo was captured
          example: '2026-01-15T10:30:00Z'
        userCreated:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00Z'
        userUpdated:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00Z'
        importSource:
          type: object
          properties:
            fileName:
              type: string
              description: Original file name
            importedOnDevice:
              type: string
              description: Device used for import
            importTimestamp:
              type: string
              format: date-time
          example: example_value
        develop:
          type: object
          description: Develop settings snapshot
          example: example_value
        xmp:
          type: object
          description: Embedded XMP metadata
          example: example_value
        location:
          type: object
          properties:
            latitude:
              type: number
            longitude:
              type: number
            altitude:
              type: number
            direction:
              type: number
          example: example_value
    AssetResponse:
      type: object
      properties:
        base:
          type: string
          example: example_value
        id:
          type: string
          example: abc123
        type:
          type: string
          const: asset
          example: example_value
        subtype:
          type: string
          example: example_value
        created:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00Z'
        updated:
          type: string
          format: date-time
          example: '2026-01-15T10:30:00Z'
        payload:
          $ref: '#/components/schemas/AssetPayload'
        links:
          $ref: '#/components/schemas/Links'
    ErrorResponse_2:
      type: object
      properties:
        code:
          type: integer
          description: HTTP status code
          example: 10
        description:
          type: string
          description: Error description
          example: A sample description.
        errors:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
              field:
                type: string
          example: []
  securitySchemes:
    oauth2:
      type: oauth2
      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
    apiKey:
      type: apiKey
      name: X-Api-Key
      in: header
externalDocs:
  description: Lightroom Albums API Documentation
  url: https://developer.adobe.com/lightroom/lightroom-api-docs/api/