Adobe Library Service - Public API
App-facing APIs specifically for Adobe CC Public Libraries.
App-facing APIs specifically for Adobe CC Public 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-public-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 - Public API
description: App-facing APIs specifically for Adobe CC Public Libraries.
servers:
- url: https://cc-libraries.adobe.io/
tags:
- name: Library Service - Public
description: App-facing APIs specifically for Adobe CC Public Libraries.
paths:
/api/v1/public/libraries/{libraryId}:
get:
tags:
- Library Service - Public
summary: Retrieve a specific library
description: ''
operationId: getPublicLibrary
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: linkId
in: query
description: The ID associating the request with the public library landing page URL.
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: false
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
- 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: 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-use-cdn
in: header
description: Set to `true` if the API is called from a CDN.
required: false
schema:
type: boolean
- name: x-cdn-origin
in: header
description: Indicate which backend service should be used for a call from a CDN. Required for calls from a CDN.
required: false
schema:
type: string
enum:
- melville
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 - Public
summary: Check the presence and fetch headers of a public library
description: ''
operationId: headPublicLibrary
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: linkId
in: query
description: The ID associating the request with the public library landing page URL.
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: false
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
- name: x-use-cdn
in: header
description: Set to `true` if the API is called from a CDN.
required: false
schema:
type: boolean
- name: x-cdn-origin
in: header
description: Indicate which backend service should be used for a call from a CDN. Required for calls from a CDN.
required: false
schema:
type: string
enum:
- melville
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'
/api/v1/public/libraries/{libraryId}/elements:
get:
tags:
- Library Service - Public
summary: Retrieve a specific library's list of elements
description: ''
operationId: getPublicLibraryElements
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: 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 results to return for a paged response. \nPaging is not available for public libraries. \n\n**Possible Values** \n- Min: 1. \n- Max: 100."
required: false
schema:
type: string
default: '10'
maximum: 100
minimum: 1
- name: type
in: query
description: Limits results to those identified with the provided element mimetype.
required: false
schema:
type: string
- name: group
in: query
description: "Limits results to those assigned to the provided `group_id` (can be either `group_id` or `classifier#group_id`). \nParameters without a classifier will populate as `$default#group_id`. \nTo specify ungrouped elements, use `$none$`"
required: false
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: linkId
in: query
description: The ID associating the request with the public library landing page URL.
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: false
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
- 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: 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-use-cdn
in: header
description: Set to `true` if the API is called from a CDN.
required: false
schema:
type: boolean
- name: x-cdn-origin
in: header
description: Indicate which backend service should be used for a call from a CDN. Required for calls from a CDN.
required: false
schema:
type: string
enum:
- melville
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/LibraryElementsInfo'
'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'
/api/v1/public/libraries/{libraryId}/elements/{elementId}:
get:
tags:
- Library Service - Public
summary: Retrieve a public library's element
description: ''
operationId: getPublicLibraryElement
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: elementId
in: path
description: The ID of the requested element.
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- `representations`: Flattened list of assets associated with the library element."
required: false
schema:
type: string
default: default
- name: linkId
in: query
description: The ID associating the request with the public library landing page URL.
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: false
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
- 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: 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-use-cdn
in: header
description: Set to `true` if the API is called from a CDN.
required: false
schema:
type: boolean
- name: x-cdn-origin
in: header
description: Indicate which backend service should be used for a call from a CDN. Required for calls from a CDN.
required: false
schema:
type: string
enum:
- melville
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DbLibraryElementData'
'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'
components:
schemas:
DbLibraryInvitationData:
type: object
properties:
id:
type: string
readOnly: true
recipientEmail:
type: string
readOnly: true
senderName:
type: string
readOnly: true
created:
type: string
readOnly: true
role:
type: string
readOnly: true
canComment:
type: boolean
readOnly: true
canShare:
type: boolean
readOnly: true
DbLibraryCollaborationData:
type: object
properties:
rootURN:
type: string
ownerId:
type: string
state:
type: string
collaborators:
type: array
items:
$ref: '#/components/schemas/DbLibraryCollaboratorData'
invitations:
type: array
items:
$ref: '#/components/schemas/DbLibraryInvitationData'
public:
type: boolean
_fc:
type: boolean
directCollaborators:
type: array
items:
$ref: '#/components/schemas/DbLibraryCollaboratorData'
hasAdmin:
type: boolean
readOnly: true
DbLibraryElementDetailsCreatedModifiedData:
type: object
properties:
userId:
type: string
deviceId:
type: string
device:
type: string
app:
type: string
time:
type: integer
format: int64
LibraryElementsInfo:
type: object
properties:
total_count:
type: integer
format: int32
description: Total results for query
elements:
type: array
description: Elements list
items:
$ref: '#/components/schemas/DbLibraryElementData'
_page:
description: List Page
$ref: '#/components/schemas/PageSpec'
_links:
description: List Links
$ref: '#/components/schemas/LinksSpec'
DbLibraryRenditionData:
type: object
properties:
_fc:
type: boolean
main:
$ref: '#/components/schemas/DbLibraryElementRenditionData'
tiles:
type: array
items:
$ref: '#/components/schemas/DbLibraryElementRenditionData'
ErrorResponse:
type: object
properties:
reason:
type: string
message:
type: string
xml:
name: error
DbLibraryElementDetailData:
type: object
properties:
tags:
type: array
items:
type: string
created:
$ref: '#/components/schemas/DbLibraryElementDetailsCreatedModifiedData'
lastModified:
$ref: '#/components/schemas/DbLibraryElementDetailsCreatedModifiedData'
description:
type: string
DbLibraryGroup:
type: object
required:
- name
- order
properties:
id:
type: string
description: Group id.
name:
type: string
description: Group name.
classifier:
type: string
description: Group namespace. Currently defaults to $default. The default should be used unless there's a specific case to provide a custom classifiers. Non-default classifiers are presently not supported in any applications.
order:
type: string
description: Lexicographical string for setting the group's place in the group list, or for an element's place within a group.The client is responsible for providing and sorting using these strings.
created_date:
type: integer
format: int64
description: Group created date
modified_date:
type: integer
format: int64
description: Group modified date
parent_id:
type: string
description: Defines a relationship between nested groups. If provided, and the specified parent group exists, this group will be the "child" of the parent group. If there is no group in the library that matches the supplied parentId the group will still be created or updated with an empty parentId.
JsonNode:
type: object
properties:
array:
type: boolean
'null':
type: boolean
number:
type: boolean
int:
type: boolean
nodeType:
type: string
enum:
- ARRAY
- BINARY
- BOOLEAN
- MISSING
- 'NULL'
- NUMBER
- OBJECT
- POJO
- STRING
float:
type: boolean
binary:
type: boolean
short:
type: boolean
valueNode:
type: boolean
containerNode:
type: boolean
missingNode:
type: boolean
object:
type: boolean
pojo:
type: boolean
integralNumber:
type: boolean
floatingPointNumber:
type: boolean
long:
type: boolean
double:
type: boolean
bigDecimal:
type: boolean
bigInteger:
type: boolean
textual:
type: boolean
boolean:
type: boolean
MelvilleHypermediaLibraryElementLinks:
type: object
properties:
http://ns.adobe.com/melville/rel/primary:
description: Primary Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/path:
description: Path Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/id:
description: ID Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/ac/policy:
description: Policy Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/ac/check:
description: Check Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/ac/effective:
description: Effective Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/describedBy:
description: Metadata Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/metadata/application:
description: Application Metadata Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/metadata/repository:
description: Repository Metadata Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/rendition:
description: Rendition Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/version-history:
description: Version History Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/manifest:
description: Manifest Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/component:
description: Component Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/elements:
description: Elements Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/element:
description: Element Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/groups:
description: Groups Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/representations:
description: Representations Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
http://ns.adobe.com/melville/rel/raw:
description: Raw Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
page:
description: Page Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
next:
description: Next Link
$ref: '#/components/schemas/MelvilleHypermediaLink'
DbLibraryElementRenditionData:
type: object
properties:
type:
type: string
rendition:
type: object
properties: {}
DbLibraryDetail:
type: object
properties:
_fc:
type: boolean
etag:
type: string
state:
type: string
manifest_format_version:
type: string
num_elements:
type: integer
format: int32
num_archived_elements:
type: integer
format: int32
types:
type: array
items:
type: string
element_type_counts:
type: object
additionalProperties:
type: integer
format: int32
Link:
type: object
properties:
href:
type: string
templated:
type: boolean
name:
type: string
type:
type: string
deprecation:
type: string
mode:
type: string
additionalFields:
type: object
additionalProperties:
type: object
properties: {}
PageSpec:
type: object
properties:
orderBy:
type: string
description: List orderby
start:
type: string
description: List start position
next:
type: string
description: List next position
count:
type: integer
format: int32
description: List page size
type:
type: string
description: List page type
property:
type: string
description: List page property
DbLibraryInfo:
type: object
properties:
id:
type: string
description: Library Id
toolkit_id:
type: string
description: Library toolkit id
name:
type: string
description: Library name
storage_used:
type: integer
format: int64
description: Storage used
document_id:
type: string
description: Document ID
document_type:
type: string
description: Document Type
creator:
type: string
description: Library creator
ownership:
type: string
description: Library ownership type
enum:
- PRIVATE
- INCOMING
- OUTGOING
- DISCOVERY
- PUBLIC
created_date:
type: integer
format: int64
description: Library created date
modified_date:
type: integer
format: int64
description: Library modified date
version:
type: string
description: Library version
region:
type: string
description: Library region
library_urn:
type: string
description: Library resource_urn
manifest_urn:
type: string
description: Library manifest_urn
storage_path:
type: string
elements_count:
type: integer
format: int32
removed_elements_count:
type: integer
format: int32
bookmark:
description: Public or Shared Library Bookmark, not
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adobe/refs/heads/main/openapi/adobe-library-service-public-api-openapi.yml