Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
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.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/adobe-suite-beta-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Express Beta API
description: Express API to automate bulk creation, export renditions and various other use cases.
version: beta
contact:
name: Express API support
email: express-api-support@adobe.com
x-spec-type: version
x-spec-version: beta
servers:
- url: https://express-api.adobe.io
description: Prod endpoint
security:
- apiKey: []
Authorization: []
tags:
- name: Beta
paths:
/beta/tagged-documents:
get:
summary: Tagged documents
description: This API retrieves a list of tagged documents that users can access, including those they own or those shared with them, along with relevant metadata. It supports pagination and sorting, allowing users to specify the starting point, define the number of documents to return, and choose the order in which to list them. The response includes the requested documents and their metadata.
operationId: taggedDocuments
parameters:
- name: start
in: query
required: false
description: Pagination start index. Default is 0.
schema:
type: integer
- name: limit
in: query
required: false
description: Pagination limit. Default is 10 and maximum value allowed is 25.
schema:
type: integer
- name: sortBy
in: query
required: false
description: Use `sortBy` to sort the response.
schema:
$ref: '#/components/schemas/TaggedDocumentsSortBy'
responses:
'200':
description: Successfully retrieved the tagged documents.
content:
application/json:
schema:
$ref: '#/components/schemas/TaggedDocumentsResponse'
examples:
taggedDocumentsResponseSample:
$ref: '#/components/examples/taggedDocumentsResponseSample'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsBadRequest:
$ref: '#/components/examples/errorResponseDetailsBadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsUnauthorized:
$ref: '#/components/examples/errorResponseDetailsUnauthorized'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsForbidden:
$ref: '#/components/examples/errorResponseDetailsForbidden'
errorResponseDetailsForbiddenMissingExpressEntitlement:
$ref: '#/components/examples/errorResponseDetailsForbiddenMissingExpressEntitlement'
errorResponseDetailsForbiddenMissingExpressApiEntitlement:
$ref: '#/components/examples/errorResponseDetailsForbiddenMissingExpressApiEntitlement'
errorResponseDetailsForbiddenExpressApiRequiresPremiumAccount:
$ref: '#/components/examples/errorResponseDetailsForbiddenExpressApiRequiresPremiumAccount'
errorResponseDetailsForbiddenMissingTypekitEntitlement:
$ref: '#/components/examples/errorResponseDetailsForbiddenMissingTypekitEntitlement'
errorResponseDetailsForbiddenTechnicalAccountNonFreeTypekit:
$ref: '#/components/examples/errorResponseDetailsForbiddenTechnicalAccountNonFreeTypekit'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsNotFound:
$ref: '#/components/examples/errorResponseDetailsNotFound'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsUnprocessableEntity:
$ref: '#/components/examples/errorResponseDetailsUnprocessableEntity'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsTooManyRequests:
$ref: '#/components/examples/errorResponseDetailsTooManyRequests'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsRuntimeError:
$ref: '#/components/examples/errorResponseDetailsRuntimeError'
'503':
description: Service Unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsServiceUnavailable:
$ref: '#/components/examples/errorResponseDetailsServiceUnavailable'
tags:
- Beta
/beta/tagged-documents/{documentId}:
get:
summary: Tagged document details
description: This API retrieves details of the pages and tagged elements within a specified document. It returns a paginated list of the document's pages and metadata about each page. If the document has tagged elements, the API includes their respective details, such as size and position. If the document does not have tagged elements, it returns an empty array. The response includes pagination information to help users navigate the document’s pages. A maximum of 10 pages can be returned in 1 API call.
operationId: taggedDocumentDetails
parameters:
- name: documentId
in: path
required: true
schema:
type: string
description: The unique identifier of the document.
- name: start
in: query
required: false
schema:
type: integer
description: Specifies the starting document page number from which details need to be fetched. Default is 1.
responses:
'200':
description: Successfully retrieved the details of the tagged document.
content:
application/json:
schema:
$ref: '#/components/schemas/TaggedDocumentDetailsResponse'
examples:
taggedDocumentDetailsResponseSampleOne:
$ref: '#/components/examples/taggedDocumentDetailsResponseSampleOne'
taggedDocumentDetailsResponseSampleTwo:
$ref: '#/components/examples/taggedDocumentDetailsResponseSampleTwo'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsBadRequest:
$ref: '#/components/examples/errorResponseDetailsBadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsUnauthorized:
$ref: '#/components/examples/errorResponseDetailsUnauthorized'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsUnprocessableEntity:
$ref: '#/components/examples/errorResponseDetailsUnprocessableEntity'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsRuntimeError:
$ref: '#/components/examples/errorResponseDetailsRuntimeError'
tags:
- Beta
/beta/generate-variation:
post:
summary: Generate variation
description: This API creates a document variation based on provided input parameters. After processing, it temporarily stores the generated document and makes it available to the user within a designated folder. The document remains accessible for 30 days, after which the system automatically removes it.
operationId: generateVariation
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateVariationRequest'
examples:
generateVariationRequestSample:
$ref: '#/components/examples/generateVariationRequestSample'
responses:
'202':
description: The request has been accepted and the job is in progress.
content:
application/json:
schema:
$ref: '#/components/schemas/JobResponse'
examples:
jobResponseSample:
$ref: '#/components/examples/jobResponseSample'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsBadRequest:
$ref: '#/components/examples/errorResponseDetailsBadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsUnauthorized:
$ref: '#/components/examples/errorResponseDetailsUnauthorized'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsForbidden:
$ref: '#/components/examples/errorResponseDetailsForbidden'
errorResponseDetailsForbiddenMissingExpressEntitlement:
$ref: '#/components/examples/errorResponseDetailsForbiddenMissingExpressEntitlement'
errorResponseDetailsForbiddenMissingExpressApiEntitlement:
$ref: '#/components/examples/errorResponseDetailsForbiddenMissingExpressApiEntitlement'
errorResponseDetailsForbiddenExpressApiRequiresPremiumAccount:
$ref: '#/components/examples/errorResponseDetailsForbiddenExpressApiRequiresPremiumAccount'
errorResponseDetailsForbiddenMissingTypekitEntitlement:
$ref: '#/components/examples/errorResponseDetailsForbiddenMissingTypekitEntitlement'
errorResponseDetailsForbiddenTechnicalAccountNonFreeTypekit:
$ref: '#/components/examples/errorResponseDetailsForbiddenTechnicalAccountNonFreeTypekit'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsNotFound:
$ref: '#/components/examples/errorResponseDetailsNotFound'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsUnprocessableEntity:
$ref: '#/components/examples/errorResponseDetailsUnprocessableEntity'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsTooManyRequests:
$ref: '#/components/examples/errorResponseDetailsTooManyRequests'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsRuntimeError:
$ref: '#/components/examples/errorResponseDetailsRuntimeError'
'503':
description: Service Unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsServiceUnavailable:
$ref: '#/components/examples/errorResponseDetailsServiceUnavailable'
tags:
- Beta
/beta/export-rendition:
post:
summary: Export rendition
description: 'Export one or more pages from an Adobe Express document in supported formats. This endpoint accepts an export request and returns pre-signed URLs for accessing the rendered files.
**Supported formats:**
- Image formats: `image/jpeg` (JPG), `image/png` (PNG)
- Video format: `video/mp4` (MP4)
- Document format: `application/pdf` (PDF)
**Rendition availability:**
- Image renditions: Valid for 4 hours, maximum size 8192px on the longest side
- Video and PDF renditions: Valid for 24 hours, maximum size 4096px on the longest side
**Asynchronous processing:**
Export requests are processed asynchronously. The response includes a `jobId` and `statusUrl` that you can use to track the export progress and retrieve the final rendition URLs.
**Restrictions:**
| Condition | Behavior | Error |
| --- | --- | --- |
| Public templates (Adobe-owned documents not copied to the user account) | Export is not allowed | `400 bad_request` |
| Document contains Adobe Stock–licensed assets | Export fails | `422 stock_content_detected` |'
operationId: exportRendition
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExportRenditionRequest'
examples:
exportRenditionRequestSampleOne:
$ref: '#/components/examples/exportRenditionRequestSampleOne'
exportRenditionRequestSampleTwo:
$ref: '#/components/examples/exportRenditionRequestSampleTwo'
exportRenditionRequestSampleThree:
$ref: '#/components/examples/exportRenditionRequestSampleThree'
exportRenditionRequestSampleFour:
$ref: '#/components/examples/exportRenditionRequestSampleFour'
exportRenditionRequestSampleFive:
$ref: '#/components/examples/exportRenditionRequestSampleFive'
exportRenditionRequestSampleSix:
$ref: '#/components/examples/exportRenditionRequestSampleSix'
exportRenditionRequestSampleSeven:
$ref: '#/components/examples/exportRenditionRequestSampleSeven'
exportRenditionRequestPublicTemplate:
$ref: '#/components/examples/exportRenditionRequestPublicTemplate'
exportRenditionRequestStockContent:
$ref: '#/components/examples/exportRenditionRequestStockContent'
responses:
'202':
description: The request has been accepted and the job is in progress.
content:
application/json:
schema:
$ref: '#/components/schemas/JobResponse'
examples:
jobResponseSample:
$ref: '#/components/examples/jobResponseSample'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsBadRequest:
$ref: '#/components/examples/errorResponseDetailsBadRequest'
errorResponseDetailsPublicTemplate:
$ref: '#/components/examples/errorResponseDetailsPublicTemplate'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsUnauthorized:
$ref: '#/components/examples/errorResponseDetailsUnauthorized'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsForbidden:
$ref: '#/components/examples/errorResponseDetailsForbidden'
errorResponseDetailsForbiddenMissingExpressEntitlement:
$ref: '#/components/examples/errorResponseDetailsForbiddenMissingExpressEntitlement'
errorResponseDetailsForbiddenMissingExpressApiEntitlement:
$ref: '#/components/examples/errorResponseDetailsForbiddenMissingExpressApiEntitlement'
errorResponseDetailsForbiddenExpressApiRequiresPremiumAccount:
$ref: '#/components/examples/errorResponseDetailsForbiddenExpressApiRequiresPremiumAccount'
errorResponseDetailsForbiddenMissingTypekitEntitlement:
$ref: '#/components/examples/errorResponseDetailsForbiddenMissingTypekitEntitlement'
errorResponseDetailsForbiddenTechnicalAccountNonFreeTypekit:
$ref: '#/components/examples/errorResponseDetailsForbiddenTechnicalAccountNonFreeTypekit'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsNotFound:
$ref: '#/components/examples/errorResponseDetailsNotFound'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsUnprocessableEntity:
$ref: '#/components/examples/errorResponseDetailsUnprocessableEntity'
errorResponseDetailsStockContent:
$ref: '#/components/examples/errorResponseDetailsStockContent'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsTooManyRequests:
$ref: '#/components/examples/errorResponseDetailsTooManyRequests'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsRuntimeError:
$ref: '#/components/examples/errorResponseDetailsRuntimeError'
'503':
description: Service Unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseDetails'
examples:
errorResponseDetailsServiceUnavailable:
$ref: '#/components/examples/errorResponseDetailsServiceUnavailable'
tags:
- Beta
components:
schemas:
JobResponse:
description: Response payload returned by any asynchronous endpoint.
type: object
properties:
jobId:
description: The identifier of the job.
type: string
statusUrl:
description: A URL using which the status of the job can be fetched.
type: string
required:
- jobId
- statusUrl
Size:
description: Represents a dimension within a Page.
type: object
properties:
width:
description: The width in pixels ( px ).
type: number
height:
description: The height in pixels ( px ).
type: number
required:
- height
- width
ImageRenditionOptions:
description: Options for the image rendition request.
type: object
properties:
format:
$ref: '#/components/schemas/ImageRenditionFormat'
description: Image rendition format
size:
description: 'The size of the "image" rendition on the longest side. The aspect ratio is maintained.
For image the minimum size supported is 1px and maximum size supported is 8192px.
If not provided, the default size of page is considered.'
type: number
required:
- format
ErrorResponseDetails:
description: Details of the error response.
type: object
properties:
error_code:
description: The error code.
type: string
message:
description: The error message.
type: string
validation_errors:
description: Validation error messages.
type: array
items:
type: string
required:
- error_code
ExpressDocument:
description: Details of the Express document.
type: object
properties:
id:
description: The unique identifier of the document.
type: string
name:
description: The name or title of the document.
type: string
thumbnailUrl:
description: 'Pre-signed URL for the Document''s thumbnail rendition.
The size of the rendition will be `640 pixels` along the longest side. The format of the rendition will be a `PNG` image.'
type: string
required:
- id
- name
- thumbnailUrl
ImageRenditionFormat:
description: The format of the bitmap rendition.
enum:
- image/jpeg
- image/png
type: string
StandardConfig:
description: Configuration settings for standard PDF rendition.
type: object
properties:
accessibilityTags:
description: 'Controls whether accessibility tags are included in the PDF.
When true, accessibility tags will be embedded in the PDF.
When false, accessibility tags will be omitted.
Defaults to false.'
type: boolean
PrintConfig:
description: Configuration options for print-ready PDF renditions.
type: object
properties:
bleed:
description: 'Controls whether to include bleed settings in the PDF.
Defaults to false.'
type: boolean
bleedSettings:
description: 'Configuration settings for bleed margins.
Only applies when bleed is true.
Default value is 0.125 <unit>.'
$ref: '#/components/schemas/ValueWithUnit'
cropMargins:
description: 'Controls whether to include crop margins in the PDF.
Defaults to false.'
type: boolean
cropMarginsSettings:
description: 'Configuration settings for crop margins.
Only applies when cropMargins is true.
Default value is 0.125 <unit>.'
$ref: '#/components/schemas/ValueWithUnit'
Point:
description: Represents position within a page. 0,0 represents the top-left corner of a page.
type: object
properties:
x:
description: The left co-ordinate position in px.
type: number
y:
description: The top co-ordinate position in px.
type: number
required:
- x
- y
TaggedDocumentsResponse:
description: Response payload for GET "/tagged-documents" API.
type: object
properties:
paging:
description: Pagination details of the response.
$ref: '#/components/schemas/Pagination'
documents:
description: A list of documents accessible (both owned and shared with) to the user.
type: array
items:
$ref: '#/components/schemas/ExpressDocument'
VariationDetails:
description: Details of how the variation should be generated.
type: object
properties:
tagMappings:
description: 'A key-value pair where each key represents the unique identifier of a tag element, and the value represents the corresponding element''s content. The value type varies by element type: for text elements, it is a plain string; for image or video elements, it is a pre-signed URL pointing to the image or video resource. Allowed domains for pre-signed URLs are AWS, Dropbox and Azure (windows.net). The key is obtained from the response of `/tagged-documents/{documentId}` in `documentPages` -\> `taggedElements` -\> `name`.'
type: object
additionalProperties:
type: string
pages:
description: 'A comma-separated string of page numbers for which the variation request is made. For example, "1,2,3".
Page ranges can also be specified. For example, "1-3" includes pages 1, 2, and 3.
Another example is "1,3-5", which includes pages 1, 3, 4, and 5.
"1-" can be used to specify all pages, while "5-" indicates page 5 to the last page.
If not provided, all pages are considered by default. Page numbers start from 1.'
type: string
preferredDocumentName:
description: The preferred name for the generated document. If you do not provide a name or the name is already in use, the system automatically generates a unique name.
type: string
projectId:
description: The identifier of the project where the variation is to be stored.
type: string
required:
- tagMappings
DocumentPageDetails:
description: The details of a single page in the Express Document.
type: object
properties:
pageNumber:
description: The number of the page starting from 1.
type: number
pageTitle:
description: The title of the page.
type: string
thumbnailUrl:
description: 'Pre-signed URL for the page''s thumbnail rendition valid for 4 hours.
The size of the rendition will be 640 pixels along the longest side. The format of the rendition will be a PNG image.'
type: string
size:
$ref: '#/components/schemas/Size'
description: The original width and height of the page.
taggedElements:
description: 'List of all the tagged elements on this page.
If this page do not have any tagged element, this field will be undefined.'
type: array
items:
$ref: '#/components/schemas/TaggedElement'
required:
- pageNumber
- pageTitle
- size
- thumbnailUrl
PdfRenditionOptions:
description: Options for the requested PDF rendition.
type: object
properties:
format:
description: PDF rendition format
type: string
enum:
- application/pdf
pdfType:
description: The type of PDF rendition. Default is "standard".
enum:
- print
- standard
type: string
downloadIndividualPdfFiles:
description: 'Controls whether pages are downloaded as separate PDF files.
When true, each page is downloaded as its own PDF file.
When false, all pages are combined into a single PDF file.
Defaults to false.'
type: boolean
config:
description: Configuration for the provided PDF type.
anyOf:
- $ref: '#/components/schemas/PrintConfig'
- $ref: '#/components/schemas/StandardConfig'
required:
- format
TaggedElementType:
description: The supported tag types in a document.
enum:
- image
- text
- video
type: string
TaggedElement:
description: The details of a tag element inside the page.
type: object
properties:
name:
description: 'The name of the tag. Following rules apply to the tag name:
1. In the same page, tag names should be unique.
2. Across different pages, tags of same element type can have same name.
3. The tag name is case-sensitive.'
type: string
type:
$ref: '#/components/schemas/TaggedElementType'
description: The type of the tagged element.
position:
$ref: '#/components/schemas/Point'
description: The x and y coordinates of the tagged element on the document's page, relative to the original page size.
size:
$ref: '#/components/schemas/Size'
description: The width and height of the tagged element in the document's page relative to the original page size.
required:
- name
- position
- size
- type
TaggedDocumentsSortBy:
description: Represents the sortBy field enum for tagged documents.
enum:
- +modifiedDate
- +name
- -modifiedDate
- -name
- -relevance
- modifiedDate
- name
- relevance
type: string
Pagination:
description: Pagination details of the response.
type: object
properties:
nextUrl:
description: A URL using which the next page of the response can be fetched.
type: string
totalRecords:
description: Total number of items available that match the query.
type: number
required:
- nextUrl
- totalRecords
VideoRenditionOptions:
description: Options for the video rendition request.
type: object
properties:
format:
description: video rendition format
type: string
enum:
- video/mp4
size:
description: 'The size of the "video" rendition on the longest side. The aspect ratio is maintained.
For video the minimum size supported is 146px and maximum size supported is 4096px.
If not provided, the default size of page is considered.'
type: number
required:
- format
TaggedDocumentDetailsResponse:
description: Response payload for GET "/tagged-documents/\{documentId\}" API.
type: object
properties:
name:
description: The name of the document.
type: string
id:
description: The unique identifier of the document.
type: string
paging:
description: Pagination details of the response.
$ref: '#/components/schemas/Pagination'
documentPages:
description: List of the pages from Express Document.
type: array
items:
$ref: '#/components/schemas/DocumentPageDetails'
required:
- documentPages
- id
- name
ExportRenditionRequest:
description: Payload for requesting rendition of a document.
type: object
properties:
id:
description: The identifier of the document that needs to be rendered.
type: string
pages:
description: 'A comma-separated string of page numbers for which the rendition request is made. For example, "1,2,3".
Page ranges can also be specified. For example, "1-3" includes pages 1, 2, and 3.
Another example is "1,3-5", which includes pages 1, 3, 4, and 5.
"1-" can be used to specify all pages, while "5-" indicates page 5 to the last page.
# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adobe-suite/refs/heads/main/openapi/adobe-suite-beta-api-openapi.yml