Adobe Composites API

The Composites API from Adobe — 1 operation(s) for composites.

Operations 1

POST /v1/composites/compose Generate 3D object composite #

Work with this as data

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-composites-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 Specification

adobe-composites-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: REST API for Adobe Substance 3D - Firefly Services.
  title: Adobe Substance 3D API - Firefly Services Composites API
  version: 1.0.0
servers:
- url: https://s3d.adobe.io
security:
- bearerAuth: []
  ApiKeyAuth: []
tags:
- name: Composites
paths:
  /v1/composites/compose:
    post:
      operationId: v1/composites/compose
      summary: Generate 3D object composite
      description: Generate a 3D Object Composite with the Substance 3D API.
      parameters:
      - name: X-User-Token
        in: header
        description: A user token referencing the user's individual account, obtained using their credentials.
        schema:
          type: string
      - name: wait
        in: query
        description: Blocking mode (acts like a synchronous API call). Wait for the result before returning. ⚠️ Some operations are long, please be sure to configure your client timeout settings accordingly.
        schema:
          description: Blocking mode (acts like a synchronous API call). Wait for the result before returning. ⚠️ Some operations are long, please be sure to configure your client timeout settings accordingly.
          type: boolean
          default: false
        explode: false
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/restv1.ComposeSceneRequest'
      responses:
        '202':
          description: Accepted
          headers:
            Retry-After:
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restv1beta.ComposeSceneResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              examples:
                empty_input_body:
                  value:
                    error_code: empty_input_body
                    message: ''
                invalid_json:
                  value:
                    error_code: invalid_json
                    message: ''
              schema:
                $ref: '#/components/schemas/ffapierrors.FFAPIError'
        '403':
          description: Forbidden
          content:
            application/json:
              examples:
                access_error:
                  value:
                    error_code: access_error
                    message: ''
              schema:
                $ref: '#/components/schemas/ffapierrors.FFAPIError'
        '408':
          description: Request Timeout
          content:
            application/json:
              examples:
                timeout_error:
                  value:
                    error_code: timeout_error
                    message: ''
              schema:
                $ref: '#/components/schemas/ffapierrors.FFAPIError'
        '415':
          description: Unsupported Media Type
          content:
            application/json:
              examples:
                invalid_content_type:
                  value:
                    error_code: invalid_content_type
                    message: ''
              schema:
                $ref: '#/components/schemas/ffapierrors.FFAPIError'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              examples:
                validation_error:
                  value:
                    error_code: validation_error
                    message: ''
              schema:
                $ref: '#/components/schemas/ffapierrors.FFAPIError'
        '429':
          description: Too Many Requests
          content:
            application/json:
              examples:
                rate_limited:
                  value:
                    error_code: rate_limited
                    message: ''
              schema:
                $ref: '#/components/schemas/ffapierrors.FFAPIError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              examples:
                runtime_error:
                  value:
                    error_code: runtime_error
                    message: ''
              schema:
                $ref: '#/components/schemas/ffapierrors.FFAPIError'
      tags:
      - Composites
      x-s3d-public: true
