Introduction
Welcome to our API v2 documentation!
This documentation describes the usage of the Rapidcompact API endpoints which enable the upload of base assets, the optimization of a base asset and the download of the optimized rapid model.
Coming from v1? Here is our migration guide from v1 to v2.
You can still find API v1 here.
Terminology:
Cloud UI | REST API |
Source Model | Base Asset, RawModel |
Optimized Model | RapidModel |
Authenticating requests
To authenticate requests, include an Authorization
header with the value "Bearer {YOUR_AUTH_KEY}"
.
All authenticated endpoints are marked with a requires authentication
badge in the documentation below.
You can create your API token here.
Our REST API, excluding upload related endpoints, is subject to rate limits (2000 requests per minute per User or IP)
API Tokens
Get Tokens
requires authentication
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/user/tokens" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/user/tokens"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/user/tokens'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
[
{
"id": 222,
"name": "name of api token",
"last_used_at": "2021-09-01T11:21:22.000000Z",
"created_at": "2021-09-01T10:26:57.000000Z",
"optimization_count": 42,
}
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create Token
requires authentication
Example request:
curl --request POST \
"https://api.rapidpipeline.com/api/v2/user/tokens/create" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"name of new api token\"
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/user/tokens/create"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "name of new api token"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/user/tokens/create'
payload = {
"name": "name of new api token"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (200, success):
234|y5NGBTJk5OX5Zva5RfxTz0GkXEL9axN79vTfsJOH
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Token
requires authentication
Example request:
curl --request DELETE \
"https://api.rapidpipeline.com/api/v2/user/tokens/42" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/user/tokens/42"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/user/tokens/42'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-frame-options: ALLOWALL
vary: Origin
{
"message": "Invalid token",
"error": "Token format is invalid"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Token
requires authentication
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/user/tokens/42" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/user/tokens/42"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/user/tokens/42'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
{
"id": 1,
"tokenable_type": "App\\Models\\User",
"tokenable_id": 45,
"name": "name of api token",
"abilities": [
"*"
],
"last_used_at": null,
"created_at": "2021-10-26T10:38:07.000000Z",
"updated_at": "2021-10-26T10:38:07.000000Z",
"plain_text": ""
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Base Asset
Optimize
requires authentication
There are two ways to optimize a base asset:
In the first way send a config as a json object that complies with the API Optimize Schema, or send the id of one of your presets or of a factoryPreset
You can use our "optimization_finished" webhook to get notified when your model has been optimized. It also includes downloadlinks to your optimized model
The "Try it out" feature for this endpoint only works with the preset_id parameter. It doesn't work with the config parameter, because the config gets sent as a string, but it needs to be a json object. Please checkout the example on the right on how to set the config parameter
Example request:
curl --request POST \
"https://api.rapidpipeline.com/api/v2/rawmodel/optimize/281" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"config\": {
\"schema\": \"2.5\",
\"limits\": {
\"faces\": {
\"count\": 30000
},
\"textures\": {
\"baseColor\": 2048,
\"emissive\": 2048,
\"normal\": 2048,
\"orm\": 2048
}
},
\"assetSimplification\": {
\"meshDecimation\": {
\"method\": \"rebake\"
},
\"topologySettings\": {
\"vertexMergingDistance\": 0.005,
\"meshDensityEqualization\": 0,
\"boundaryPreservationFactor\": 0.5
},
\"uvAndAtlasSettings\": {
\"uvStretchTolerance\": 0
},
\"materialAndTextureBaking\": {
\"bakingQuality\": \"medium\",
\"bakeNormalMap\": true,
\"bakeAOMap\": false
}
},
\"compressionAndExport\": {
\"fileExports\": [
{
\"fileType\": \"glb\",
\"meshCompressionMethod\": \"none\",
\"customScaling\": 1,
\"textureFormat\": {
\"baseColor\": \"auto\",
\"emissive\": \"auto\",
\"normal\": \"png\",
\"orm\": \"auto\"
}
}
]
}
},
\"tags\": [
\"Low-Poly\",
\"MyTag\"
]
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/optimize/281"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"config": {
"schema": "2.5",
"limits": {
"faces": {
"count": 30000
},
"textures": {
"baseColor": 2048,
"emissive": 2048,
"normal": 2048,
"orm": 2048
}
},
"assetSimplification": {
"meshDecimation": {
"method": "rebake"
},
"topologySettings": {
"vertexMergingDistance": 0.005,
"meshDensityEqualization": 0,
"boundaryPreservationFactor": 0.5
},
"uvAndAtlasSettings": {
"uvStretchTolerance": 0
},
"materialAndTextureBaking": {
"bakingQuality": "medium",
"bakeNormalMap": true,
"bakeAOMap": false
}
},
"compressionAndExport": {
"fileExports": [
{
"fileType": "glb",
"meshCompressionMethod": "none",
"customScaling": 1,
"textureFormat": {
"baseColor": "auto",
"emissive": "auto",
"normal": "png",
"orm": "auto"
}
}
]
}
},
"tags": [
"Low-Poly",
"MyTag"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/optimize/281'
payload = {
"config": {
"schema": "2.5",
"limits": {
"faces": {
"count": 30000
},
"textures": {
"baseColor": 2048,
"emissive": 2048,
"normal": 2048,
"orm": 2048
}
},
"assetSimplification": {
"meshDecimation": {
"method": "rebake"
},
"topologySettings": {
"vertexMergingDistance": 0.005,
"meshDensityEqualization": 0,
"boundaryPreservationFactor": 0.5
},
"uvAndAtlasSettings": {
"uvStretchTolerance": 0
},
"materialAndTextureBaking": {
"bakingQuality": "medium",
"bakeNormalMap": true,
"bakeAOMap": false
}
},
"compressionAndExport": {
"fileExports": [
{
"fileType": "glb",
"meshCompressionMethod": "none",
"customScaling": 1,
"textureFormat": {
"baseColor": "auto",
"emissive": "auto",
"normal": "png",
"orm": "auto"
}
}
]
}
},
"tags": [
"Low-Poly",
"MyTag"
]
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (200, success):
{
"id": 281,
"name": "teapot.obj",
"optimization_status": "sent_to_queue",
"job_status": {
"id": 518,
"job_id": null,
"type": "App\\Jobs\\ProcessRawModel",
"queue": null,
"attempts": 0,
"progress_now": 0,
"progress_max": 0,
"status": "queued",
"input": null,
"output": null,
"created_at": "2021-02-15T13:34:52.000000Z",
"updated_at": "2021-02-15T13:34:52.000000Z",
"started_at": null,
"finished_at": null,
"key": "rapid_model:624"
},
"progress": 0,
"processing_step": "Scheduled for processing",
"external": null,
"rawmodel": {
"id": 282,
"name": "teapot.obj",
"processing": true
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Multi Optimize
requires authentication
Optimizes multiple models with one request
Use the same format as in the optimization endpoint but pass it in an array which contains the request as config (preset_id or config as json object) and the model_id of the base assets you want to process
Look at the example request for the data structure
You can use our "optimization_finished" webhook to get notified when your model has been optimized. It also includes download links to your optimized model
Example request:
curl --request POST \
"https://api.rapidpipeline.com/api/v2/rawmodel/optimize" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"optimizations\": [
{
\"model_id\": 89,
\"config\": {
\"preset_id\": 2004,
\"tags\": [
\"Lens Studio 3D\",
\"Medium Resolution\",
\"Low-Poly\"
],
\"exportName\": \"calibrationTarget.glb\"
}
},
{
\"model_id\": 77,
\"config\": {
\"preset_id\": 2004,
\"tags\": [
\"Lens Studio 3D\",
\"Medium Resolution\",
\"Mid-Poly\"
],
\"exportName\": \"DamagedHelmet.glb\"
}
}
]
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/optimize"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"optimizations": [
{
"model_id": 89,
"config": {
"preset_id": 2004,
"tags": [
"Lens Studio 3D",
"Medium Resolution",
"Low-Poly"
],
"exportName": "calibrationTarget.glb"
}
},
{
"model_id": 77,
"config": {
"preset_id": 2004,
"tags": [
"Lens Studio 3D",
"Medium Resolution",
"Mid-Poly"
],
"exportName": "DamagedHelmet.glb"
}
}
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/optimize'
payload = {
"optimizations": [
{
"model_id": 89,
"config": {
"preset_id": 2004,
"tags": [
"Lens Studio 3D",
"Medium Resolution",
"Low-Poly"
],
"exportName": "calibrationTarget.glb"
}
},
{
"model_id": 77,
"config": {
"preset_id": 2004,
"tags": [
"Lens Studio 3D",
"Medium Resolution",
"Mid-Poly"
],
"exportName": "DamagedHelmet.glb"
}
}
]
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (204, success):
Empty response
Example response (400, error):
Could not process request: Missing required parameter
Example response (500, error):
An error occurred while processing your request: ...
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Running Jobs
requires authentication
Returns rapidmodels (until 1 week) that are still being processed or were not successfully optimized
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rawmodel/jobs" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/jobs"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/jobs'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
{
"data": [
{
"id": 5812,
"name": "TVBench",
"optimization_status": "failed",
"job_status": {
"id": 3601,
"job_id": "edab51b2-1c47-4a0f-b807-58e913dbabc9",
"type": "App\\Jobs\\ProcessRawModel",
"queue": "default",
"attempts": 1,
"progress_now": 100,
"progress_max": 100,
"status": "finished",
"input": null,
"output": "{\"exit_code\":1}",
"created_at": "2021-10-11 20:08:52",
"updated_at": "2021-10-11 20:08:53",
"started_at": "2021-10-11 20:08:52",
"finished_at": "2021-10-11 20:08:53",
"key": "rapid_model:5812"
},
"progress": 100,
"processing_step": "Done",
"external": false,
"rawmodel": {
"id": 2257,
"name": "TVBench"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Base Asset
requires authentication
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rawmodel/281" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/281"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/281'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"id": 281,
"name": "teapot",
"processing": false,
"external": false,
"upload_status": "complete",
"size": 438680,
"created_at": "2021-02-08T16:59:52+01:00",
"rapid_models": [
635,
617
],
"scale_factor": "10",
"tags": [
{
"id": 241,
"name": "Mid-Poly",
"created_at": "2022-12-12 13:12:37+00",
"updated_at": "2022-12-12 13:12:37+00",
"raw_id": 281
}
],
"downloads": {
"error.log": "signed url for the error.log",
"info.log": "signed url for info.log",
"metrics.json": "signed url for the metrics.json",
"rpd_info.json": "signed url for the rpd_info.json",
"teapot.obj": "signed url for the teapot.obj",
"thumb.jpg": "signed url for the thumb.jpg"
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Base Asset
requires authentication
Example request:
curl --request DELETE \
"https://api.rapidpipeline.com/api/v2/rawmodel/281" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/281"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/281'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Example response (200, success):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Download URLs
requires authentication
Returns a list of urls to download the individual base asset files
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rawmodel/281/downloads" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/281/downloads"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/281/downloads'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
{
"RezColorChecker.mtl": "https://s3.eu-central-1.amazonaws.com/rapidcompact-models-...",
"RezColorChecker.obj": "https://s3.eu-central-1.amazonaws.com/rapidcompact-models-...",
"RezColorChecker.png": "https://s3.eu-central-1.amazonaws.com/rapidcompact-models-..."
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get imported DCC files
requires authentication
Returns a list of urls to download the individual converted DCC material and quality control files
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rawmodel/281/downloads/pbr" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/281/downloads/pbr"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/281/downloads/pbr'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
{
"materials" : {
"ao.png":"https:\/\/s3.eu-central-1.amazonaws.com\/rapidcompact-models-...",
"diffuse.png":"https:\/\/s3.eu-central-1.amazonaws.com\/rapidcompact-models-...",
},
"qc": {
"render_0.png":"https:\/\/s3.eu-central-1.amazonaws.com\/rapidcompact-models-...",
"render_1.png":"https:\/\/s3.eu-central-1.amazonaws.com\/rapidcompact-models-...",
"diff_0.png":"https:\/\/s3.eu-central-1.amazonaws.com\/rapidcompact-models-...",
"diff_1.png":"https:\/\/s3.eu-central-1.amazonaws.com\/rapidcompact-models-...",
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Download zip
requires authentication
Downloads all model files as zip.
A stream is returned which contains the model data.
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rawmodel/281/downloads/zip" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/281/downloads/zip"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/281/downloads/zip'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
Streamed response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Returns hash signed links for the quality control images generated after importing the Rawmodel.
requires authentication
The keys of the images are built with the following reasoning:
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rawmodel/281/renders" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/281/renders"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/281/renders'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
Example response (404, error):
Only available for Rawmodels that were imported after 2024-07
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Tag of a Base Asset
requires authentication
Get Base Assets
requires authentication
Paginated response of your base assets. Search for base assets by name or tag
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rawmodel?q=yourSearchString" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel"
);
const params = {
"q": "yourSearchString",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel'
params = {
'q': 'yourSearchString',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200, success):
{
"data": [
{
"id": 1,
"name": "teapot",
"external": false,
"upload_status": "complete",
"size": 315088,
"created_at": "2022-05-24T15:05:47+02:00",
"scale_factor": "1",
"has_errors": true,
"format": "fbx",
"tags": [
{
"id": 1,
"name": "Low-Poly",
"created_at": "2022-05-24 15:06:03",
"updated_at": "2022-05-24 15:06:03",
"raw_id": 1
}
],
"downloads": {
"error.log": "signed url for the error.log",
"info.log": "signed url for info.log",
"metrics.json": "signed url for the metrics.json",
"rpd_info.json": "signed url for the rpd_info.json",
"teapot.fbx": "signed url for the teapot.obj",
"thumb.jpg": "signed url for the thumb.jpg",
"warning.log": "signed url for the warning.log"
}
}
],
"links": {
"first": "https://url/api/v2/rawmodel?page=1",
"last": "https://url/api/v2/rawmodel?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://url/api/v2/rawmodel?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://url/api/v2/rawmodel",
"per_page": 10,
"to": 1,
"total": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Base Asset - Add Tags, Set scale factor
requires authentication
A tag can have 255 utf-8 characters including whitespaces
Example request:
curl --request PUT \
"https://api.rapidpipeline.com/api/v2/rawmodel/281" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"tags\": [
\"low poly\",
\"mb target\"
],
\"scale_factor\": 0.5
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/281"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"tags": [
"low poly",
"mb target"
],
"scale_factor": 0.5
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/281'
payload = {
"tags": [
"low poly",
"mb target"
],
"scale_factor": 0.5
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-frame-options: ALLOWALL
vary: Origin
{
"message": "Invalid token",
"error": "Token format is invalid"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Multiple Base Assets
requires authentication
Example request:
curl --request POST \
"https://api.rapidpipeline.com/api/v2/rawmodel/delete" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"ids\": [
726,
324
]
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/delete"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"ids": [
726,
324
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/delete'
payload = {
"ids": [
726,
324
]
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-frame-options: ALLOWALL
vary: Origin
{
"message": "Invalid token",
"error": "Token format is invalid"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create Base Asset - Get Upload Link
requires authentication
Calling this endpoint will return an id for the new base asset and presigned URLs which need to be used to upload the files directly to our storage. The URLs are unique for every file. The "complete_upload" field will contain a link to the "Create Base Asset - Complete Upload" endpoint that needs to be called when the upload is done
Example request:
curl --request POST \
"https://api.rapidpipeline.com/api/v2/rawmodel/api-upload/start" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"model_name\": \"teapot\",
\"filenames\": [
\"mymodel.glb\",
\"material.mat\"
]
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/api-upload/start"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"model_name": "teapot",
"filenames": [
"mymodel.glb",
"material.mat"
]
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/api-upload/start'
payload = {
"model_name": "teapot",
"filenames": [
"mymodel.glb",
"material.mat"
]
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (200, success):
{
"id": 1,
"links": {
"s3_upload_urls": {
"mymodel.glb": "signed url for mymodel.glb",
"material.mat": "signed url for material.mat"
},
"complete_upload": "https://api.rapidcompact.com/api/rawmodels/1/api-upload/complete"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create Base Asset - Complete Upload
requires authentication
Call this endpoint with the received base asset id from the "Create Base Asset - Get Upload Link" endpoint after uploading the base asset files
You can use our "analysis_finished" webhook to get notified when your model is ready to be optimized
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rawmodel/281/api-upload/complete" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/281/api-upload/complete"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/281/api-upload/complete'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"id": 281,
"name": "teapot",
"processing": false,
"upload_status": "complete",
"size": 438680,
"created_at": "2021-02-08T16:59:52+01:00",
"rapid_models": [
635,
617
],
"scale_factor": "10",
"downloads": {
"error.log": "signed url for the error.log",
"info.log": "signed url for the info.log",
"metrics.json": "signed url for the metrics.json",
"rpd_info.json": "signed url for the rpd_info.json",
"teapot.obj": "signed url for the uploaded file",
"thumb.jpg": "signed url for the thumb.jpg"
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Retries a failed import.
requires authentication
Example request:
curl --request POST \
"https://api.rapidpipeline.com/api/v2/rawmodel/281/api-upload/retry" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/281/api-upload/retry"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/281/api-upload/retry'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()
Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-frame-options: ALLOWALL
vary: Origin
{
"message": "Invalid token",
"error": "Token format is invalid"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Associated Rapid Models
requires authentication
Get all rapid models which were optimized from this base asset
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rawmodel/1/rapidmodels" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rawmodel/1/rapidmodels"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rawmodel/1/rapidmodels'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": [
{
"id": 1,
"name": "teapot",
"optimization_status": "done",
"rawmodel": {...},
"job_status": {...},
"created_at": "2021-02-16T16:50:41+01:00",
"updated_at": "2021-02-16T16:50:53+01:00",
"progress": 100,
"processing_step": "Done",
"external": false,
"rapid_compact_core_version": "6.1.1",
"tags": [
{
"id": 377,
"name": "Preserve UVs",
"created_at": "2024-02-15 18:05:36+00",
"updated_at": "2024-02-15 18:05:36+00",
"rapid_id": 635
}
],
"export_name": "export name",
"uuid": "d8316d1f-3c7d-4777-b72e-c760064f9d08",
"accepted": false,
"meta": {
"size": 573420,
"exportSize": 1029548
},
"thumbnail": {},
"rpd_info": "signed url for the rpd_info.json",
"rpd_warnings": "signed url for the warning.log",
"rpd_error": "signed url for the error.log",
"downloads": {
"glb": "signed url for the .glb"
}
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Embeds
Get Embeds
requires authentication
Returns the embeds of the user
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/embeds?page=7&q=natus&rapidId=13" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/embeds"
);
const params = {
"page": "7",
"q": "natus",
"rapidId": "13",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/embeds'
params = {
'page': '7',
'q': 'natus',
'rapidId': '13',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200):
{
data: [
{
"id":53,
"identifier":"fRoL5P9iyb",
"name":"RezColorChecker Embed",
"user_id":45,
"model_id":70,
"view_count":13,
"created_at":"2022-05-04T12:10:52.000000Z",
"updated_at":"2022-06-14T13:13:00.000000Z",
"rapidModelId": 73,
"rapidModelName":"RezColorChecker",
"thumbnail":"https://2vv7ezymi86va.cloudfront.net/rapid/ba12f8a6-....",
"url":"https://api.rapidcompact.com/viewer?id=123456"
},
...
],
links: {
first: "http://...",
last: "http://...",
prev: null,
next: "http://..."
},
meta: {
"current_page":1,
"from":1,
"last_page":2,
"per_page":10,
"to":10,
"total":15,
links: [
{
"url":null,
"label":"Previous",
"active":false
},
...
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Embed
requires authentication
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/embeds/42" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/embeds/42"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/embeds/42'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
{
"data": {
"id": 42,
"identifier": "ZmR8oTVEiR",
"name": "teapot Embed",
"user_id": 1,
"model_id": 1,
"view_count": 100,
"created_at": "2022-06-27T13:30:30.000000Z",
"updated_at": "2022-06-27T14:20:17.000000Z"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create Embed
requires authentication
Create an embed from a rapid model. The webhooks will be called with the 'embed_creation' event to notify the user as soon as the embed is created.
Example request:
curl --request POST \
"https://api.rapidpipeline.com/api/v2/embeds/create" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"model_id\": 281,
\"name\": \"\\\"my embeds name\\\"\",
\"save_user_theme\": false,
\"config\": \"{\\n \\\"renderCanvasCSS\\\" : \\\"background:;\\\",\\n \\\"environmentURL\\\" : \\\"images\\/environment.dds\\\",\\n \\\"companyLogo\\\" : \\\"data:image\\/png;base64,iVBORw0KGgoAAAANSUh...kSuQmCC\\\",\\n \\\"companyLogoToggle\\\" : \\\"true\\\",\\n \\\"companyLink\\\" : \\\"https:\\/\\/dgg3d.com\\\",\\n \\\"companyLogoCSS\\\" : \\\"width:120px;height:71.3004px;background:;\\\",\\n \\\"productLogo\\\" : \\\"data:image\\/png;base64,iVBORw0KGgoAAAANSUh...ASUVORK5CYII=\\\",\\n \\\"productLogoToggle\\\" : \\\"true\\\",\\n \\\"productLink\\\" : \\\"https:\\/\\/rapidcompact.com\\\",\\n \\\"productLogoCSS\\\" : \\\"width:120px;height:21.4819px;background:;\\\",\\n \\\"threeDLogo\\\" : \\\"data:image\\/png;base64,iVBORw0KGgoAAAANSUhEU...OAAAAAElFTkSuQmCC\\\",\\n \\\"threeDLogoToggle\\\" : \\\"true\\\",\\n \\\"threeDLogoCSS\\\" : \\\"width:24px;height:24px;background:;\\\",\\n \\\"interactiveToolsCSS\\\" : \\\"background:;\\\",\\n \\\"skyBoxEnabled\\\" : \\\"false\\\",\\n \\\"skyBoxBlur\\\" : \\\"0\\\",\\n \\\"shadowToggle\\\" : \\\"false\\\",\\n \\\"shadowOpacity\\\" : \\\"0.5\\\",\\n \\\"shadowBlur\\\" : \\\"0\\\",\\n \\\"shadowLightIntensity\\\" : \\\"0.3\\\",\\n \\\"cameraMinVerticalAngle\\\" : \\\"-90\\\",\\n \\\"cameraMaxVerticalAngle\\\" : \\\"90\\\",\\n \\\"cameraMinZoom\\\" : \\\"1\\\",\\n \\\"cameraMaxZoom\\\" : \\\"6\\\",\\n \\\"cameraPanning\\\" : \\\"0.5\\\",\\n \\\"cameraBloom\\\" : \\\"0\\\",\\n \\\"cameraContrast\\\" : \\\"1\\\",\\n \\\"cameraExposure\\\" : \\\"1\\\",\\n \\\"fxaaOn\\\" : \\\"true\\\",\\n \\\"enableSimpleMeasurement\\\" : \\\"false\\\",\\n \\\"enableCoordinateDisplay\\\" : \\\"false\\\",\\n \\\"baseUnit\\\" : \\\"m\\\",\\n \\\"displayUnit\\\" : \\\"m\\\",\\n \\\"enableARBtn\\\" : \\\"false\\\",\\n \\\"enableAnimationControl\\\" : \\\"false\\\",\\n \\\"animationSpeed\\\" : \\\"1\\\",\\n \\\"animationIdleTime\\\" : \\\"5\\\",\\n \\\"backgroundIsGradient\\\" : \\\"false\\\",\\n \\\"backgroundIsColor\\\" : \\\"false\\\",\\n \\\"gradientBackgroundColor1\\\" : \\\"#ffffff\\\",\\n \\\"gradientBackgroundColor2\\\" : \\\"#aaaaaa\\\",\\n \\\"plainBackgroundColor\\\" : \\\"#ffffff\\\",\\n \\\"environmentName\\\" : \\\"studio_small\\\",\\n \\\"baseUnits\\\" : \\\"m,cm,mm,yd,ft,in\\\",\\n \\\"displayUnits\\\" : \\\"m,cm,mm,yd,ft,in\\\"\\n}\"
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/embeds/create"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"model_id": 281,
"name": "\"my embeds name\"",
"save_user_theme": false,
"config": "{\n \"renderCanvasCSS\" : \"background:;\",\n \"environmentURL\" : \"images\/environment.dds\",\n \"companyLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUh...kSuQmCC\",\n \"companyLogoToggle\" : \"true\",\n \"companyLink\" : \"https:\/\/dgg3d.com\",\n \"companyLogoCSS\" : \"width:120px;height:71.3004px;background:;\",\n \"productLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUh...ASUVORK5CYII=\",\n \"productLogoToggle\" : \"true\",\n \"productLink\" : \"https:\/\/rapidcompact.com\",\n \"productLogoCSS\" : \"width:120px;height:21.4819px;background:;\",\n \"threeDLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUhEU...OAAAAAElFTkSuQmCC\",\n \"threeDLogoToggle\" : \"true\",\n \"threeDLogoCSS\" : \"width:24px;height:24px;background:;\",\n \"interactiveToolsCSS\" : \"background:;\",\n \"skyBoxEnabled\" : \"false\",\n \"skyBoxBlur\" : \"0\",\n \"shadowToggle\" : \"false\",\n \"shadowOpacity\" : \"0.5\",\n \"shadowBlur\" : \"0\",\n \"shadowLightIntensity\" : \"0.3\",\n \"cameraMinVerticalAngle\" : \"-90\",\n \"cameraMaxVerticalAngle\" : \"90\",\n \"cameraMinZoom\" : \"1\",\n \"cameraMaxZoom\" : \"6\",\n \"cameraPanning\" : \"0.5\",\n \"cameraBloom\" : \"0\",\n \"cameraContrast\" : \"1\",\n \"cameraExposure\" : \"1\",\n \"fxaaOn\" : \"true\",\n \"enableSimpleMeasurement\" : \"false\",\n \"enableCoordinateDisplay\" : \"false\",\n \"baseUnit\" : \"m\",\n \"displayUnit\" : \"m\",\n \"enableARBtn\" : \"false\",\n \"enableAnimationControl\" : \"false\",\n \"animationSpeed\" : \"1\",\n \"animationIdleTime\" : \"5\",\n \"backgroundIsGradient\" : \"false\",\n \"backgroundIsColor\" : \"false\",\n \"gradientBackgroundColor1\" : \"#ffffff\",\n \"gradientBackgroundColor2\" : \"#aaaaaa\",\n \"plainBackgroundColor\" : \"#ffffff\",\n \"environmentName\" : \"studio_small\",\n \"baseUnits\" : \"m,cm,mm,yd,ft,in\",\n \"displayUnits\" : \"m,cm,mm,yd,ft,in\"\n}"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/embeds/create'
payload = {
"model_id": 281,
"name": "\"my embeds name\"",
"save_user_theme": false,
"config": "{\n \"renderCanvasCSS\" : \"background:;\",\n \"environmentURL\" : \"images\/environment.dds\",\n \"companyLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUh...kSuQmCC\",\n \"companyLogoToggle\" : \"true\",\n \"companyLink\" : \"https:\/\/dgg3d.com\",\n \"companyLogoCSS\" : \"width:120px;height:71.3004px;background:;\",\n \"productLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUh...ASUVORK5CYII=\",\n \"productLogoToggle\" : \"true\",\n \"productLink\" : \"https:\/\/rapidcompact.com\",\n \"productLogoCSS\" : \"width:120px;height:21.4819px;background:;\",\n \"threeDLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUhEU...OAAAAAElFTkSuQmCC\",\n \"threeDLogoToggle\" : \"true\",\n \"threeDLogoCSS\" : \"width:24px;height:24px;background:;\",\n \"interactiveToolsCSS\" : \"background:;\",\n \"skyBoxEnabled\" : \"false\",\n \"skyBoxBlur\" : \"0\",\n \"shadowToggle\" : \"false\",\n \"shadowOpacity\" : \"0.5\",\n \"shadowBlur\" : \"0\",\n \"shadowLightIntensity\" : \"0.3\",\n \"cameraMinVerticalAngle\" : \"-90\",\n \"cameraMaxVerticalAngle\" : \"90\",\n \"cameraMinZoom\" : \"1\",\n \"cameraMaxZoom\" : \"6\",\n \"cameraPanning\" : \"0.5\",\n \"cameraBloom\" : \"0\",\n \"cameraContrast\" : \"1\",\n \"cameraExposure\" : \"1\",\n \"fxaaOn\" : \"true\",\n \"enableSimpleMeasurement\" : \"false\",\n \"enableCoordinateDisplay\" : \"false\",\n \"baseUnit\" : \"m\",\n \"displayUnit\" : \"m\",\n \"enableARBtn\" : \"false\",\n \"enableAnimationControl\" : \"false\",\n \"animationSpeed\" : \"1\",\n \"animationIdleTime\" : \"5\",\n \"backgroundIsGradient\" : \"false\",\n \"backgroundIsColor\" : \"false\",\n \"gradientBackgroundColor1\" : \"#ffffff\",\n \"gradientBackgroundColor2\" : \"#aaaaaa\",\n \"plainBackgroundColor\" : \"#ffffff\",\n \"environmentName\" : \"studio_small\",\n \"baseUnits\" : \"m,cm,mm,yd,ft,in\",\n \"displayUnits\" : \"m,cm,mm,yd,ft,in\"\n}"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (201, success):
{
'status': 'Successful',
'message': 'Embed created successfully.',
'rapidmodel_id': 31,
'embed_id': 513,
'embed_url': 'http://api.rapidcompact.com/viewer?id=iKlCoxprxK',
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Embed
requires authentication
Example request:
curl --request DELETE \
"https://api.rapidpipeline.com/api/v2/embeds/281" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/embeds/281"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/embeds/281'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Example response (204, success):
Empty response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Create Embed from Base Asset
requires authentication
Create an embed from a base asset. The base asset must be in the .glb file format. The webhooks will be called with the 'embed_from_raw_creation' event to notify the user as soon as the embed is created
Example request:
curl --request POST \
"https://api.rapidpipeline.com/api/v2/embeds/raw" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"raw_model_id\": 281,
\"name\": \"\\\"my embeds name\\\"\",
\"save_user_theme\": true,
\"config\": \"{\\n \\\"renderCanvasCSS\\\" : \\\"background:;\\\",\\n \\\"environmentURL\\\" : \\\"images\\/environment.dds\\\",\\n \\\"companyLogo\\\" : \\\"data:image\\/png;base64,iVBORw0KGgoAAAANSUh...kSuQmCC\\\",\\n \\\"companyLogoToggle\\\" : \\\"true\\\",\\n \\\"companyLink\\\" : \\\"https:\\/\\/dgg3d.com\\\",\\n \\\"companyLogoCSS\\\" : \\\"width:120px;height:71.3004px;background:;\\\",\\n \\\"productLogo\\\" : \\\"data:image\\/png;base64,iVBORw0KGgoAAAANSUh...ASUVORK5CYII=\\\",\\n \\\"productLogoToggle\\\" : \\\"true\\\",\\n \\\"productLink\\\" : \\\"https:\\/\\/rapidcompact.com\\\",\\n \\\"productLogoCSS\\\" : \\\"width:120px;height:21.4819px;background:;\\\",\\n \\\"threeDLogo\\\" : \\\"data:image\\/png;base64,iVBORw0KGgoAAAANSUhEU...OAAAAAElFTkSuQmCC\\\",\\n \\\"threeDLogoToggle\\\" : \\\"true\\\",\\n \\\"threeDLogoCSS\\\" : \\\"width:24px;height:24px;background:;\\\",\\n \\\"interactiveToolsCSS\\\" : \\\"background:;\\\",\\n \\\"skyBoxEnabled\\\" : \\\"false\\\",\\n \\\"skyBoxBlur\\\" : \\\"0\\\",\\n \\\"shadowToggle\\\" : \\\"false\\\",\\n \\\"shadowOpacity\\\" : \\\"0.5\\\",\\n \\\"shadowBlur\\\" : \\\"0\\\",\\n \\\"shadowLightIntensity\\\" : \\\"0.3\\\",\\n \\\"cameraMinVerticalAngle\\\" : \\\"-90\\\",\\n \\\"cameraMaxVerticalAngle\\\" : \\\"90\\\",\\n \\\"cameraMinZoom\\\" : \\\"1\\\",\\n \\\"cameraMaxZoom\\\" : \\\"6\\\",\\n \\\"cameraPanning\\\" : \\\"0.5\\\",\\n \\\"cameraBloom\\\" : \\\"0\\\",\\n \\\"cameraContrast\\\" : \\\"1\\\",\\n \\\"cameraExposure\\\" : \\\"1\\\",\\n \\\"fxaaOn\\\" : \\\"true\\\",\\n \\\"enableSimpleMeasurement\\\" : \\\"false\\\",\\n \\\"enableCoordinateDisplay\\\" : \\\"false\\\",\\n \\\"baseUnit\\\" : \\\"m\\\",\\n \\\"displayUnit\\\" : \\\"m\\\",\\n \\\"enableARBtn\\\" : \\\"false\\\",\\n \\\"enableAnimationControl\\\" : \\\"false\\\",\\n \\\"animationSpeed\\\" : \\\"1\\\",\\n \\\"animationIdleTime\\\" : \\\"5\\\",\\n \\\"backgroundIsGradient\\\" : \\\"false\\\",\\n \\\"backgroundIsColor\\\" : \\\"false\\\",\\n \\\"gradientBackgroundColor1\\\" : \\\"#ffffff\\\",\\n \\\"gradientBackgroundColor2\\\" : \\\"#aaaaaa\\\",\\n \\\"plainBackgroundColor\\\" : \\\"#ffffff\\\",\\n \\\"environmentName\\\" : \\\"studio_small\\\",\\n \\\"baseUnits\\\" : \\\"m,cm,mm,yd,ft,in\\\",\\n \\\"displayUnits\\\" : \\\"m,cm,mm,yd,ft,in\\\"\\n}\"
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/embeds/raw"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"raw_model_id": 281,
"name": "\"my embeds name\"",
"save_user_theme": true,
"config": "{\n \"renderCanvasCSS\" : \"background:;\",\n \"environmentURL\" : \"images\/environment.dds\",\n \"companyLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUh...kSuQmCC\",\n \"companyLogoToggle\" : \"true\",\n \"companyLink\" : \"https:\/\/dgg3d.com\",\n \"companyLogoCSS\" : \"width:120px;height:71.3004px;background:;\",\n \"productLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUh...ASUVORK5CYII=\",\n \"productLogoToggle\" : \"true\",\n \"productLink\" : \"https:\/\/rapidcompact.com\",\n \"productLogoCSS\" : \"width:120px;height:21.4819px;background:;\",\n \"threeDLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUhEU...OAAAAAElFTkSuQmCC\",\n \"threeDLogoToggle\" : \"true\",\n \"threeDLogoCSS\" : \"width:24px;height:24px;background:;\",\n \"interactiveToolsCSS\" : \"background:;\",\n \"skyBoxEnabled\" : \"false\",\n \"skyBoxBlur\" : \"0\",\n \"shadowToggle\" : \"false\",\n \"shadowOpacity\" : \"0.5\",\n \"shadowBlur\" : \"0\",\n \"shadowLightIntensity\" : \"0.3\",\n \"cameraMinVerticalAngle\" : \"-90\",\n \"cameraMaxVerticalAngle\" : \"90\",\n \"cameraMinZoom\" : \"1\",\n \"cameraMaxZoom\" : \"6\",\n \"cameraPanning\" : \"0.5\",\n \"cameraBloom\" : \"0\",\n \"cameraContrast\" : \"1\",\n \"cameraExposure\" : \"1\",\n \"fxaaOn\" : \"true\",\n \"enableSimpleMeasurement\" : \"false\",\n \"enableCoordinateDisplay\" : \"false\",\n \"baseUnit\" : \"m\",\n \"displayUnit\" : \"m\",\n \"enableARBtn\" : \"false\",\n \"enableAnimationControl\" : \"false\",\n \"animationSpeed\" : \"1\",\n \"animationIdleTime\" : \"5\",\n \"backgroundIsGradient\" : \"false\",\n \"backgroundIsColor\" : \"false\",\n \"gradientBackgroundColor1\" : \"#ffffff\",\n \"gradientBackgroundColor2\" : \"#aaaaaa\",\n \"plainBackgroundColor\" : \"#ffffff\",\n \"environmentName\" : \"studio_small\",\n \"baseUnits\" : \"m,cm,mm,yd,ft,in\",\n \"displayUnits\" : \"m,cm,mm,yd,ft,in\"\n}"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/embeds/raw'
payload = {
"raw_model_id": 281,
"name": "\"my embeds name\"",
"save_user_theme": true,
"config": "{\n \"renderCanvasCSS\" : \"background:;\",\n \"environmentURL\" : \"images\/environment.dds\",\n \"companyLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUh...kSuQmCC\",\n \"companyLogoToggle\" : \"true\",\n \"companyLink\" : \"https:\/\/dgg3d.com\",\n \"companyLogoCSS\" : \"width:120px;height:71.3004px;background:;\",\n \"productLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUh...ASUVORK5CYII=\",\n \"productLogoToggle\" : \"true\",\n \"productLink\" : \"https:\/\/rapidcompact.com\",\n \"productLogoCSS\" : \"width:120px;height:21.4819px;background:;\",\n \"threeDLogo\" : \"data:image\/png;base64,iVBORw0KGgoAAAANSUhEU...OAAAAAElFTkSuQmCC\",\n \"threeDLogoToggle\" : \"true\",\n \"threeDLogoCSS\" : \"width:24px;height:24px;background:;\",\n \"interactiveToolsCSS\" : \"background:;\",\n \"skyBoxEnabled\" : \"false\",\n \"skyBoxBlur\" : \"0\",\n \"shadowToggle\" : \"false\",\n \"shadowOpacity\" : \"0.5\",\n \"shadowBlur\" : \"0\",\n \"shadowLightIntensity\" : \"0.3\",\n \"cameraMinVerticalAngle\" : \"-90\",\n \"cameraMaxVerticalAngle\" : \"90\",\n \"cameraMinZoom\" : \"1\",\n \"cameraMaxZoom\" : \"6\",\n \"cameraPanning\" : \"0.5\",\n \"cameraBloom\" : \"0\",\n \"cameraContrast\" : \"1\",\n \"cameraExposure\" : \"1\",\n \"fxaaOn\" : \"true\",\n \"enableSimpleMeasurement\" : \"false\",\n \"enableCoordinateDisplay\" : \"false\",\n \"baseUnit\" : \"m\",\n \"displayUnit\" : \"m\",\n \"enableARBtn\" : \"false\",\n \"enableAnimationControl\" : \"false\",\n \"animationSpeed\" : \"1\",\n \"animationIdleTime\" : \"5\",\n \"backgroundIsGradient\" : \"false\",\n \"backgroundIsColor\" : \"false\",\n \"gradientBackgroundColor1\" : \"#ffffff\",\n \"gradientBackgroundColor2\" : \"#aaaaaa\",\n \"plainBackgroundColor\" : \"#ffffff\",\n \"environmentName\" : \"studio_small\",\n \"baseUnits\" : \"m,cm,mm,yd,ft,in\",\n \"displayUnits\" : \"m,cm,mm,yd,ft,in\"\n}"
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (200, success):
{
"message" : "Embed creation pending, wait for the webhook call",
"embed_id": 513,
"embed_url": 'http://api.rapidcompact.com/viewer?id=iKlCoxprxK',
}
Example response (422, no glb format):
{
"message": "Raw model is not in the glb file format"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Presets
Create Preset
requires authentication
The "Try it out" feature for this endpoint doesn't work, because the config gets sent as a string, but it needs to be a json object. Please check the example request on the right side
Example request:
curl --request POST \
"https://api.rapidpipeline.com/api/v2/preset/create" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"name\": \"name of the new preset\",
\"description\": \"Optimizes for 20k faces and drops textures\",
\"rapidCompactCoreVersion\": \"6.1.1\",
\"config\": {
\"schema\": \"2.5\",
\"limits\": {
\"faces\": {
\"count\": 30000
},
\"textures\": {
\"baseColor\": 2048,
\"emissive\": 2048,
\"normal\": 2048,
\"orm\": 2048
}
},
\"assetSimplification\": {
\"meshDecimation\": {
\"method\": \"rebake\"
},
\"topologySettings\": {
\"vertexMergingDistance\": 0.005,
\"meshDensityEqualization\": 0,
\"boundaryPreservationFactor\": 0.5
},
\"uvAndAtlasSettings\": {
\"uvStretchTolerance\": 0
},
\"materialAndTextureBaking\": {
\"bakingQuality\": \"medium\",
\"bakeNormalMap\": true,
\"bakeAOMap\": false
}
},
\"compressionAndExport\": {
\"fileExports\": [
{
\"fileType\": \"glb\",
\"meshCompressionMethod\": \"none\",
\"customScaling\": 1,
\"textureFormat\": {
\"baseColor\": \"auto\",
\"emissive\": \"auto\",
\"normal\": \"png\",
\"orm\": \"auto\"
}
}
]
}
}
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/preset/create"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"name": "name of the new preset",
"description": "Optimizes for 20k faces and drops textures",
"rapidCompactCoreVersion": "6.1.1",
"config": {
"schema": "2.5",
"limits": {
"faces": {
"count": 30000
},
"textures": {
"baseColor": 2048,
"emissive": 2048,
"normal": 2048,
"orm": 2048
}
},
"assetSimplification": {
"meshDecimation": {
"method": "rebake"
},
"topologySettings": {
"vertexMergingDistance": 0.005,
"meshDensityEqualization": 0,
"boundaryPreservationFactor": 0.5
},
"uvAndAtlasSettings": {
"uvStretchTolerance": 0
},
"materialAndTextureBaking": {
"bakingQuality": "medium",
"bakeNormalMap": true,
"bakeAOMap": false
}
},
"compressionAndExport": {
"fileExports": [
{
"fileType": "glb",
"meshCompressionMethod": "none",
"customScaling": 1,
"textureFormat": {
"baseColor": "auto",
"emissive": "auto",
"normal": "png",
"orm": "auto"
}
}
]
}
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/preset/create'
payload = {
"name": "name of the new preset",
"description": "Optimizes for 20k faces and drops textures",
"rapidCompactCoreVersion": "6.1.1",
"config": {
"schema": "2.5",
"limits": {
"faces": {
"count": 30000
},
"textures": {
"baseColor": 2048,
"emissive": 2048,
"normal": 2048,
"orm": 2048
}
},
"assetSimplification": {
"meshDecimation": {
"method": "rebake"
},
"topologySettings": {
"vertexMergingDistance": 0.005,
"meshDensityEqualization": 0,
"boundaryPreservationFactor": 0.5
},
"uvAndAtlasSettings": {
"uvStretchTolerance": 0
},
"materialAndTextureBaking": {
"bakingQuality": "medium",
"bakeNormalMap": true,
"bakeAOMap": false
}
},
"compressionAndExport": {
"fileExports": [
{
"fileType": "glb",
"meshCompressionMethod": "none",
"customScaling": 1,
"textureFormat": {
"baseColor": "auto",
"emissive": "auto",
"normal": "png",
"orm": "auto"
}
}
]
}
}
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (200, success):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Update Preset
requires authentication
The "Try it out" feature for this endpoint doesn't work, because the config gets sent as a string, but it needs to be a json object. Please check the example request on the right side
Example request:
curl --request PATCH \
"https://api.rapidpipeline.com/api/v2/preset/update" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"id\": 42,
\"name\": \"name of the new preset\",
\"config\": {
\"schema\": \"2.5\",
\"limits\": {
\"faces\": {
\"count\": 30000
},
\"textures\": {
\"baseColor\": 2048,
\"emissive\": 2048,
\"normal\": 2048,
\"orm\": 2048
}
},
\"assetSimplification\": {
\"meshDecimation\": {
\"method\": \"rebake\"
},
\"topologySettings\": {
\"vertexMergingDistance\": 0.005,
\"meshDensityEqualization\": 0,
\"boundaryPreservationFactor\": 0.5
},
\"uvAndAtlasSettings\": {
\"uvStretchTolerance\": 0
},
\"materialAndTextureBaking\": {
\"bakingQuality\": \"medium\",
\"bakeNormalMap\": true,
\"bakeAOMap\": false
}
},
\"compressionAndExport\": {
\"fileExports\": [
{
\"fileType\": \"glb\",
\"meshCompressionMethod\": \"none\",
\"customScaling\": 1,
\"textureFormat\": {
\"baseColor\": \"auto\",
\"emissive\": \"auto\",
\"normal\": \"png\",
\"orm\": \"auto\"
}
}
]
}
}
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/preset/update"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"id": 42,
"name": "name of the new preset",
"config": {
"schema": "2.5",
"limits": {
"faces": {
"count": 30000
},
"textures": {
"baseColor": 2048,
"emissive": 2048,
"normal": 2048,
"orm": 2048
}
},
"assetSimplification": {
"meshDecimation": {
"method": "rebake"
},
"topologySettings": {
"vertexMergingDistance": 0.005,
"meshDensityEqualization": 0,
"boundaryPreservationFactor": 0.5
},
"uvAndAtlasSettings": {
"uvStretchTolerance": 0
},
"materialAndTextureBaking": {
"bakingQuality": "medium",
"bakeNormalMap": true,
"bakeAOMap": false
}
},
"compressionAndExport": {
"fileExports": [
{
"fileType": "glb",
"meshCompressionMethod": "none",
"customScaling": 1,
"textureFormat": {
"baseColor": "auto",
"emissive": "auto",
"normal": "png",
"orm": "auto"
}
}
]
}
}
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/preset/update'
payload = {
"id": 42,
"name": "name of the new preset",
"config": {
"schema": "2.5",
"limits": {
"faces": {
"count": 30000
},
"textures": {
"baseColor": 2048,
"emissive": 2048,
"normal": 2048,
"orm": 2048
}
},
"assetSimplification": {
"meshDecimation": {
"method": "rebake"
},
"topologySettings": {
"vertexMergingDistance": 0.005,
"meshDensityEqualization": 0,
"boundaryPreservationFactor": 0.5
},
"uvAndAtlasSettings": {
"uvStretchTolerance": 0
},
"materialAndTextureBaking": {
"bakingQuality": "medium",
"bakeNormalMap": true,
"bakeAOMap": false
}
},
"compressionAndExport": {
"fileExports": [
{
"fileType": "glb",
"meshCompressionMethod": "none",
"customScaling": 1,
"textureFormat": {
"baseColor": "auto",
"emissive": "auto",
"normal": "png",
"orm": "auto"
}
}
]
}
}
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()
Example response (200, success):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get all Factory Presets
requires authentication
Factory Presets are provided by RapidCompact
A factory presets describes a optimization setting for different applications e.g. Lens Studio, Game Engines (Unreal, Unity) and devices (e.g. Hololens). You can use the returned id when using the Optimize endpoint
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/preset/factory" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/preset/factory"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/preset/factory'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
[
{
"id": 1,
"name": "Spark AR Low Res",
"config": "{\"workflowSettings\":{\"targetMeshResolution\":{\"faceCount\":15000},\"targetTextureResolution\":{\"baseColor\":1024,\"emissive\":1024,\"normal\":1024,\"orm\":1024}},\"assetSimplification\":{\"meshDecimation\":{\"method\":\"rebake\"},\"topologySettings\":{\"vertexMergingDistance\":0.005,\"meshDensityEqualization\":0,\"boundaryPreservationFactor\":0.5},\"uvAndAtlasSettings\":{\"uvStretchTolerance\":0},\"materialAndTextureBaking\":{\"bakingQuality\":\"low\",\"bakeNormalMap\":true,\"bakeAOMap\":false}},\"compressionAndExport\":{\"fileExports\":[{\"fileType\":\"glb\",\"meshCompressionMethod\":\"none\",\"customScaling\":1,\"textureFormat\":{\"baseColor\":\"jpg\",\"emissive\":\"jpg\",\"normal\":\"jpg\",\"orm\":\"jpg\"}}]}}"
},
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Convert Preset
requires authentication
Convert a preset in API format to CLI format and CLI commands. The endpoint will return a zip file containing the requested files. The "Try it out" feature for this endpoint doesn't work, because the config gets sent as a string, but it needs to be a json object. Please check the example request on the right side
Example request:
curl --request POST \
"https://api.rapidpipeline.com/api/v2/preset/rpdx" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"config\": {
\"schema\": \"2.5\",
\"limits\": {
\"faces\": {
\"count\": 30000
},
\"textures\": {
\"baseColor\": 2048,
\"emissive\": 2048,
\"normal\": 2048,
\"orm\": 2048
}
},
\"assetSimplification\": {
\"meshDecimation\": {
\"method\": \"rebake\"
},
\"topologySettings\": {
\"vertexMergingDistance\": 0.005,
\"meshDensityEqualization\": 0,
\"boundaryPreservationFactor\": 0.5
},
\"uvAndAtlasSettings\": {
\"uvStretchTolerance\": 0
},
\"materialAndTextureBaking\": {
\"bakingQuality\": \"medium\",
\"bakeNormalMap\": true,
\"bakeAOMap\": false
}
},
\"compressionAndExport\": {
\"fileExports\": [
{
\"fileType\": \"glb\",
\"meshCompressionMethod\": \"none\",
\"customScaling\": 1,
\"textureFormat\": {
\"baseColor\": \"auto\",
\"emissive\": \"auto\",
\"normal\": \"png\",
\"orm\": \"auto\"
}
}
]
}
}
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/preset/rpdx"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"config": {
"schema": "2.5",
"limits": {
"faces": {
"count": 30000
},
"textures": {
"baseColor": 2048,
"emissive": 2048,
"normal": 2048,
"orm": 2048
}
},
"assetSimplification": {
"meshDecimation": {
"method": "rebake"
},
"topologySettings": {
"vertexMergingDistance": 0.005,
"meshDensityEqualization": 0,
"boundaryPreservationFactor": 0.5
},
"uvAndAtlasSettings": {
"uvStretchTolerance": 0
},
"materialAndTextureBaking": {
"bakingQuality": "medium",
"bakeNormalMap": true,
"bakeAOMap": false
}
},
"compressionAndExport": {
"fileExports": [
{
"fileType": "glb",
"meshCompressionMethod": "none",
"customScaling": 1,
"textureFormat": {
"baseColor": "auto",
"emissive": "auto",
"normal": "png",
"orm": "auto"
}
}
]
}
}
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/preset/rpdx'
payload = {
"config": {
"schema": "2.5",
"limits": {
"faces": {
"count": 30000
},
"textures": {
"baseColor": 2048,
"emissive": 2048,
"normal": 2048,
"orm": 2048
}
},
"assetSimplification": {
"meshDecimation": {
"method": "rebake"
},
"topologySettings": {
"vertexMergingDistance": 0.005,
"meshDensityEqualization": 0,
"boundaryPreservationFactor": 0.5
},
"uvAndAtlasSettings": {
"uvStretchTolerance": 0
},
"materialAndTextureBaking": {
"bakingQuality": "medium",
"bakeNormalMap": true,
"bakeAOMap": false
}
},
"compressionAndExport": {
"fileExports": [
{
"fileType": "glb",
"meshCompressionMethod": "none",
"customScaling": 1,
"textureFormat": {
"baseColor": "auto",
"emissive": "auto",
"normal": "png",
"orm": "auto"
}
}
]
}
}
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
Example response (200, success):
<Zip File> Streamed Response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Preset in CLI Format
requires authentication
The endpoint will return a zip file containing the requested files
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/preset/rpdx/281" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/preset/rpdx/281"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/preset/rpdx/281'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
<Zip File> Streamed Response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Download Preset
requires authentication
Downloads a preset as zip file which contains both API and CLI formats.
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/preset/281/download" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/preset/281/download"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/preset/281/download'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
<Zip File> Streamed Response
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Preset
requires authentication
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/preset/281" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/preset/281"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/preset/281'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
{
"id": 11,
"name": "preset 2",
"config": {
"schema": "2.5",
"limits": {
"faces": {
"count": 30000
},
"textures": {
"baseColor": 2048,
"emissive": 2048,
"normal": 2048,
"orm": 2048
}
},
"assetSimplification": {
"meshDecimation": {
"method": "rebake"
},
"topologySettings": {
"vertexMergingDistance": 0.005,
"meshDensityEqualization": 0,
"boundaryPreservationFactor": 0.5
},
"uvAndAtlasSettings": {
"uvStretchTolerance": 0
},
"materialAndTextureBaking": {
"bakingQuality": "medium",
"bakeNormalMap": true,
"bakeAOMap": false
}
},
"compressionAndExport": {
"fileExports": [
{
"fileType": "glb",
"meshCompressionMethod": "none",
"customScaling": 1,
"textureFormat": {
"baseColor": "auto",
"emissive": "auto",
"normal": "png",
"orm": "auto"
}
}
]
}
},
"rpdx_version": "6.1.1",
"user_id": 328,
"created_at": "2021-04-22T09:11:30.000000Z",
"updated_at": "2021-04-22T09:11:30.000000Z"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Preset
requires authentication
Example request:
curl --request DELETE \
"https://api.rapidpipeline.com/api/v2/preset/281" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/preset/281"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/preset/281'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Example response (200, success):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get all Presets
requires authentication
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/preset" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/preset"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/preset'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
[
{
"id": 11,
"name": "preset 2",
"config": "{\"sceneManipulation\":{\"rotateZUp\":false,\"centerModel\":false,\"removeInvisibleGeometry\":false,\"discardAnimations\":false,\"removeSmallFeatures\":{\"removalPercentage\":0}},\"assetSimplification\":{\"meshDecimation\":{\"method\":\"rebake\"},\"topologySettings\":{\"vertexMergingDistance\":0.005,\"meshDensityEqualization\":0,\"boundaryPreservationFactor\":0.5,\"preserveTopology\":false},\"uvAndAtlasSettings\":{\"uvStretchTolerance\":0},\"materialAndTextureBaking\":{\"bakingQuality\":\"medium\",\"bakeNormalMap\":true,\"bakeAOMap\":true}},\"compressionAndExport\":{\"fileExports\":[{\"fileType\":\"glb\",\"meshCompressionMethod\":\"none\",\"customScaling\":1,\"textureFormat\":{\"baseColor\":\"auto\",\"emissive\":\"auto\",\"normal\":\"auto\",\"orm\":\"auto\"}},{\"fileType\":\"usdz\",\"meshCompressionMethod\":\"none\",\"customScaling\":1,\"textureFormat\":{\"baseColor\":\"auto\",\"emissive\":\"auto\",\"normal\":\"auto\",\"orm\":\"auto\"}},{\"fileType\":\"obj\",\"meshCompressionMethod\":\"none\",\"customScaling\":1,\"textureFormat\":{\"baseColor\":\"auto\",\"emissive\":\"auto\",\"normal\":\"auto\",\"orm\":\"auto\"}}]},\"schema\":\"2.5\",\"limits\":{\"faces\":{\"percentage\":50},\"textures\":{\"baseColor\":2048,\"emissive\":2048,\"normal\":2048,\"orm\":2048}}}",
"rpdx_version": "6.1.1",
"user_id": 328,
"created_at": "2023-01-22T09:11:30.000000Z",
"updated_at": "2023-01-22T09:11:30.000000Z",
"description": "",
"meta": "{\"filename\": {\"useId\": false, \"useSuffix\": null, \"usePresetName\": false}}"
}
]
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
POST api/v2/preset/track-search-event
requires authentication
Example request:
curl --request POST \
"https://api.rapidpipeline.com/api/v2/preset/track-search-event" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/preset/track-search-event"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/preset/track-search-event'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('POST', url, headers=headers)
response.json()
Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-frame-options: ALLOWALL
vary: Origin
{
"message": "Invalid token",
"error": "Token format is invalid"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Rapid Model
Get Rapid Models
requires authentication
Paginated response of your rapid models. Search for rapid models by name or tag
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rapidmodel?q=yourSearchString" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rapidmodel"
);
const params = {
"q": "yourSearchString",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rapidmodel'
params = {
'q': 'yourSearchString',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
Example response (200, success):
{
"data": [
{
"id": 1,
"name": "teapot ",
"optimization_status": "done",
"created_at": "2022-05-24T16:28:56+02:00",
"updated_at": "2022-05-24T16:29:11+02:00",
"processing_step": "Done",
"external": false,
"rapid_compact_core_version": "6.1.1",
"tags": [
{
"id": 1,
"name": "Low-Poly",
"created_at": "2022-05-24 15:06:03",
"updated_at": "2022-05-24 15:06:03",
"rapid_id": 1
},
],
"export_name": "teapot_1",
"uuid": "f26cf299-c8df-4d4d-9eef-3f8e87d882b7",
"accepted": false,
"meta": {
"size": 665168,
"exportSize": 1495763
},
"origin": "",
"optimization_formats": "[...]",
"thumbnail": {
"first": "signed url",
"turntable": "signed url"
},
"model": {
"rootUrl": "rootURL",
"fileName": "fileName"
},
"rpd_info": "signed url",
"rpd_warnings": "signed url",
"downloads": {
"usdz": "signed url",
"glb": "signed url",
"all": {
"rapid.glb": "signed url",
"rapid.usdz": "signed url"
}
}
}
],
"links": {
"first": "https://url/api/v2/rapidmodel?page=1",
"last": "https://url/api/v2/rapidmodel?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://url/api/v2/rapidmodel?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://url/api/v2/rapidmodel",
"per_page": 12,
"to": 1,
"total": 1
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Rapid Model
requires authentication
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rapidmodel/635" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rapidmodel/635"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rapidmodel/635'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"id": 635,
"name": "teapot ",
"optimization_status": "done",
"created_at": "2021-02-16T16:50:41+01:00",
"updated_at": "2021-02-16T16:50:53+01:00",
"processing_step": "Done",
"external": false,
"rapid_compact_core_version": "6.1.1",
"tags": [
{
"id": 377,
"name": "Preserve UVs",
"created_at": "2024-02-15 18:05:36+00",
"updated_at": "2024-02-15 18:05:36+00",
"rapid_id": 635
}
],
"export_name": null,
"uuid": "d8316d1f-3c7d-4777-b72e-c760064f9d08",
"accepted": false,
"meta": {
"size": 573420,
"qc": [
{
"fbx": {
"maxScore": 75.12036636343548,
"avgScore": 53.22535526345469
}
},
{
"glb": {
"maxScore": 75.12185336255156,
"avgScore": 53.24014762786459
}
},
{
"usdz": {
"maxScore": 75.12063337875662,
"avgScore": 53.22537017442912
}
}
],
"exportSize": 1029548
},
"origin": "",
"optimization_formats": "[...]",
"thumbnail": {
"first": "signed url for the thumbnail",
"turntable": {
"rapid.glb": "signed url for theturntable"
}
},
"model": {
"rootUrl": "s3 link",
"fileName": "rapid.glb?signed"
},
"rpd_info": "signed url for rpd_info.json",
"rpd_warnings": "signed url for the warning.log",
"metrics": "signed url for the metrics.json",
"downloads": {
"glb": "signed url for the .glb",
"all": {
"rapid.glb": "signed url for the .glb"
}
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Rapid Model
requires authentication
Example request:
curl --request DELETE \
"https://api.rapidpipeline.com/api/v2/rapidmodel/635" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rapidmodel/635"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rapidmodel/635'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('DELETE', url, headers=headers)
response.json()
Example response (200, success):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get Export Infos
requires authentication
Calling this endpoint return a list of links to download the exports and their respective infos
Please note that the export infos are generated only for glb and gltf formats
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rapidmodel/695/exports" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rapidmodel/695/exports"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rapidmodel/695/exports'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200):
{
"data": {
"rapid.glb": {
"download": "signed s3 link to rapid.glb",
"info": {
"images": [
{
"channels": 3,
"compressedByteSize": 310996,
"height": 2048,
"mimetype": "image/jpeg",
"slot": "normal",
"width": 2048
}
]
}
},
"rapid.usdz": {
"download": "link to rapid.usdz",
"info": null
}
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Delete Tag of a Rapid Model
requires authentication
Add Tags to a Rapid Model
requires authentication
Example request:
curl --request PUT \
"https://api.rapidpipeline.com/api/v2/rapidmodel/281" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"tags\": [
\"chair\",
\"brown\"
]
}"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rapidmodel/281"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"tags": [
"chair",
"brown"
]
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rapidmodel/281'
payload = {
"tags": [
"chair",
"brown"
]
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
Example response (200, success):
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Download used Preset from Rapid Model
requires authentication
Downloads a preset as zip file which contains API and CLI formats
Only available for Rapidmodels that were optimized after 2023-03
Example request:
curl --request GET \
--get "https://api.rapidpipeline.com/api/v2/rapidmodel/281/download/preset" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://api.rapidpipeline.com/api/v2/rapidmodel/281/download/preset"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
import requests
import json
url = 'https://api.rapidpipeline.com/api/v2/rapidmodel/281/download/preset'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
response = requests.request('GET', url, headers=headers)
response.json()
Example response (200, success):
<Zip File> Streamed Response
Example response (404, error):
Only available for Rapidmodels that were optimized after 2023-03
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Returns hash signed links for the quality control images generated after optimization.
requires authentication
The keys of the images are built with the following reasoning: