{ "variable": [ { "id": "baseUrl", "key": "baseUrl", "type": "string", "name": "string", "value": "https:\/\/api.rapidcompact.com" } ], "info": { "name": "RapidPipeline API v2 Documentation", "_postman_id": "a12bf6f9-300f-4454-8614-b0a44815848f", "description": "", "schema": "https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json" }, "item": [ { "name": "API Tokens", "description": "Endpoints to manage tokens of the user account.", "item": [ { "name": "Get Tokens", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/user\/tokens", "query": [], "raw": "{{baseUrl}}\/api\/v2\/user\/tokens" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "[\n\t{\n\t\t\"id\": 222,\n\t\t\"name\": \"name of api token\",\n\t\t\"last_used_at\": \"2021-09-01T11:21:22.000000Z\",\n\t\t\"created_at\": \"2021-09-01T10:26:57.000000Z\",\n\t\t\"optimization_count\": 42,\n\t}\n]", "name": "success" } ] }, { "name": "Create Token", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/user\/tokens\/create", "query": [], "raw": "{{baseUrl}}\/api\/v2\/user\/tokens\/create" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"name\":\"name of new api token\"}" }, "description": "" }, "response": [ { "header": [], "code": 200, "body": "234|y5NGBTJk5OX5Zva5RfxTz0GkXEL9axN79vTfsJOH", "name": "success" } ] }, { "name": "Delete Token", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/user\/tokens\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/user\/tokens\/:id", "variable": [ { "id": "id", "key": "id", "value": "42", "description": "The id of the API token" } ] }, "method": "DELETE", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [ { "key": "cache-control", "value": "no-cache, private" }, { "key": "content-type", "value": "application\/json" }, { "key": "x-frame-options", "value": "ALLOWALL" }, { "key": "vary", "value": "Origin" } ], "code": 401, "body": "{\"message\":\"Invalid token\",\"error\":\"Token format is invalid\"}", "name": "" } ] }, { "name": "Get Token", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/user\/tokens\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/user\/tokens\/:id", "variable": [ { "id": "id", "key": "id", "value": "42", "description": "The id of the API token" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "{\n\t\"id\": 1,\n\t\"tokenable_type\": \"App\\\\Models\\\\User\",\n\t\"tokenable_id\": 45,\n\t\"name\": \"name of api token\",\n\t\"abilities\": [\n\t\t\"*\"\n\t],\n\t\"last_used_at\": null,\n\t\"created_at\": \"2021-10-26T10:38:07.000000Z\",\n\t\"updated_at\": \"2021-10-26T10:38:07.000000Z\",\n\t\"plain_text\": \"\"\n}", "name": "success" } ] } ] }, { "name": "Base Asset", "description": "Base Assets are sometimes referred to as raw models or source models in tutorials or elsewhere in the docs.\nBase asset is a user uploaded model. All future processing is applied to these assets only.\n\nThis is where you find endpoints some critical endpoints:\n - Uploading a model\n - Optimizing a model\n - Read 3D Metadata of the uploaded model\n - Get running jobs (we suggest you to check webhooks though)\n - Find all optimized versions of a base asset\n\n### What happens to uploaded files?\n\nEach base asset upload will trigger some analysis process to generate 3D metadata and render images\nfor using that file in an easier way in downstream processes. You are going to find this data when\nyou call Get Base Asset endpoint and look at .json or image files inside the data -> downloads.\n\n### Automatically exported models\n\nIf the uploaded model is a CAD file, we will also automatically output a .glb and .usd version of it.\nIf the uploaded model is a 3ds Max file, we will automatically output a .glb, .gltf, .fbx, and .usdz\nversion of it while translating all V-ray materials to PBR materials. Read reference documentation of\nDCC Importer for more information on this topic.\n\n### Base Asset Endpoints\n\nHere are all the base asset endpoints:", "item": [ { "name": "Optimize", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/optimize\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/optimize\/:id", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"config\":{\"import\":{\"general\":{\"rotateZUp\":false,\"fixAnimationData\":false,\"normalmapYFlip\":false},\"USD\":{\"profile\":\"arkit\",\"purpose\":\"render\"},\"CAD\":{\"tessellationResolution\":\"fine\"},\"discard\":{\"cameras\":false,\"lights\":false,\"animations\":false,\"morphTargets\":false,\"unusedUVs\":false}},\"export\":[{\"fileName\":\"\",\"textureMapFilePrefix\":\"\",\"discard\":[],\"format\":{\"gltf\":{\"pbrMaterial\":[]}}}]},\"tags\":[\"Low-Poly\",\"MyTag\"]}" }, "description": "There are two ways to optimize a base asset:\n\nIn the first way send a config as a json object that complies with the [3D Processor Schema](https:\/\/docs.rapidpipeline.com\/docs\/componentDocs\/3dProcessingSchemaSettings\/processor-schema-overview), or send the id of one of your presets or of a factoryPreset\n\nYou can use our \"optimization_finished\" webhook to get notified when your model has been optimized. It also includes downloadlinks to your optimized model" }, "response": [ { "header": [], "code": 200, "body": "{\n \"id\": 281,\n \"name\": \"teapot.obj\",\n \"optimization_status\": \"sent_to_queue\",\n \"job_status\": {\n \"id\": 518,\n \"job_id\": null,\n \"type\": \"App\\\\Jobs\\\\ProcessRawModel\",\n \"queue\": null,\n \"attempts\": 0,\n \"progress_now\": 0,\n \"progress_max\": 0,\n \"status\": \"queued\",\n \"input\": null,\n \"output\": null,\n \"created_at\": \"2021-02-15T13:34:52.000000Z\",\n \"updated_at\": \"2021-02-15T13:34:52.000000Z\",\n \"started_at\": null,\n \"finished_at\": null,\n \"key\": \"rapid_model:624\"\n },\n \"progress\": 0,\n \"processing_step\": \"Scheduled for processing\",\n \"external\": null,\n \"rawmodel\": {\n \"id\": 282,\n \"name\": \"teapot.obj\",\n \"processing\": true\n }\n}", "name": "success" } ] }, { "name": "Multi Optimize", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/optimize", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/optimize" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"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\"}}]}" }, "description": "Optimizes multiple models with one request\n\nUse 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\n\nLook at the example request for the data structure\n\nYou can use our \"optimization_finished\" webhook to get notified when your model has been optimized. It also includes download links to your optimized model" }, "response": [ { "header": [], "code": 204, "body": "", "name": "success" }, { "header": [], "code": 400, "body": "Could not process request: Missing required parameter", "name": "error" }, { "header": [], "code": 500, "body": "An error occurred while processing your request: ...", "name": "error" } ] }, { "name": "Get Running Jobs", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/jobs", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/jobs" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns rapidmodels (until 1 week) that are still being processed or were not successfully optimized" }, "response": [ { "header": [], "code": 200, "body": "{\n \"data\": [\n {\n \"id\": 5812,\n \"name\": \"TVBench\",\n \"optimization_status\": \"failed\",\n \"job_status\": {\n \"id\": 3601,\n \"job_id\": \"edab51b2-1c47-4a0f-b807-58e913dbabc9\",\n \"type\": \"App\\\\Jobs\\\\ProcessRawModel\",\n \"queue\": \"default\",\n \"attempts\": 1,\n \"progress_now\": 100,\n \"progress_max\": 100,\n \"status\": \"finished\",\n \"input\": null,\n \"output\": \"{\\\"exit_code\\\":1}\",\n \"created_at\": \"2021-10-11 20:08:52\",\n \"updated_at\": \"2021-10-11 20:08:53\",\n \"started_at\": \"2021-10-11 20:08:52\",\n \"finished_at\": \"2021-10-11 20:08:53\",\n \"key\": \"rapid_model:5812\"\n },\n \"progress\": 100,\n \"processing_step\": \"Done\",\n \"external\": false,\n \"rawmodel\": {\n \"id\": 2257,\n \"name\": \"TVBench\"\n }\n }\n ]\n }", "name": "success" } ] }, { "name": "Get Base Asset", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns detailed information about an uploaded 3D model asset, including its processing status,\nmetadata, and available downloads. Use this endpoint to monitor upload status or use our webhook\nto get notified when the upload is complete.\n\nKey Field `upload_status`\n\nThe `upload_status` field tracks the model's progress through various processing stages.\n\nMost important values are:\n- \"complete\": All processing completed successfully\n- \"Importing Failed\": General processing failure\n\nOther values are:\n- \"incomplete\": Initial state, upload not yet finished\n- \"waiting\": Upload complete, waiting to start processing\n- \"unzipping\": Extracting uploaded files\n- \"analysing\": Analyzing model structure and contents\n- \"dataprepping\": Preparing data for processing\n- \"dataprepping failed\": Data preparation encountered an error\n- \"RapidQC\": Model is in quality control phase\n- \"Importing Failed Import Limit Exceeded\": Processing failed due to import limits\n\nError Handling:\n1. Check `upload_status` first:\n - \"complete\" indicates successful processing\n\n2. If `has_errors` is true:\n - Set to true if RapidPipeline 3D Processor creates a error.log file with errors\n - Check \"error.log\" in the downloads section for details" }, "response": [ { "header": [], "code": 200, "body": "{\n \"data\": {\n \"id\": 281,\n \"uuid\": \"123e4567-e89b-12d3-a456-426614174000\",\n \"name\": \"teapot\",\n \"external\": false,\n \"upload_status\": \"complete\", \/\/ most important field to check for the upload\/processing status\n \"import_status\": null,\n \"progress\": null,\n \"error_message\": null,\n \"size\": 438680,\n \"created_at\": \"2021-02-08T16:59:52+01:00\",\n \"scale_factor\": \"10\",\n \"has_errors\": false, \/\/ true if RapidPipeline 3D Processor creates a error.log file with errors\n \"format\": \"glb\",\n \"tags\": [\n {\n \"id\": 241,\n \"name\": \"Mid-Poly\",\n \"created_at\": \"2022-12-12 13:12:37+00\",\n \"updated_at\": \"2022-12-12 13:12:37+00\",\n \"raw_id\": 281\n }\n ],\n \"metadata\": null,\n \"downloads\": {\n \"error.log\": \"signed url for the error.log - Contains validation and processing errors\",\n \"info.log\": \"signed url for info.log - Processing information\",\n \"metrics.json\": \"signed url for the metrics.json - Model statistics and measurements\",\n \"rpd_info.json\": \"signed url for the rpd_info.json\",\n \"teapot.obj\": \"signed url for the teapot.obj - Original uploaded file\",\n \"thumb.jpg\": \"signed url for the thumb.jpg - Thumbnail preview\"\n }\n \"converted_glb\": {\n \"name\": \"teapot.glb\",\n \"url\": \"signed url for the converted GLB file\",\n \"human_name\": \"teapot.glb\"\n },\n \"converted_gltf\": {\n \"name\": \"teapot.gltf.zip\",\n \"url\": \"signed url for the converted GLTF file\",\n \"human_name\": \"teapot.gltf\"\n },\n \"converted_max\": {\n \"name\": \"teapot.max.zip\",\n \"url\": \"signed url for the converted MAX file\",\n \"human_name\": \"teapot.max\"\n },\n \"converted_fbx\": {\n \"name\": \"teapot.fbx\",\n \"url\": \"signed url for the converted FBX file\",\n \"human_name\": \"teapot.fbx\"\n },\n \"converted_usdz\": {\n \"name\": \"teapot.usdz\",\n \"url\": \"signed url for the converted USDZ file\",\n \"human_name\": \"teapot.usdz\"\n }\n }\n}", "name": "" }, { "header": [], "code": 200, "body": "{\n \"data\": {\n \"id\": 281,\n \"upload_status\": \"complete\",\n \/\/ ... other fields ...\n }\n}", "name": "Success" }, { "header": [], "code": 200, "body": "{\n \"data\": {\n \"id\": 281,\n \"upload_status\": \"analysing\",\n \/\/ ... other fields ...\n }\n}", "name": "Processing" }, { "header": [], "code": 200, "body": "{\n \"data\": {\n \"id\": 281,\n \"upload_status\": \"Importing Failed\",\n \/\/ ... other fields ...\n }\n}", "name": "Failed" } ] }, { "name": "Delete Base Asset", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" } ] }, "method": "DELETE", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" } ] }, { "name": "Get Download URLs", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id\/downloads", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id\/downloads", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns a list of urls to download the individual base asset files" }, "response": [ { "header": [], "code": 200, "body": "{\n \"RezColorChecker.mtl\":\"signed s3 url\",\n \"RezColorChecker.obj\":\"signed s3 url\",\n \"RezColorChecker.png\":\"signed s3 url\"\n}", "name": "success" } ] }, { "name": "Get Download URLs for converted files.", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id\/downloads\/converted", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id\/downloads\/converted", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns a list of urls to download the individual converted formats" }, "response": [ { "header": [], "code": 200, "body": "{\n \"RezColorChecker.usdz\":\"signed s3 url\",\n \"RezColorChecker.obj\":\"signed s3 url\",\n \"RezColorChecker.fbx\":\"signed s3 url\"\n}", "name": "success" } ] }, { "name": "Get imported DCC files", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id\/downloads\/pbr", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id\/downloads\/pbr", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns a list of urls to download the individual converted DCC material and quality control files" }, "response": [ { "header": [], "code": 200, "body": "{\n \"materials\" : {\n \"ao.png\":\"signed s3 url\",\n \"diffuse.png\":\"signed s3 url\",\n },\n \"qc\": {\n \"render_0.png\":\"signed s3 url\",\n \"render_1.png\":\"signed s3 url\",\n \"diff_0.png\":\"signed s3 url\",\n \"diff_1.png\":\"signed s3 url\",\n }\n}", "name": "success" } ] }, { "name": "Download zip", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id\/downloads\/zip", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id\/downloads\/zip", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Downloads all model files as zip.\n\nA stream is returned which contains the model data." }, "response": [ { "header": [], "code": 200, "body": "Streamed response", "name": "success" } ] }, { "name": "Get QC render files for a base asset", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id\/renders", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id\/renders", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the Rawmodel" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns hash signed links for the quality control images generated after importing the Rawmodel\n\nThe keys of the images are built with the following reasoning:\n`-.png`\n\n`` refers to the 3D input format to be optimized\n\nWith that said, the keys of the images for an input usdz will be:\n- \"usdz-back.png\"\n- \"usdz-bottom.png\"\n- \"usdz-front.png\"\n- \"usdz-left.png\"\n- \"usdz-right.png\"\n- \"usdz-top.png\"\n\nOnly available for Rawmodels that were imported after 2024-07" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" }, { "header": [], "code": 404, "body": "", "name": "error" } ] }, { "name": "Delete Tag of a Base Asset", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id\/tags\/:tagId", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id\/tags\/:tagId", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" }, { "id": "tagId", "key": "tagId", "value": "2", "description": "The id of the tag that will be deleted" } ] }, "method": "DELETE", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [ { "key": "cache-control", "value": "no-cache, private" }, { "key": "content-type", "value": "application\/json" }, { "key": "x-frame-options", "value": "ALLOWALL" }, { "key": "vary", "value": "Origin" } ], "code": 401, "body": "{\"message\":\"Invalid token\",\"error\":\"Token format is invalid\"}", "name": "" } ] }, { "name": "Get Base Assets", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel", "query": [ { "key": "q", "value": "%22Low-Poly%22", "description": "Optional. Search term to filter base assets by name or tag.", "disabled": false }, { "key": "page", "value": "3", "description": "Optional. Page number for pagination. Defaults to 1. If the requested page exceeds the maximum available (based on total assets and items per page), the last available page will be returned.", "disabled": false }, { "key": "itemsPerPage", "value": "25", "description": "Optional. Number of items per page. Defaults to 10. Maximum is 50.", "disabled": false } ], "raw": "{{baseUrl}}\/api\/v2\/rawmodel?q=%22Low-Poly%22&page=3&itemsPerPage=25" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Paginated response of your base assets. Search for base assets by name or tag" }, "response": [ { "header": [], "code": 200, "body": "{\n \"data\": [\n {\n \"id\": 1,\n \"name\": \"teapot\",\n \"external\": false,\n \"upload_status\": \"complete\",\n \"size\": 315088,\n \"created_at\": \"2022-05-24T15:05:47+02:00\",\n \"scale_factor\": \"1\",\n \"has_errors\": true,\n \"format\": \"fbx\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"Low-Poly\",\n \"created_at\": \"2022-05-24 15:06:03\",\n \"updated_at\": \"2022-05-24 15:06:03\",\n \"raw_id\": 1\n }\n ],\n \"downloads\": {\n \"error.log\": \"signed url for the error.log\",\n \"info.log\": \"signed url for info.log\",\n \"metrics.json\": \"signed url for the metrics.json\",\n \"rpd_info.json\": \"signed url for the rpd_info.json\",\n \"teapot.fbx\": \"signed url for the teapot.obj\",\n \"thumb.jpg\": \"signed url for the thumb.jpg\",\n \"warning.log\": \"signed url for the warning.log\"\n }\n }\n ],\n \"links\": {\n \"first\": \"https:\/\/url\/api\/v2\/rawmodel?page=1\",\n \"last\": \"https:\/\/url\/api\/v2\/rawmodel?page=1\",\n \"prev\": null,\n \"next\": null\n },\n \"meta\": {\n \"current_page\": 1,\n \"from\": 1,\n \"last_page\": 1,\n \"links\": [\n {\n \"url\": null,\n \"label\": \"« Previous\",\n \"active\": false\n },\n {\n \"url\": \"https:\/\/url\/api\/v2\/rawmodel?page=1\",\n \"label\": \"1\",\n \"active\": true\n },\n {\n \"url\": null,\n \"label\": \"Next »\",\n \"active\": false\n }\n ],\n \"path\": \"https:\/\/url\/api\/v2\/rawmodel\",\n \"per_page\": 10,\n \"to\": 1,\n \"total\": 1\n }\n}", "name": "success" } ] }, { "name": "Update Base Asset - Add Tags, Set scale factor", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" } ] }, "method": "PUT", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"tags\":[\"low poly\",\"mb target\"],\"scale_factor\":0.5}" }, "description": "A tag can have 255 utf-8 characters including whitespaces" }, "response": [ { "header": [ { "key": "cache-control", "value": "no-cache, private" }, { "key": "content-type", "value": "application\/json" }, { "key": "x-frame-options", "value": "ALLOWALL" }, { "key": "vary", "value": "Origin" } ], "code": 401, "body": "{\"message\":\"Invalid token\",\"error\":\"Token format is invalid\"}", "name": "" } ] }, { "name": "Delete Multiple Base Assets", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/delete", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/delete" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"ids\":[726,324]}" }, "description": "" }, "response": [ { "header": [ { "key": "cache-control", "value": "no-cache, private" }, { "key": "content-type", "value": "application\/json" }, { "key": "x-frame-options", "value": "ALLOWALL" }, { "key": "vary", "value": "Origin" } ], "code": 401, "body": "{\"message\":\"Invalid token\",\"error\":\"Token format is invalid\"}", "name": "" } ] }, { "name": "Add converted formats to the model", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id\/addFormats", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id\/addFormats", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"formats\":[\"gltf\",\"usdz\"]}" }, "description": "This endpoint starts the conversion process to the provided target formats. The conversion process is asynchronous and can take some time to complete.\nThe status of the conversion can be checked using the `processedFormats` endpoint." }, "response": [ { "header": [], "code": 200, "body": "{\n \"message\": \"Formats conversion started.\",\n \"formats\": [\"gltf\", \"usdz\"]\n}", "name": "success" }, { "header": [], "code": 400, "body": "{\n \"message\": \"Model already has the following format(s) exported: gltf, usdz\"\n}", "name": "error" }, { "header": [], "code": 404, "body": "{\n \"message\": \"Model with this ID was not found!\"\n}", "name": "error" } ] }, { "name": "Get format conversion jobs", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id\/processedFormats", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id\/processedFormats", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns an array of objects, each object represents a format conversion job with its status, progress, and target formats." }, "response": [ { "header": [], "code": 200, "body": "[\n {\n \"progress\": 0,\n \"status\": \"queued\",\n \"formats\": [\n \"gltf\", \"usdc\"\n ]\n },\n {\n \"progress\": 100,\n \"status\": \"finished\",\n \"formats\": [\n \"fbx\"\n ]\n },\n {\n \"progress\": 50,\n \"status\": \"failed\",\n \"formats\": [\n \"usdz\", \"usda\"\n ]\n },\n {\n \"progress\": 50,\n \"status\": \"executing\",\n \"formats\": [\n \"usdz\", \"stl\"\n ]\n }\n]", "name": "success" } ] }, { "name": "Create Base Asset - Get Upload Link", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/api-upload\/start", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/api-upload\/start" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"model_name\":\"teapot\",\"filenames\":[\"mymodel.glb\",\"material.mat\"]}" }, "description": "This endpoint initiates a new base asset upload process and returns:\n1. An ID for the new base asset\n2. Pre-signed URLs for direct file uploads to our s3 storage\n\nUpload Process:\n1. Call this endpoint to get the upload URLs\n2. For each file in the s3_upload_urls:\n - Upload the file using an HTTP PUT request to the provided URL\n3. After ALL files are uploaded, call the complete_upload URL to finalize the process\n\nStep by Step Usage:\n1. Upload mymodel.glb:\n - curl -X PUT -T \"mymodel.glb\" \"use-signed-url-for-glb\"\n2. Upload material.mat:\n - curl -X PUT -T \"material.mat\" \"use-signed-url-for-mat\"\n3. Finally, call the complete_upload URL:\n - curl -X GET \"use-complete-upload-url\"" }, "response": [ { "header": [], "code": 200, "body": "{\n \"id\": 1,\n \"links\": {\n \"s3_upload_urls\": {\n \"mymodel.glb\": \"signed url for mymodel.glb\",\n \"material.mat\": \"signed url for material.mat\"\n },\n \"complete_upload\": \"https:\/\/api.rapidpipeline.com\/api\/v2\/rawmodels\/1\/api-upload\/complete\"\n }\n}", "name": "success" } ] }, { "name": "Create Base Asset - Complete Upload", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id\/api-upload\/complete", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id\/api-upload\/complete", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The ID received from the start endpoint" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Final step in the upload process. Call this endpoint after:\n1. Getting upload URLs from \"Create Base Asset - Get Upload Link\"\n2. Uploading all files to S3 using the provided signed URLs\n\nExample:\n1. Start: POST \/api\/v2\/rawmodel\/api-upload\/start\n - Receive upload URLs and base asset ID\n2. Upload: PUT each file to S3 using their respective signed URL\n - curl -X PUT -T \"mymodel.glb\" \"signed_url_from_response\"\n3. Complete: GET \/api\/v2\/rawmodel\/{id}\/api-upload\/complete\n - Triggers processing of your uploaded files\n\nAfter completion:\n- Your model will begin processing\n- Use our \"analysis_finished\" webhook to get notified when ready for optimization" }, "response": [ { "header": [], "code": 200, "body": "{\n \"data\": {\n \"id\": 281,\n \"name\": \"teapot\",\n \"processing\": false,\n \"upload_status\": \"complete\",\n \"size\": 438680,\n \"created_at\": \"2021-02-08T16:59:52+01:00\",\n \"rapid_models\": [\n 635,\n 617\n ],\n \"scale_factor\": \"10\",\n \"downloads\": {\n \"error.log\": \"signed url for the error.log\",\n \"info.log\": \"signed url for the info.log\",\n \"metrics.json\": \"signed url for the metrics.json\",\n \"rpd_info.json\": \"signed url for the rpd_info.json\",\n \"teapot.obj\": \"signed url for the uploaded file\",\n \"thumb.jpg\": \"signed url for the thumb.jpg\"\n }\n }\n}", "name": "" } ] }, { "name": "Retries a failed import", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id\/api-upload\/retry", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id\/api-upload\/retry", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [ { "key": "cache-control", "value": "no-cache, private" }, { "key": "content-type", "value": "application\/json" }, { "key": "x-frame-options", "value": "ALLOWALL" }, { "key": "vary", "value": "Origin" } ], "code": 401, "body": "{\"message\":\"Invalid token\",\"error\":\"Token format is invalid\"}", "name": "" } ] }, { "name": "Get Associated Rapid Models", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/:id\/rapidmodels", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/:id\/rapidmodels", "variable": [ { "id": "id", "key": "id", "value": "1", "description": "The id of the base asset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Get all rapid models which were optimized from this base asset" }, "response": [ { "header": [], "code": 200, "body": "{\n \"data\": [\n {\n \"id\": 1,\n \"name\": \"teapot\",\n \"optimization_status\": \"done\",\n \"rawmodel\": {...},\n \"job_status\": {...},\n \"created_at\": \"2021-02-16T16:50:41+01:00\",\n \"updated_at\": \"2021-02-16T16:50:53+01:00\",\n \"progress\": 100,\n \"processing_step\": \"Done\",\n \"external\": false,\n \"rapid_compact_core_version\": \"6.1.1\",\n \"tags\": [\n {\n \"id\": 377,\n \"name\": \"Preserve UVs\",\n \"created_at\": \"2024-02-15 18:05:36+00\",\n \"updated_at\": \"2024-02-15 18:05:36+00\",\n \"rapid_id\": 635\n }\n ],\n \"export_name\": \"export name\",\n \"uuid\": \"d8316d1f-3c7d-4777-b72e-c760064f9d08\",\n \"accepted\": false,\n \"meta\": {\n \"size\": 573420,\n \"exportSize\": 1029548\n },\n \"thumbnail\": {},\n \"rpd_info\": \"signed url for the rpd_info.json\",\n \"rpd_warnings\": \"signed url for the warning.log\",\n \"rpd_error\": \"signed url for the error.log\",\n \"downloads\": {\n \"glb\": \"signed url for the .glb\"\n }\n }\n ]\n}", "name": "" } ] } ] }, { "name": "Embeds", "description": "Endpoints for managing embeddable 3D viewers created from Rapid Models.\nEmbeds can only be created from optimized Rapid Models, not directly from Base Assets.\n\nHere are all the embed related endpoints:", "item": [ { "name": "Get Embeds", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/embeds", "query": [ { "key": "page", "value": "14", "description": "Page number to fetch", "disabled": false }, { "key": "q", "value": "tempore", "description": "Search string to filter embeds by name", "disabled": false }, { "key": "rapidId", "value": "11", "description": "Filter embeds by rapidmodel id", "disabled": false } ], "raw": "{{baseUrl}}\/api\/v2\/embeds?page=14&q=tempore&rapidId=11" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns the embeds of the user" }, "response": [ { "header": [], "code": 200, "body": "{\n data: [\n {\n \"id\":53,\n \"identifier\":\"fRoL5P9iyb\",\n \"name\":\"RezColorChecker Embed\",\n \"user_id\":45,\n \"model_id\":70,\n \"view_count\":13,\n \"created_at\":\"2022-05-04T12:10:52.000000Z\",\n \"updated_at\":\"2022-06-14T13:13:00.000000Z\",\n \"rapidModelId\": 73,\n \"rapidModelName\":\"RezColorChecker\",\n \"thumbnail\":\"https:\/\/2vv7ezymi86va.cloudfront.net\/rapid\/ba12f8a6-....\",\n \"url\":\"https:\/\/api.rapidpipeline.com\/viewer?id=123456\"\n },\n ...\n ],\n links: {\n first: \"http:\/\/...\",\n last: \"http:\/\/...\",\n prev: null,\n next: \"http:\/\/...\"\n },\n meta: {\n \"current_page\":1,\n \"from\":1,\n \"last_page\":2,\n \"per_page\":10,\n \"to\":10,\n \"total\":15,\n links: [\n {\n \"url\":null,\n \"label\":\"Previous\",\n \"active\":false\n },\n ...\n ]\n }\n}", "name": "" } ] }, { "name": "Get Embed", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/embeds\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/embeds\/:id", "variable": [ { "id": "id", "key": "id", "value": "42", "description": "The id of the embed" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "{\n \"data\": {\n \"id\": 42,\n \"identifier\": \"ZmR8oTVEiR\",\n \"name\": \"teapot Embed\",\n \"user_id\": 1,\n \"model_id\": 1,\n \"view_count\": 100,\n \"created_at\": \"2022-06-27T13:30:30.000000Z\",\n \"updated_at\": \"2022-06-27T14:20:17.000000Z\"\n }\n}", "name": "success" } ] }, { "name": "Create Embed", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/embeds\/create", "query": [], "raw": "{{baseUrl}}\/api\/v2\/embeds\/create" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"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:\\\/\\\/rapidpipeline.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}\"}" }, "description": "Create an embed from a rapid model.\nThe webhooks will be called with the 'embed_creation' event to notify the user as soon as the embed is created." }, "response": [ { "header": [], "code": 201, "body": "{\n 'status': 'Successful',\n 'message': 'Embed created successfully.',\n 'rapidmodel_id': 31,\n 'embed_id': 513,\n 'embed_url': 'http:\/\/api.rapidpipeline.com\/viewer?id=iKlCoxprxK',\n}", "name": "success" } ] }, { "name": "Delete Embed", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/embeds\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/embeds\/:id", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the embed" } ] }, "method": "DELETE", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 204, "body": "", "name": "success" } ] }, { "name": "Create Embed from Base Asset", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/embeds\/raw", "query": [], "raw": "{{baseUrl}}\/api\/v2\/embeds\/raw" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"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:\\\/\\\/rapidpipeline.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}\"}" }, "description": "Create an embed from a base asset.\nThe base asset must be in the .glb file format.\nThe webhooks will be called with the 'embed_from_raw_creation' event to notify the user as soon as the embed is created" }, "response": [ { "header": [], "code": 200, "body": "{\n \"message\" : \"Embed creation pending, wait for the webhook call\",\n \"embed_id\": 513,\n \"embed_url\": 'http:\/\/api.rapidpipeline.com\/viewer?id=iKlCoxprxK',\n}", "name": "success" }, { "header": [], "code": 422, "body": "{\n \"message\" : \"Raw model is not in the glb file format\"\n}", "name": "no glb format" } ] } ] }, { "name": "Presets", "description": "These are saved 3D Processor Settings for you to organize your assets better. Rapid Models carry on the preset information through which they are created, this way you can understand which Rapid Model was created through which preset.\n\nIn order to create a preset, the preset has to comply to the rules of the 3D processing schema. Please find related reference docs [here](https:\/\/docs.rapidpipeline.com\/docs\/componentDocs\/3dProcessingSchemaSettings\/processor-schema-overview).\n\nIn most cases, it is probably best if you create your preset using our UI and then refer to its preset ID in relevant API calls when necessary.\n\nHere are all preset related endpoints:", "item": [ { "name": "Create Preset", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/preset\/create", "query": [], "raw": "{{baseUrl}}\/api\/v2\/preset\/create" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"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\"}}]}}}" }, "description": "" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" } ] }, { "name": "Update Preset", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/preset\/update", "query": [], "raw": "{{baseUrl}}\/api\/v2\/preset\/update" }, "method": "PATCH", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"id\":42,\"name\":\"name of the new preset\",\"config\":{\"import\":{\"general\":{\"rotateZUp\":false,\"fixAnimationData\":false,\"normalmapYFlip\":false},\"USD\":{\"profile\":\"arkit\",\"purpose\":\"render\"},\"CAD\":{\"tessellationResolution\":\"fine\"},\"discard\":{\"cameras\":false,\"lights\":false,\"animations\":false,\"morphTargets\":false,\"unusedUVs\":false}},\"export\":[{\"fileName\":\"\",\"textureMapFilePrefix\":\"\",\"discard\":[],\"format\":{\"gltf\":{\"pbrMaterial\":[]}}}]}}" }, "description": "" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" } ] }, { "name": "Get Factory Presets", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/preset\/factory", "query": [ { "key": "q", "value": "yourSearchString", "description": "Optional parameter to search for presets by name or description", "disabled": false } ], "raw": "{{baseUrl}}\/api\/v2\/preset\/factory?q=yourSearchString" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns all Factory Presets or those that match the search query.\n\nFactory Presets are provided by RapidPipeline\n\nA 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" }, "response": [ { "header": [], "code": 200, "body": "[\n {\n \"id\": 1,\n \"name\": \"Spark AR Low Res\",\n \"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\\\"}}]}}\"\n },\n]", "name": "success" } ] }, { "name": "Convert Preset", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/preset\/rpdx", "query": [], "raw": "{{baseUrl}}\/api\/v2\/preset\/rpdx" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"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\"}}]}}}" }, "description": "Convert a preset in API format to CLI format and CLI commands. The endpoint will return a zip file containing the requested files." }, "response": [ { "header": [], "code": 200, "body": " Streamed Response", "name": "success" } ] }, { "name": "Get Preset in CLI Format", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/preset\/rpdx\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/preset\/rpdx\/:id", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the preset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "The endpoint will return a zip file containing the requested files" }, "response": [ { "header": [], "code": 200, "body": " Streamed Response", "name": "success" } ] }, { "name": "Download Preset", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/preset\/:id\/download", "query": [], "raw": "{{baseUrl}}\/api\/v2\/preset\/:id\/download", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the preset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Downloads a preset as zip file which contains both API and CLI formats." }, "response": [ { "header": [], "code": 200, "body": " Streamed Response", "name": "success" } ] }, { "name": "Get Preset Categories", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/preset\/categories", "query": [], "raw": "{{baseUrl}}\/api\/v2\/preset\/categories" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "[\n {\n \"id\": 1,\n \"name\": \"General\",\n \"slug\": \"general\",\n \"description\": \"General presets description\"\n },\n {\n \"id\": 2,\n \"name\": \"Application\",\n \"slug\": \"application\",\n \"description\": \"Application presets description\"\n },\n]", "name": "success" } ] }, { "name": "Get Preset", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/preset\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/preset\/:id", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the preset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "{\n \"id\":11,\n \"name\":\"preset 2\",\n \"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\"}}]}},\n \"rpdx_version\":\"6.1.1\",\n \"user_id\":328,\n \"created_at\":\"2021-04-22T09:11:30.000000Z\",\n \"updated_at\":\"2021-04-22T09:11:30.000000Z\"\n}", "name": "success" } ] }, { "name": "Delete Preset", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/preset\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/preset\/:id", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the preset" } ] }, "method": "DELETE", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" } ] }, { "name": "Get custom Presets", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/preset", "query": [ { "key": "q", "value": "yourSearchString", "description": "Optional parameter to search for presets by name or description", "disabled": false } ], "raw": "{{baseUrl}}\/api\/v2\/preset?q=yourSearchString" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns all your custom Presets or those that match the search query." }, "response": [ { "header": [], "code": 200, "body": "[\n {\n \"id\": 11,\n \"name\":\"preset 2\",\n \"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}}}\",\n \"rpdx_version\":\"6.1.1\",\n \"user_id\":328,\n \"created_at\":\"2023-01-22T09:11:30.000000Z\",\n \"updated_at\":\"2023-01-22T09:11:30.000000Z\",\n \"description\":\"\",\n \"meta\":\"{\\\"filename\\\": {\\\"useId\\\": false, \\\"useSuffix\\\": null, \\\"usePresetName\\\": false}}\"\n }\n]", "name": "success" } ] } ] }, { "name": "Rapid Model", "description": "These are sometimes referred to as optimized models. They are created by processing the base assets\nthrough 3D Processor (making a POST call to Optimize endpoint of Base Asset).\n\nHere are all rapid model related endpoints:", "item": [ { "name": "Get Rapid Models", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rapidmodel", "query": [ { "key": "q", "value": "%22Low-Poly%22", "description": "Optional. Search term to filter rapid models by name or tag.", "disabled": false }, { "key": "page", "value": "3", "description": "Optional. Page number for pagination. Defaults to 1. If the requested page exceeds the maximum available (based on total assets and items per page), the last available page will be returned.", "disabled": false }, { "key": "itemsPerPage", "value": "25", "description": "Optional. Number of items per page. Defaults to 12. Maximum is 50.", "disabled": false } ], "raw": "{{baseUrl}}\/api\/v2\/rapidmodel?q=%22Low-Poly%22&page=3&itemsPerPage=25" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Paginated response of your rapid models. Search for rapid models by name or tag" }, "response": [ { "header": [], "code": 200, "body": "{\n \"data\": [\n {\n \"id\": 1,\n \"name\": \"teapot \",\n \"optimization_status\": \"done\",\n \"created_at\": \"2022-05-24T16:28:56+02:00\",\n \"updated_at\": \"2022-05-24T16:29:11+02:00\",\n \"processing_step\": \"Done\",\n \"external\": false,\n \"rapid_compact_core_version\": \"6.1.1\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"Low-Poly\",\n \"created_at\": \"2022-05-24 15:06:03\",\n \"updated_at\": \"2022-05-24 15:06:03\",\n \"rapid_id\": 1\n },\n ],\n \"export_name\": \"teapot_1\",\n \"uuid\": \"f26cf299-c8df-4d4d-9eef-3f8e87d882b7\",\n \"accepted\": false,\n \"meta\": {\n \"size\": 665168,\n \"exportSize\": 1495763\n },\n \"origin\": \"\",\n \"optimization_formats\": \"[...]\",\n \"thumbnail\": {\n \"first\": \"signed url\",\n \"turntable\": \"signed url\"\n },\n \"model\": {\n \"rootUrl\": \"rootURL\",\n \"fileName\": \"fileName\"\n },\n \"rpd_info\": \"signed url\",\n \"rpd_warnings\": \"signed url\",\n \"downloads\": {\n \"usdz\": \"signed url\",\n \"glb\": \"signed url\",\n \"all\": {\n \"rapid.glb\": \"signed url\",\n \"rapid.usdz\": \"signed url\"\n }\n }\n }\n ],\n \"links\": {\n \"first\": \"https:\/\/url\/api\/v2\/rapidmodel?page=1\",\n \"last\": \"https:\/\/url\/api\/v2\/rapidmodel?page=1\",\n \"prev\": null,\n \"next\": null\n },\n \"meta\": {\n \"current_page\": 1,\n \"from\": 1,\n \"last_page\": 1,\n \"links\": [\n {\n \"url\": null,\n \"label\": \"« Previous\",\n \"active\": false\n },\n {\n \"url\": \"https:\/\/url\/api\/v2\/rapidmodel?page=1\",\n \"label\": \"1\",\n \"active\": true\n },\n {\n \"url\": null,\n \"label\": \"Next »\",\n \"active\": false\n }\n ],\n \"path\": \"https:\/\/url\/api\/v2\/rapidmodel\",\n \"per_page\": 12,\n \"to\": 1,\n \"total\": 1\n }\n}", "name": "success" } ] }, { "name": "Get Rapid Model", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rapidmodel\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rapidmodel\/:id", "variable": [ { "id": "id", "key": "id", "value": "635", "description": "The id of the rapid model" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "{\n \"data\": {\n \"id\": 635,\n \"name\": \"teapot \",\n \"optimization_status\": \"done\",\n \"created_at\": \"2021-02-16T16:50:41+01:00\",\n \"updated_at\": \"2021-02-16T16:50:53+01:00\",\n \"processing_step\": \"Done\",\n \"external\": false,\n \"rapid_compact_core_version\": \"6.1.1\",\n \"tags\": [\n {\n \"id\": 377,\n \"name\": \"Preserve UVs\",\n \"created_at\": \"2024-02-15 18:05:36+00\",\n \"updated_at\": \"2024-02-15 18:05:36+00\",\n \"rapid_id\": 635\n }\n ],\n \"export_name\": null,\n \"uuid\": \"d8316d1f-3c7d-4777-b72e-c760064f9d08\",\n \"accepted\": false,\n \"meta\": {\n \"size\": 573420,\n \"qc\": [\n {\n \"fbx\": {\n \"maxScore\": 75.12036636343548,\n \"avgScore\": 53.22535526345469\n }\n },\n {\n \"glb\": {\n \"maxScore\": 75.12185336255156,\n \"avgScore\": 53.24014762786459\n }\n },\n {\n \"usdz\": {\n \"maxScore\": 75.12063337875662,\n \"avgScore\": 53.22537017442912\n }\n }\n ],\n \"exportSize\": 1029548\n },\n \"origin\": \"\",\n \"optimization_formats\": \"[...]\",\n \"thumbnail\": {\n \"first\": \"signed url for the thumbnail\",\n \"turntable\": {\n \"rapid.glb\": \"signed url for theturntable\"\n }\n },\n \"model\": {\n \"rootUrl\": \"s3 link\",\n \"fileName\": \"rapid.glb?signed\"\n },\n \"rpd_info\": \"signed url for rpd_info.json\",\n \"rpd_warnings\": \"signed url for the warning.log\",\n \"metrics\": \"signed url for the metrics.json\",\n \"downloads\": {\n \"glb\": \"signed url for the .glb\",\n \"all\": {\n \"rapid.glb\": \"signed url for the .glb\"\n }\n }\n }\n}", "name": "" } ] }, { "name": "Delete Rapid Model", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rapidmodel\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rapidmodel\/:id", "variable": [ { "id": "id", "key": "id", "value": "635", "description": "The id of the rapid model" } ] }, "method": "DELETE", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" } ] }, { "name": "Get Export Infos", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rapidmodel\/:id\/exports", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rapidmodel\/:id\/exports", "variable": [ { "id": "id", "key": "id", "value": "695", "description": "The id of the rapid model" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Calling this endpoint return a list of links to download the exports and their respective infos\n\nPlease note that the export infos are generated only for glb and gltf formats" }, "response": [ { "header": [], "code": 200, "body": "{\n \"data\": {\n \"rapid.glb\": {\n \"download\": \"signed s3 link to rapid.glb\",\n \"info\": {\n \"images\": [\n {\n \"channels\": 3,\n \"compressedByteSize\": 310996,\n \"height\": 2048,\n \"mimetype\": \"image\/jpeg\",\n \"slot\": \"normal\",\n \"width\": 2048\n }\n ]\n }\n },\n \"rapid.usdz\": {\n \"download\": \"link to rapid.usdz\",\n \"info\": null\n }\n }\n}", "name": "" } ] }, { "name": "Delete Tag of a Rapid Model", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rapidmodel\/:id\/tags\/:tagId", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rapidmodel\/:id\/tags\/:tagId", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the base asset" }, { "id": "tagId", "key": "tagId", "value": "2", "description": "The id of the tag that will be deleted" } ] }, "method": "DELETE", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" } ] }, { "name": "Add Tags to a Rapid Model", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rapidmodel\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rapidmodel\/:id", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the rapid model" } ] }, "method": "PUT", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"tags\":[\"chair\",\"brown\"]}" }, "description": "" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" } ] }, { "name": "Download used Preset from Rapid Model", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rapidmodel\/:id\/download\/preset", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rapidmodel\/:id\/download\/preset", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the preset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Downloads a preset as zip file which contains API and CLI formats\n\nOnly available for Rapidmodels that were optimized after 2023-03" }, "response": [ { "header": [], "code": 200, "body": " Streamed Response", "name": "success" }, { "header": [], "code": 404, "body": "Only available for Rapidmodels that were optimized after 2023-03", "name": "error" } ] }, { "name": "Get QC render files for a rapid model", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rapidmodel\/:id\/renders", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rapidmodel\/:id\/renders", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the Base Asset" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns hash signed links for the quality control images generated after optimization.\n\nThe keys of the images are built with the following reasoning:\n`--.png`\n\n refers to the 3D output format of the optimization\n can be either 'comparison' or 'original'\n\nIn case the image depicts the differences between the input asset and its comparison renders,\nits key will contain a __diff suffix. References to the renders of the original raw model are also included.\n\nWith that said, the keys of the images for an optimization that generated a glb output will be:\n- \"glb-back.png\"\n- \"glb-bottom.png\"\n- \"glb-front.png\"\n- \"glb-left.png\"\n- \"glb-right.png\"\n- \"glb-top.png\"\n- \"glb-back__diff.png\"\n- \"glb-bottom__diff.png\"\n- \"glb-front__diff.png\"\n- \"glb-left__diff.png\"\n- \"glb-right__diff.png\"\n- \"glb-top__diff.png\"\n- \"original-back.png\"\n- \"original-bottom.png\"\n- \"original-front.png\"\n- \"original-left.png\"\n- \"original-right.png\"\n- \"original-top.png\"\n\nOnly available for Base Assets that were optimized after 2024-07" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" }, { "header": [], "code": 404, "body": "", "name": "error" } ] }, { "name": "Downloads the Quality Control report for the optimization output of a given format.", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rapidmodel\/:id\/:format\/downloadQc", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rapidmodel\/:id\/:format\/downloadQc", "variable": [ { "id": "id", "key": "id", "value": "281", "description": "The id of the Rapidmodel" }, { "id": "format", "key": "format", "value": "usdz", "description": "The output format of the Rapidmodel to be" } ] }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" }, { "header": [], "code": 404, "body": "Only available for Rapidmodels that were optimized after 2024-07", "name": "error" } ] }, { "name": "Delete Multiple Rapid Models", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rapidmodel\/delete", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rapidmodel\/delete" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"ids\":[726,324]}" }, "description": "" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" } ] } ] }, { "name": "Tags", "description": "API for listing all of base asset and rapid model tags.", "item": [ { "name": "Get all Base Asset Tags", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rawmodel\/tags", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rawmodel\/tags" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "{\n \"data\": [\n {\"name\": \"My custom tag\"},\n {\"name\": \"Foo\"},\n {\"name\": \"Bar\"}\n ]\n}", "name": "success" } ] }, { "name": "Get all Rapid Model Tags", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/rapidmodel\/tags", "query": [], "raw": "{{baseUrl}}\/api\/v2\/rapidmodel\/tags" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "{\n \"data\": [\n {\"name\": \"5 MB\"},\n {\"name\": \"Medium Resolution\"},\n {\"name\": \"Low-scene complexity\"}\n ]\n}", "name": "success" } ] } ] }, { "name": "User", "description": "APIs for managing user profile.", "item": [ { "name": "Login", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/login", "query": [], "raw": "{{baseUrl}}\/api\/v2\/login" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"email\":\"yourname@example.com\",\"password\":\"your password\"}" }, "description": "Returns a token that can be used for calling other endpoints", "auth": { "type": "noauth" } }, "response": [ { "header": [ { "key": "cache-control", "value": "no-cache, private" }, { "key": "content-type", "value": "application\/json" }, { "key": "x-ratelimit-limit", "value": "2000" }, { "key": "x-ratelimit-remaining", "value": "1995" }, { "key": "x-frame-options", "value": "ALLOWALL" }, { "key": "vary", "value": "Origin" } ], "code": 422, "body": "{\"message\":\"These credentials do not match our records.\",\"errors\":{\"email\":[\"These credentials do not match our records.\"]}}", "name": "" } ] }, { "name": "Delete Account", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/user\/delete", "query": [], "raw": "{{baseUrl}}\/api\/v2\/user\/delete" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"password\":\"\\\"your password\\\"\"}" }, "description": "Delete the user account and all the data associated with it" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" } ] }, { "name": "Get RapidPoints", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/user\/rapidpoints", "query": [], "raw": "{{baseUrl}}\/api\/v2\/user\/rapidpoints" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "{\n \"rapidpoints\": 20\n}", "name": "success" } ] }, { "name": "Get Storage Left", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/user\/storage", "query": [], "raw": "{{baseUrl}}\/api\/v2\/user\/storage" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "Returns how much storage you have left to use (bytes)" }, "response": [ { "header": [], "code": 200, "body": "{\n \"storage_left\": 107374182400\n}", "name": "success" } ] } ] }, { "name": "Webhooks", "description": "RapidPipeline uses webhooks to notify your application when an event happens in your account.\nWebhooks are particularly useful for upload and optimization events. Instead of polling the API to know the status\nof your upload or optimization, RapidPipeline sends an event to your webhook.\n\nBegin using webhooks with your RapidPipeline integration in just three steps:\n1. Create a webhook endpoint on your server\n2. [Register](https:\/\/app.rapidpipeline.com\/webhooks) the endpoint with RapidPipeline to go live\n3. Test your endpoint by clicking the test button in the [webhooks page](https:\/\/app.rapidpipeline.com\/webhooks)\n\n### What are webhooks\nThe webhook endpoint is just more code on your server, which could be written in Ruby, PHP, Node.js, or whatever.\nThe webhook endpoint has an associated URL (e.g., https:\/\/example.com\/webhooks).\nThe RapidPipeline notifications are Event objects sent as POST requests (Fire-and-forget, no retry).\nThis Event object contains all the relevant information about what just happened, including the type of event and the data associated with that event.\nThe webhook endpoint uses the event details to take any required actions, such as indicating that an optimization should be done.\n\n### Validation\nIn order to validate an incoming webhook event you need to first set up a secret when creating it on RapidPipeline. This secret will be used to sign the body and send the signature as part of the requests header. You can use this secret on your receiving endpoint to validate the content of the body by signing it with the same secret. For an example check out this repository: https:\/\/github.com\/DGG3D\/webhook-api-example\n\n### Optimization Events\nRapidPipeline sends the \"optimization_finished\" event. You can see an example on the right side\n```\n {\n \"event_type\": \"optimization_finished\",\n \"timestamp\": \"2023-01-19T15:03:08.076920Z\",\n \"data\": {\n \"status\": \"Successful\",\n \"message\": \"Optimization has ended and your rapid model is available to download.\",\n \"rawmodel_id\": 1961,\n \"rapidmodel_id\": 4213,\n \"rapidmodel\": {\n \"rapid.glb\": \"link to rapid model\"\n }\n }\n }\n```\n\n### Upload Events\nRapidPipeline sends an \"analysis_finished\" event when your uploaded model has been finished being analyzed and is now ready to be optimized. You can see an two examples for the successful and failed state on the right side.\n\nFor uploaded zip files RapidPipeline sends an \"unzip_finished\" event when your model has been finished being unzipped and is going to be analysed next. You can see an two examples for the successful and failed state on the right side.\n\n```\n {\n \"event_type\": \"analysis_finished\",\n \"timestamp\": \"2023-01-02T15:03:08.076920Z\",\n \"data\": {\n \"status\": \"Successful\",\n \"message\": \"Model analysis has ended and your base asset is ready to be optimized.\",\n \"rawmodel_id\": 1961,\n }\n }\n```\n```\n {\n \"event_type\": \"analysis_finished\",\n \"timestamp\": \"2023-01-02T15:03:08.076920Z\",\n \"data\": {\n \"status\": \"Failed\",\n \"message\": \"Analysis failed\",\n \"rawmodel_id\": 1961,\n }\n }\n```\n```\n {\n \"event_type\": \"unzip_finished\",\n \"timestamp\": \"2024-01-02T15:03:08.076920Z\",\n \"data\": {\n \"status\": \"Successful\",\n \"message\": \"Model successfully unzipped.\",\n \"rawmodel_id\": 1961,\n }\n }\n```\n```\n {\n \"event_type\": \"unzip_finished\",\n \"timestamp\": \"2024-01-02T15:03:08.076920Z\",\n \"data\": {\n \"status\": \"Failed\",\n \"message\": \"Unzip failed\",\n \"rawmodel_id\": 1961,\n }\n }\n```", "item": [ { "name": "Get Webhooks", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/user\/webhooks", "query": [], "raw": "{{baseUrl}}\/api\/v2\/user\/webhooks" }, "method": "GET", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "[\n\t{\n\t\t\"id\": 6,\n\t\t\"user_id\": 303,\n\t\t\"url\": \"https:\/\/mywebhookurl.com\",\n\t\t\"last_called_at\": \"2021-10-26T09:45:47.000000Z\",\n\t\t\"created_at\": \"2021-10-26T09:45:47.000000Z\",\n\t\t\"updated_at\": \"2021-10-26T09:45:47.000000Z\",\n\t\t\"secret\": \"secret\",\n\t\t\"last_status\": null,\n\t\t\"verify_ssl\": true,\n\t\t\"failed_calls\": 0,\n\t\t\"notified_at\": null\n\t}\n]", "name": "success" } ] }, { "name": "Create Webhook", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/user\/webhooks", "query": [], "raw": "{{baseUrl}}\/api\/v2\/user\/webhooks" }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": { "mode": "raw", "raw": "{\"url\":\"https:\\\/\\\/example.com\\\/webhook\",\"secret\":\"my secret\",\"verify_ssl\":false}" }, "description": "" }, "response": [ { "header": [], "code": 200, "body": "{\n\t\t\"id\": 6,\n\t\t\"user_id\": 303,\n\t\t\"url\": \"https:\/\/example.com\/webhook\",\n\t\t\"last_called_at\": \"2021-10-26T09:45:47.000000Z\",\n\t\t\"created_at\": \"2021-10-26T09:45:47.000000Z\",\n\t\t\"updated_at\": \"2021-10-26T09:45:47.000000Z\",\n\t\t\"secret\": \"aut\",\n\t\t\"last_status\": null,\n\t\t\"verify_ssl\": true,\n\t\t\"failed_calls\": 0,\n\t\t\"notified_at\": null\n\t}", "name": "success" }, { "header": [], "code": 500, "body": "[\n \"code\": 1,\n \"message\": \"Maximum number of webhooks allowed already created\"\n]", "name": "Maximum number of tags reached" } ] }, { "name": "Delete Webhook", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/user\/webhooks\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/user\/webhooks\/:id", "variable": [ { "id": "id", "key": "id", "value": "1", "description": "The id of the webhook" } ] }, "method": "DELETE", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" } ] }, { "name": "Test Webhook", "request": { "url": { "host": "{{baseUrl}}", "path": "api\/v2\/user\/webhooks\/test\/:id", "query": [], "raw": "{{baseUrl}}\/api\/v2\/user\/webhooks\/test\/:id", "variable": [ { "id": "id", "key": "id", "value": "1", "description": "The id of the webhook" } ] }, "method": "POST", "header": [ { "key": "Content-Type", "value": "application\/json" }, { "key": "Accept", "value": "application\/json" } ], "body": null, "description": "A test event will be sent to the webhook to make sure it is accessible and can receive events\n\nCall the \"Test Webhook\" endpoint again to see if the webhook was successfully invoked" }, "response": [ { "header": [], "code": 200, "body": "", "name": "success" } ] } ] } ], "auth": { "type": "bearer", "bearer": [ { "key": "token", "type": "string" } ] } }