components:
  schemas:
    restv1beta.ComposeSceneResponse:
      type: object
      properties:
        $schema:
          description: A URL to the JSON schema for this object.
          type: string
          format: uri
          examples:
          - https://s3d.adobe.io/schemas/restv1beta.ComposeSceneResponse.json
          readOnly: true
        bugReportUrl:
          description: URL to report a bug about this job.
          type: string
        error:
          description: Potential error that happened during the job processing.
          type: string
        id:
          description: Unique identifier of the job.
          type: string
        result:
          description: Result when the job is successfully finished.
          $ref: '#/components/schemas/restv1beta.ComposeSceneJobResult'
        status:
          description: Status of the job. Can be `not_started`, `running`, `succeeded`, or `failed`.
          type: string
        url:
          description: URL to fetch/poll for job result in case the job is not finished yet.
          type: string
      additionalProperties: false
      required:
      - url
      - id
      - status
      - bugReportUrl
    types.ComposeSceneSceneDetails:
      type: object
      properties:
        camera:
          description: Custom camera definition for the scene render. Mutually exclusive with 'cameraName' at the top level. Use this to define camera parameters programmatically instead of referencing a named camera from the 3D scene.
          $ref: '#/components/schemas/types.SceneCamera'
      additionalProperties: false
    restv1.ComposeSceneRequest:
      type: object
      properties:
        $schema:
          description: A URL to the JSON schema for this object.
          type: string
          format: uri
          examples:
          - https://s3d.adobe.io/schemas/restv1.ComposeSceneRequest.json
          readOnly: true
        cameraName:
          description: Name of an existing camera in the source 3D scene. The camera has to be defined in the scene.
          type: string
        contentClass:
          description: Class of content to generate.
          type: string
          default: photo
          enum:
          - art
          - photo
        customModelId:
          description: ID of the custom model to be used for the generation. You can retrieve your custom model ID (assetId) with the Firefly retrieve custom model endpoint (https://developer.adobe.com/firefly-services/docs/firefly-api/api/#operation/getCustomModels).
          type: string
        enableGroundPlane:
          description: Enable the auto-generated ground plane under the hero asset. This is useful if the 3D scene contains only a hero asset, without additional elements.
          type: boolean
          default: false
        environment:
          description: Optional environment settings used for all variations. If omitted, an environment will be generated based on the background. If set, the `lightingSeeds` parameter will be ignored.
          $ref: '#/components/schemas/types.ComposeEnvironment'
        environmentExposure:
          description: Exposure, in EV (0=neutral).
          type: number
          format: double
          maximum: 10
          minimum: -10
        heroAsset:
          description: Name of an existing 'hero asset' in the source 3D scene. The asset has to be defined in the scene.
          type: string
          minLength: 1
        lightingSeeds:
          description: Optional seeds to be used to generate the lighting for the scene. The first seed will be used with the first seed of the background, the second one with the second seed of the background and so on. Background seeds must be defined and the number of lighting seeds should equal the number of background seeds. If not set, random seeds will be used. You will be able to retrieve the seeds used for the generation in the output details of the job.
          type: array
          items:
            format: int64
            type: integer
          maxItems: 4
        modelVersion:
          description: Model version to be used to generate the background image with Adobe Firefly.
          type: string
          default: image4_ultra
          enum:
          - image3_fast
          - image4_standard
          - image4_ultra
        numVariations:
          description: The number of variations to generate. `numVariations` will default to the number of seeds, or to 1 if `seeds` is not specified.
          type: integer
          format: int64
          maximum: 4
          minimum: 1
        prompt:
          description: Prompt to be used to generate the background image with Adobe Firefly.
          type: string
          minLength: 1
        scene:
          description: Optional scene-level details, such as a custom camera.
          $ref: '#/components/schemas/types.ComposeSceneSceneDetails'
        sceneFile:
          description: The path of the scene file in `sources`. If value is null, the first found scene file will be used.
          type: string
        seeds:
          description: Optional seed value to be used to generate the background image with Adobe Firefly. A seed ensures consistent background image generation. If `seed` is not set, a random seed will be used. Retrieve the seed used for the generation in the output details of the job. If specified with `numVariations`, the number of seeds must be the equal to `numVariations`.
          type: array
          items:
            format: int64
            type: integer
          maxItems: 4
        size:
          description: "The size of the image generations. The supported dimensions for image generations are: \n  | Dimensions | Description | \n  | -----------| ----- |\n  | { \"width\": 2048, \"height\": 2048} | Square (1:1) |\n  | { \"width\": 2304, \"height\": 1792 } | Landscape (4:3) |\n  | { \"width\": 1792, \"height\": 2304 } | Portrait (3:4) | \n  | { \"width\": 2688, \"height\": 1536 } | Widescreen (16:9) |  \n  | { \"width\": 1344, \"height\": 768 } |(7:4) |  \n  |{ \"width\": 1152, \"height\": 896 } |(9:7) |  \n  |{ \"width\": 896, \"height\": 1152 } |(7:9) |  \n  | { \"width\": 1024, \"height\": 1024} | Square (1:1) |"
          $ref: '#/components/schemas/types.OutputSize'
        sources:
          description: List of sources to aggregate and run the job against.
          type: array
          items:
            $ref: '#/components/schemas/rest_base.MountedSource'
          maxItems: 16
          minItems: 1
        styleImage:
          description: Optional 'style image' to be used to generate the background. The style image has to be present in `sources`.
          type: string
      additionalProperties: false
      examples:
      - cameraName: main_camera
        heroAsset: bottle
        prompt: french style kitchen with a glass bottle sitting on an empty wooden table window on the left focal length 50mm
        sources:
        - url:
            url: https://cdn.substance3d.com/v2/files/public/compositing_table_bottle.glb
      required:
      - sources
      - prompt
      - heroAsset
    rest_base.SpaceFile:
      type: object
      properties:
        name:
          type: string
        size:
          type: integer
          format: int64
          minimum: 0
        url:
          type: string
      additionalProperties: false
      required:
      - url
      - name
      - size
    rest_base.SourceSpace:
      type: object
      properties:
        id:
          description: A space ID.
          type: string
      additionalProperties: false
      required:
      - id
    types.OutputSize:
      type: object
      properties:
        height:
          type: integer
          format: int64
          default: 1536
          maximum: 2688
          minimum: 1
        width:
          type: integer
          format: int64
          default: 2688
          maximum: 2688
          minimum: 1
      additionalProperties: false
      required:
      - width
      - height
    ffapierrors.FFAPIError:
      description: The error within the error response.
      type: object
      properties:
        $schema:
          description: A URL to the JSON schema for this object.
          type: string
          format: uri
          examples:
          - https://s3d.adobe.io/schemas/ffapierrors.FFAPIError.json
          readOnly: true
        error_code:
          description: Associated error code.
          type: string
        error_details:
          description: Optional list of individual error details.
          type: array
          items:
            type: object
        message:
          description: Error message.
          type: string
      additionalProperties: false
      required:
      - error_code
    rest_base.Space:
      type: object
      properties:
        $schema:
          description: A URL to the JSON schema for this object.
          type: string
          format: uri
          examples:
          - https://s3d.adobe.io/schemas/rest_base.Space.json
          readOnly: true
        expiry:
          description: time at which the space will be deleted
          type: string
          format: date-time
        files:
          description: List of all files contained in Space, ordered by name.
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/rest_base.SpaceFile'
        id:
          description: Unique identifier of this Space.
          type: string
        url:
          description: URL to the full description of this Space.
          type: string
        archiveUrl:
          description: URL to fetch the whole space as an archive (usually a ZIP file).
      additionalProperties: false
      required:
      - url
      - id
      - expiry
      - files
    types.ComposeEnvironment:
      type: object
      properties:
        file:
          description: Path of environment file in `sources`. If value is null, the environment file will be generated.
          type: string
        rotation:
          description: Controls the orientation of the environment map.
          $ref: '#/components/schemas/types.Rotation'
      additionalProperties: false
      required:
      - file
    types.TRS:
      type: object
      properties:
        rotation:
          $ref: '#/components/schemas/types.Rotation'
        scale:
          type:
          - array
          - 'null'
          items:
            format: double
            type: number
          maxItems: 3
          minItems: 3
        translation:
          type:
          - array
          - 'null'
          items:
            format: double
            type: number
          examples:
          - - 0
            - 0
            - 0
          maxItems: 3
          minItems: 3
      additionalProperties: false
      required:
      - translation
      - rotation
      - scale
    types.Rotation:
      type: object
      properties:
        euler:
          description: Euler angles in degrees.
          type: array
          items:
            format: double
            type: number
          examples:
          - - 0
            - 0
            - 0
          maxItems: 3
          minItems: 3
        quaternion:
          description: In W,X,Y,Z order.
          type: array
          items:
            format: double
            type: number
          examples:
          - - 1
            - 0
            - 0
            - 0
          maxItems: 4
          minItems: 4
      additionalProperties: false
    rest_base.MountedSource:
      type: object
      properties:
        frame.io:
          description: Fetch content from a Frame.io folder. ⚠️ All sources are exclusive.
          $ref: '#/components/schemas/rest_base.SourceFrameIO'
          deprecated: true
        mountPoint:
          description: Where to mount the content of the source in the virtual job working directory.
          type: string
          default: /
        next.frame.io:
          description: Fetch content from a next.frame.io folder. ⚠️ All sources are exclusive.
          $ref: '#/components/schemas/rest_base.SourceFrameIOV4'
        space:
          description: Read content from an existing space (can be another job's output, or uploaded manually with the space API). ⚠️ All sources are exclusive.'
          $ref: '#/components/schemas/rest_base.SourceSpace'
        url:
          description: Fetch content from a URL. ⚠️ All sources are exclusive.
          $ref: '#/components/schemas/rest_base.SourceURL'
      additionalProperties: false
    rest_base.SourceFrameIO:
      type: object
      properties:
        accessToken:
          description: Frame.io access token or Developer token. See https://developer.frame.io/docs/getting-started/authentication for obtaining a token.
          type: string
        folderId:
          description: Frame.io folder ID containing the assets. This should be the ID of the folder (not an asset ID). For best performance and to avoid [size limitations](/#what-is-the-maximum-size-of-assets-i-can-process), use the folder ID closest to your target assets. The system will retrieve all content from the specified folder, so choosing a parent folder with many subfolders may exceed the maximum retrieval size limit
          type: string
      additionalProperties: false
      required:
      - folderId
      - accessToken
    rest_base.SourceFrameIOV4:
      type: object
      properties:
        accessToken:
          description: Frame.io access token. See https://developer.adobe.com/frameio/guides/Authentication/ for obtaining a token.
          type: string
        accountId:
          description: Frame.io account ID. This is the account identifier for the next.frame.io account owner. To find your account ID, log in to next.frame.io, navigate to your inbox, and extract the UUID from the URL (e.g., in https://next.frame.io/inbox/abcdefgh-1234-1234-1234-abcdefghijk, the account ID is abcdefgh-1234-1234-1234-abcdefghijk)
          type: string
        folderId:
          description: Frame.io folder ID containing the assets. This should be the ID of the folder (not an asset ID). For best performance and to avoid [size limitations](/#what-is-the-maximum-size-of-assets-i-can-process), use the folder ID closest to your target assets. The system will retrieve all content from the specified folder, so choosing a parent folder with many subfolders may exceed the maximum retrieval size limit
          type: string
      additionalProperties: false
      required:
      - folderId
      - accountId
      - accessToken
    types.Warning:
      type: object
      properties:
        context:
          type: string
        message:
          type: string
      additionalProperties: false
      required:
      - context
      - message
    types.AzimuthAltitude:
      type: object
      properties:
        altitude:
          description: Altitude, in degrees, from -90 to 90 degrees.
          type: number
          format: double
          maximum: 90
          minimum: -90
        azimuth:
          description: Rotation around the vertical axis, in degrees.
          type: number
          format: double
        lookAt:
          description: Look at point coordinates.
          type:
          - array
          - 'null'
          items:
            format: double
            type: number
          maxItems: 3
          minItems: 3
        radius:
          description: Distance to the `lookAt` point.
          type: number
          format: double
          minimum: 0
      additionalProperties: false
      required:
      - azimuth
      - altitude
      - lookAt
      - radius
    restv1beta.ComposeSceneJobResult:
      type: object
      properties:
        outputSpace:
          $ref: '#/components/schemas/rest_base.Space'
        outputs:
          type: array
          items:
            $ref: '#/components/schemas/restv1beta.ComposeOutput'
        promptHasBlockedArtists:
          type: boolean
        promptHasDeniedWords:
          type: boolean
        warnings:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/types.Warning'
      additionalProperties: false
      required:
      - outputSpace
      - outputs
      - promptHasDeniedWords
      - promptHasBlockedArtists
    types.Transform:
      type: object
      properties:
        azimuthAltitude:
          description: Transform is defined by azimuth, altitude and radius terms. If set, do not set `matrix` or `trs`.
          $ref: '#/components/schemas/types.AzimuthAltitude'
        matrix:
          description: Transform is defined as a matrix. If set, do not set `trs` or `azimuthAltitude`.
          type: array
          items:
            format: double
            type: number
          maxItems: 16
          minItems: 16
        trs:
          description: Transform is defined by translation, rotation and scale terms. If set, do not set `matrix` or `azimuthAltitude`.
          $ref: '#/components/schemas/types.TRS'
      additionalProperties: false
    restv1beta.ComposeOutput:
      type: object
      properties:
        backgroundImage:
          $ref: '#/components/schemas/restv1beta.ComposeOutputImage'
        image:
          $ref: '#/components/schemas/restv1beta.ComposeOutputImage'
        lightingSeed:
          type: integer
          format: int64
        maskImage:
          $ref: '#/components/schemas/restv1beta.ComposeOutputImage'
        seed:
          type: integer
          format: int64
      additionalProperties: false
      required:
      - seed
      - lightingSeed
      - image
      - backgroundImage
      - maskImage
    restv1beta.ComposeOutputImage:
      type: object
      properties:
        url:
          type: string
      additionalProperties: false
      required:
      - url
    rest_base.SourceURL:
      type: object
      properties:
        filename:
          description: Filename override. If unset, the service will try to detect the filename from the content disposition header, then the URL itself.
          type: string
        url:
          description: URL to fetch content from.
          type: string
          examples:
          - https://cdn.substance3d.com/v2/files/public/stepladder.usdz
      additionalProperties: false
      required:
      - url
    types.SceneCamera:
      type: object
      properties:
        focal:
          description: Camera focal length, in mm.
          type: number
          format: double
          default: 50
          maximum: 1000
          minimum: 10
        sensorWidth:
          description: Camera sensor width, in mm.
          type: number
          format: double
          default: 36
          maximum: 100
          minimum: 1
        transform:
          description: Controls the position and angle of the camera.
          $ref: '#/components/schemas/types.Transform'
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      description: 'Adobe service-to-service (S2S) access token. Pass `Authorization: Bearer <Token>`. The token is not a JWT.'
      scheme: bearer
      type: http
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: 'Your client ID, which acts as the API key. Pass `x-api-key: <API_KEY>` using `<API_KEY>` as the placeholder in examples.'