Adobe Substance 3D API
Generate 3D object composites, render 3D scenes, and run Substance 3D material and model operations through the Firefly Services REST API.
Generate 3D object composites, render 3D scenes, and run Substance 3D material and model operations through the Firefly Services REST API.
openapi: 3.1.0
info:
description: REST API for Adobe Substance 3D - Firefly Services.
title: Adobe Substance 3D API - Firefly Services
version: 1.0.0
servers:
- url: 'https://s3d.adobe.io'
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
'/v1/jobs/{id}': {}
/v1/scenes/assemble:
post:
operationId: v1/scenes/assemble
summary: Create 3D scene
description: Assemble a 3D scene with the Substance 3D API.
parameters:
- 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/restv1beta.CreateSceneRequest'
responses:
'202':
description: Accepted
headers:
Retry-After:
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/restv1beta.CreateSceneResponse'
'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:
- Scenes
x-s3d-public: true
/v1/scenes/convert:
post:
operationId: v1/scenes/convert
summary: Convert 3D files
description: Convert a 3D file into another 3D format with the Substance 3D API.
parameters:
- 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/restv1beta.ModelConvertRequest'
responses:
'202':
description: Accepted
headers:
Retry-After:
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/restv1beta.ModelConvertResponse'
'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:
- Scenes
x-s3d-public: true
/v1/scenes/describe:
post:
operationId: v1/scenes/describe
summary: Describe 3D scene
description: Describe a 3D scene.
parameters:
- 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/restv1beta.SceneDescRequest'
responses:
'202':
description: Accepted
headers:
Retry-After:
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/restv1beta.SceneDescResponse'
'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:
- Scenes
x-s3d-public: true
/v1/scenes/render:
post:
operationId: v1/scenes/render
summary: Render 3D object
description: Render a 3D object with the Substance 3D API.
parameters:
- 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/restv1beta.RenderSceneRequest'
responses:
'202':
description: Accepted
headers:
Retry-After:
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/restv1beta.RenderSceneResponse'
'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:
- Scenes
x-s3d-public: true
/v1/scenes/render-basic:
post:
operationId: v1/scenes/render-basic
summary: Render 3D object (basic version)
description: Render a 3D object (basic version) with the Substance 3D API.
parameters:
- 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/restv1beta.RenderModelRequest'
responses:
'202':
description: Accepted
headers:
Retry-After:
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/restv1beta.RenderModelResponse'
'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:
- Scenes
x-s3d-public: true
/v1/spaces:
post:
operationId: createSpace_v1
summary: Create Space
description: Create a Space from 3D files.
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
filename:
description: Filename of the file being uploaded.
type: string
format: binary
contentMediaType: application/octet-stream
name:
description: General purpose name for multipart form value.
type: string
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/rest_base.Space'
'400':
description: Bad Request
content:
application/json:
examples:
empty_input_body:
value:
error_code: empty_input_body
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'
'413':
description: Request Entity Too Large
content:
application/json:
examples:
entity_too_large:
value:
error_code: entity_too_large
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:
- Spaces
x-s3d-public: true
'/v1/spaces/{id}': {}
/v1beta/3dmodels/convert: {}
/v1beta/3dmodels/render: {}
/v1beta/3dmodels/render-turntable: {}
/v1beta/3dscenes/compose: {}
/v1beta/3dscenes/create: {}
/v1beta/3dscenes/get-description: {}
/v1beta/3dscenes/render: {}
'/v1beta/jobs/{id}': {}
/v1beta/spaces: {}
'/v1beta/spaces/{id}': {}
'/v2/jobs/{id}': {}
/v2/spaces:
post:
operationId: createSpace_v2
summary: Create Space API
description: |
## Overview
The **Substance 3D API** provides a way to upload and temporarily store files.
Uploading files requires a **multipart/form-data** request to send data.
The request requires a **files** field containing a list of files. Each file's **filename** field can contain a filepath to specify where the file will be stored in the space.
Example for this files tree:
```
├── textures
│ ├── diffuse.png
│ └── normal.png
└── lighthouse.fbx
```
HTTP data relative to the previous files tree:
```HTTP
POST /spaces HTTP/1.1
Host: localhost:8080
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="files"; filename="lighthouse.fbx"
Content-Type: model/vnd.autodesk.fbx
(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="files"; filename="textures/diffuse.png"
Content-Type: image/png
(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="files"; filename="textures/normal.png"
Content-Type: image/png
(data)
------WebKitFormBoundary7MA4YWxkTrZu0gW--
```
Curl command to create this file tree:
```
curl -X POST https://s3d.adobe.io/v2/spaces \
-F "files=@Local/Path/To/The/Local/File/lighthouse.fbx;filename=lighthouse.fbx" \
-F "files=@Local/Path/To/The/Local/File/diffuse.png;filename=textures/diffuse.png" \
-F "files=@Local/Path/To/The/Local/File/normal.png;filename=textures/normal.png"
```
The result of the post is a **JSON** which contained the **id** of the space created.
Space **id** can be used into a space source to use space content as a source for API operations.
Example of a space source:
```json
{
"space": {
"id": "<space_id>"
}
}
```
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
files:
type: array
items:
contentMediaType: application/octet-stream
format: binary
type: string
minItems: 1
required:
- files
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/rest_base.Space'
'400':
description: Bad Request
content:
application/json:
examples:
empty_input_body:
value:
error_code: empty_input_body
message: ''
invalid_multipart:
value:
error_code: invalid_multipart
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'
'413':
description: Request Entity Too Large
content:
application/json:
examples:
entity_too_large:
value:
error_code: entity_too_large
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:
# --- truncated at 32 KB (118 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adobe/refs/heads/main/openapi/_original/adobe-substance-3d-api-openapi.yml