Adobe Library Service API
App-facing APIs for Adobe CC Libraries.
App-facing APIs for Adobe CC Libraries.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/adobe-library-service-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
version: '0.1'
title: Adobe CC Libraries APIs Test Library Service API
description: App-facing APIs for Adobe CC Libraries.
servers:
- url: https://cc-libraries.adobe.io/
tags:
- name: Library Service
description: App-facing APIs for Adobe CC Libraries.
paths:
/api/v1/libraries:
get:
tags:
- Library Service
summary: Retrieve libraries for a user
description: ''
operationId: getLibraries
parameters:
- name: orderBy
in: query
description: "Sorting option for the response list. \nReverse sort is enabled with a - character ahead of the sorting vector. (ex: -modified_date) \nMulti-vector sort is enabled by including multiple vectors separated by commas. (ex: name,-modified_date) \nSorting is not available for public libraries. \n\n**Possible Values** \n- `name`: Sort by the name.\n- `modified_date`: Sort by the last modified date."
required: false
schema:
type: string
default: -modified_date
- name: start
in: query
description: "The first result to include for a paged response, 0-based. \nThis parameter is required if a limit is specified. \nPaging is not available for public libraries."
required: false
schema:
type: string
default: '0'
minimum: 0
- name: limit
in: query
description: "The number of libraries to return for a paged response. \nPaging is not available for public libraries. \n\n**Possible Values** \n- Min: 1. \n- Max: 10."
required: false
schema:
type: string
default: '10'
minimum: 1
- name: owner
in: query
description: "Customize which libraries to include in the response, based on ownership. \n\n**Possible Values** \n- `private`: Libraries owned by the user. \n- `incoming`: Libraries shared with the user. This may include person-to-person shared libraries as well as libraries accessible via group ownership. \n- `public`: Libraries the user has followed. \n- `all`: All of the above except public."
required: false
schema:
type: string
default: all
- name: selector
in: query
description: "Customize which data sets to include in the response. \nAll applications using this API will need the same sets of data, but different applications will not require different depths of details. \nCallers can specify a comma-separated list of selectors to either limit or expand the default response. The absence of selectors will yield the default response, while including selectors gives callers access to building-blocks to compose the response to their needs. \n\n**Possible Values** \n- `default`: Base data, use this to build out custom response. \n- `details`: All available data for in-depth display. \n- `collaboration`: Add collaboration data to a lesser-scoped selector. \n- `groups`: Include group data in the response. \n- `rendition_grid`: Provides a set of links to library element image renditions, which can be combined to create a thumbnail for the library. The `main` rendition link is the first asset uploaded to the library, while the `tiles` contain the three most recently updated library elements' rendition links. \n"
required: false
schema:
type: string
default: default
- name: toolkit
in: query
description: "Customize which toolkit libraries to include in the response. \n\n**Possible Values**- `all`: Include all toolkit libraries. \n- `none`: Do not include any toolkit libraries. \n- `<toolkit-id>`: Include libraries matching a specific toolkit-id, or comma-separated list of toolkit-ids."
required: false
schema:
type: string
default: none
- name: authorization
in: header
description: An access token issued by Adobe IMS. In the header, the access token must be preceded by `Bearer `.
required: true
schema:
type: string
- name: x-api-key
in: header
description: The API key assigned to your API client account when you signed up.
required: true
schema:
type: string
- name: x-request-id
in: header
description: A unique request identifier that you define. Used by Adobe Support to trace the request in logs. This header is automatically generated by the server and returned in the response if you do not set it explicitly.
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LibrariesInfo'
'400':
description: 'Bad Request: The request is invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: 'Unauthorized: Authorization Token is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: 'Forbidden: API Key is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'406':
description: 'Not Acceptable: The requested format is not accepted for this method.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: 'Internal Server Error: We had a problem with our server.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: 'Service Unavailable: We are temporarily offline for maintenance, please try again later.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags:
- Library Service
summary: Create a library
description: ''
operationId: createLibraries
parameters:
- name: invocation_mode
in: query
description: "Specifies the processing mode to invoke this request process with. \n\n**Possible Values** \n- `sync`: API call is processed synchronously. The response is delivered when processing is complete, unless there's a timeout. \n- `async`: The async monitor response is immediately returned and request processing occurs asynchronously. The caller is responsible for polling that endpoint until completion. \n- `sync,async`: (Default) Synchronous processing of the request is attempted. When the processing extends past 5000ms, the async monitor response is returned. The monitor URL should be polled until the request is complete."
required: false
schema:
type: string
- name: authorization
in: header
description: An access token issued by Adobe IMS. In the header, the access token must be preceded by `Bearer `.
required: true
schema:
type: string
- name: x-api-key
in: header
description: The API key assigned to your API client account when you signed up.
required: true
schema:
type: string
- name: x-request-id
in: header
description: A unique request identifier that you define. Used by Adobe Support to trace the request in logs. This header is automatically generated by the server and returned in the response if you do not set it explicitly.
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/DbLibraryInfo'
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/DbLibraryInfo'
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/DbLibraryInfo'
'400':
description: 'Bad Request: The request is invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: 'Unauthorized: Authorization Token is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: 'Forbidden: API Key is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'406':
description: 'Not Acceptable: The requested format is not accepted for this method.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: 'Internal Server Error: We had a problem with our server.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: 'Service Unavailable: We are temporarily offline for maintenance, please try again later.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateLibraryPayload'
/api/v1/libraries/{libraryId}:
get:
tags:
- Library Service
summary: Retrieve a specific library
description: ''
operationId: getLibrary
parameters:
- name: libraryId
in: path
description: "The ID of the requested library. \nFor private libraries, the `library_urn` should be used. (ex: urn:aaid:sc:US:1c2327c6-ca3a-8f74-11ac-d5bca13a8fc7) \nFor public libraries, the public library `id` should be used. (ex: 1UTOX1PQ9YWOTFIPUEQUV0Z2XFTFFF)"
required: true
schema:
type: string
- name: selector
in: query
description: "Customize which data sets to include in the response. \nAll applications using this API will need the same sets of data, but different applications will not require different depths of details. \nCallers can specify a comma-separated list of selectors to either limit or expand the default response. The absence of selectors will yield the default response, while including selectors gives callers access to building-blocks to compose the response to their needs. \n\n**Possible Values** \n- `default`: Base data, use this to build out custom response. \n- `details`: All available data for in-depth display. \n- `collaboration`: Add collaboration data to a lesser-scoped selector. \n- `groups`: Include group data in the response. \n- `rendition_grid`: Provides a set of links to library element image renditions, which can be combined to create a thumbnail for the library. The `main` rendition link is the first asset uploaded to the library, while the `tiles` contain the three most recently updated library elements' rendition links. \n"
required: false
schema:
type: string
default: default
- name: libraryVersion
in: query
description: "Retrieve a cached library response (if available) for the specified version. \nTo ensure the most recent cached version, use the `version`, which is provided when retrieving the library list. \nIf the cached version is unavailable for some reason, the live result will be returned. \nUsing this parameter is optional, but is likely to provide substantially faster performance. \n"
required: false
schema:
type: string
- name: authorization
in: header
description: An access token issued by Adobe IMS. In the header, the access token must be preceded by `Bearer `.
required: true
schema:
type: string
- name: x-api-key
in: header
description: The API key assigned to your API client account when you signed up.
required: true
schema:
type: string
- name: if-none-match
in: header
description: The `etag` value, returns content only if the asset's `etag` is EXACTLY the same.
required: false
schema:
type: string
- name: x-request-id
in: header
description: A unique request identifier that you define. Used by Adobe Support to trace the request in logs. This header is automatically generated by the server and returned in the response if you do not set it explicitly.
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DbLibraryInfo'
'400':
description: 'Bad Request: The request is invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: 'Unauthorized: Authorization Token is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: 'Forbidden: API Key is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'406':
description: 'Not Acceptable: The requested format is not accepted for this method.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: 'Internal Server Error: We had a problem with our server.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: 'Service Unavailable: We are temporarily offline for maintenance, please try again later.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
head:
tags:
- Library Service
summary: Retrieve a specific library
description: ''
operationId: headLibrary
parameters:
- name: libraryId
in: path
description: "The ID of the requested library. \nFor private libraries, the `library_urn` should be used. (ex: urn:aaid:sc:US:1c2327c6-ca3a-8f74-11ac-d5bca13a8fc7) \nFor public libraries, the public library `id` should be used. (ex: 1UTOX1PQ9YWOTFIPUEQUV0Z2XFTFFF)"
required: true
schema:
type: string
- name: authorization
in: header
description: An access token issued by Adobe IMS. In the header, the access token must be preceded by `Bearer `.
required: true
schema:
type: string
- name: x-api-key
in: header
description: The API key assigned to your API client account when you signed up.
required: true
schema:
type: string
- name: x-request-id
in: header
description: A unique request identifier that you define. Used by Adobe Support to trace the request in logs. This header is automatically generated by the server and returned in the response if you do not set it explicitly.
required: false
schema:
type: string
responses:
'200':
description: OK
'400':
description: 'Bad Request: The request is invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: 'Unauthorized: Authorization Token is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: 'Forbidden: API Key is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'406':
description: 'Not Acceptable: The requested format is not accepted for this method.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: 'Internal Server Error: We had a problem with our server.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: 'Service Unavailable: We are temporarily offline for maintenance, please try again later.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags:
- Library Service
summary: Delete a specific library
description: ''
operationId: deleteLibrary
parameters:
- name: libraryId
in: path
description: "The ID of the requested library. \nFor private libraries, the `library_urn` should be used. (ex: urn:aaid:sc:US:1c2327c6-ca3a-8f74-11ac-d5bca13a8fc7) \nFor public libraries, the public library `id` should be used. (ex: 1UTOX1PQ9YWOTFIPUEQUV0Z2XFTFFF)"
required: true
schema:
type: string
- name: authorization
in: header
description: An access token issued by Adobe IMS. In the header, the access token must be preceded by `Bearer `.
required: true
schema:
type: string
- name: x-api-key
in: header
description: The API key assigned to your API client account when you signed up.
required: true
schema:
type: string
- name: x-request-id
in: header
description: A unique request identifier that you define. Used by Adobe Support to trace the request in logs. This header is automatically generated by the server and returned in the response if you do not set it explicitly.
required: false
schema:
type: string
responses:
'204':
description: No Content
'400':
description: 'Bad Request: The request is invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: 'Unauthorized: Authorization Token is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: 'Forbidden: API Key is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'406':
description: 'Not Acceptable: The requested format is not accepted for this method.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: 'Internal Server Error: We had a problem with our server.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: 'Service Unavailable: We are temporarily offline for maintenance, please try again later.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
patch:
tags:
- Library Service
summary: Apply multiple operations to a single library serially.
description: "Apply multiple operations to a library serially. \nThe request payload for this endpoint consists of an array of requests. \nRequests in this array may reference values from the response of requests preceding them. \nThis can be accomplished by using substitution variables, which are described here: https://wiki.corp.adobe.com/x/5xLOhw."
operationId: patchLibrary
parameters:
- name: libraryId
in: path
description: "The ID of the requested library. \nFor private libraries, the `library_urn` should be used. (ex: urn:aaid:sc:US:1c2327c6-ca3a-8f74-11ac-d5bca13a8fc7) \nFor public libraries, the public library `id` should be used. (ex: 1UTOX1PQ9YWOTFIPUEQUV0Z2XFTFFF)"
required: true
schema:
type: string
- name: invocation_mode
in: path
description: "Specifies the processing mode to invoke this request process with. \n\n**Possible Values** \n- `sync`: API call is processed synchronously. The response is delivered when processing is complete, unless there's a timeout. \n- `async`: The async monitor response is immediately returned and request processing occurs asynchronously. The caller is responsible for polling that endpoint until completion. \n- `sync,async`: (Default) Synchronous processing of the request is attempted. When the processing extends past 5000ms, the async monitor response is returned. The monitor URL should be polled until the request is complete."
required: true
schema:
type: string
- name: authorization
in: header
description: An access token issued by Adobe IMS. In the header, the access token must be preceded by `Bearer `.
required: true
schema:
type: string
- name: x-api-key
in: header
description: The API key assigned to your API client account when you signed up.
required: true
schema:
type: string
- name: if-match
in: header
description: The `etag` value, returns content only if the asset's `etag` is NOT the same.
required: false
schema:
type: string
- name: x-request-id
in: header
description: A unique request identifier that you define. Used by Adobe Support to trace the request in logs. This header is automatically generated by the server and returned in the response if you do not set it explicitly.
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/BatchResponse'
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/LibraryElementsInfo'
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncMonitorResponseDTO'
'400':
description: 'Bad Request: The request is invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: 'Unauthorized: Authorization Token is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: 'Forbidden: API Key is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: 'Not Found: The specified resource could not be found.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'406':
description: 'Not Acceptable: The requested format is not accepted for this method.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'412':
description: 'Precondition Failed: The server does not meet one of the preconditions on the request header fields.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'415':
description: 'Unsupported Media Type: The request entity has a media type which is not supported.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: 'Too Many Requests: The user has sent too many requests in a given amount of time.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: 'Internal Server Error: We had a problem with our server.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: 'Service Unavailable: We are temporarily offline for maintenance, please try again later.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BatchPayload'
/api/v1/libraries/{libraryId}/archive:
post:
tags:
- Library Service
summary: Restore Archived Elements
description: ''
operationId: unArchiveLibraryElements
parameters:
- name: libraryId
in: path
description: "The ID of the requested library. \nFor private libraries, the `library_urn` should be used. (ex: urn:aaid:sc:US:1c2327c6-ca3a-8f74-11ac-d5bca13a8fc7) \nFor public libraries, the public library `id` should be used. (ex: 1UTOX1PQ9YWOTFIPUEQUV0Z2XFTFFF)"
required: true
schema:
type: string
- name: invocation_mode
in: path
description: "Specifies the processing mode to invoke this request process with. \n\n**Possible Values** \n- `sync`: API call is processed synchronously. The response is delivered when processing is complete, unless there's a timeout. \n- `async`: The async monitor response is immediately returned and request processing occurs asynchronously. The caller is responsible for polling that endpoint until completion. \n- `sync,async`: (Default) Synchronous processing of the request is attempted. When the processing extends past 5000ms, the async monitor response is returned. The monitor URL should be polled until the request is complete."
required: true
schema:
type: string
- name: authorization
in: header
description: An access token issued by Adobe IMS. In the header, the access token must be preceded by `Bearer `.
required: true
schema:
type: string
- name: x-api-key
in: header
description: The API key assigned to your API client account when you signed up.
required: true
schema:
type: string
- name: x-request-id
in: header
description: A unique request identifier that you define. Used by Adobe Support to trace the request in logs. This header is automatically generated by the server and returned in the response if you do not set it explicitly.
required: false
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncResponsePayload'
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncAcceptedResponse'
'400':
description: 'Bad Request: The request is invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: 'Unauthorized: Authorization Token is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: 'Forbidden: API Key is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'406':
description: 'Not Acceptable: The requested format is not accepted for this method.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: 'Internal Server Error: We had a problem with our server.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: 'Service Unavailable: We are temporarily offline for maintenance, please try again later.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PostLibraryElementsPayload'
delete:
tags:
- Library Service
summary: Permanently delete archived elements
description: ''
operationId: deleteLibraryElements
parameters:
- name: libraryId
in: path
description: "The ID of the requested library. \nFor private libraries, the `library_urn` should be used. (ex: urn:aaid:sc:US:1c2327c6-ca3a-8f74-11ac-d5bca13a8fc7) \nFor public libraries, the public library `id` should be used. (ex: 1UTOX1PQ9YWOTFIPUEQUV0Z2XFTFFF)"
required: true
schema:
type: string
- name: authorization
in: header
description: An access token issued by Adobe IMS. In the header, the access token must be preceded by `Bearer `.
required: true
schema:
type: string
- name: x-api-key
in: header
description: The API key assigned to your API client account when you signed up.
required: true
schema:
type: string
- name: x-request-id
in: header
description: A unique request identifier that you define. Used by Adobe Support to trace the request in logs. This header is automatically generated by the server and returned in the response if you do not set it explicitly.
required: false
schema:
type: string
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncMonitorResponseDTO'
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncMonitorResponseDTO'
'204':
description: No Content
'400':
description: 'Bad Request: The request is invalid.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: 'Unauthorized: Authorization Token is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: 'Forbidden: API Key is not accepted.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'406':
description: 'Not Acceptable: The requested format is not accepted for this method.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: 'Internal Server Error: We had a problem with our server.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
# --- truncated at 32 KB (112 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adobe/refs/heads/main/openapi/adobe-library-service-api-openapi.yml