Supported formats
Converters accept a broad set of input formats and export to a smaller set of output formats.
Input formats
| Format | Extensions | Engine |
|---|---|---|
| Wavefront OBJ | .obj | three.js |
| FBX | .fbx | three.js |
| glTF / GLB | .gltf, .glb | three.js |
| STL | .stl | three.js |
| Collada | .dae | three.js |
| PLY | .ply | three.js |
| STEP | .step, .stp | CAD (OpenCascade) |
| IGES | .iges, .igs | CAD (OpenCascade) |
| 3DS | .3ds | Assimp |
| USD / USDZ | .usd, .usdz | USD engine |
| Blender | .blend | Blender engine |
Output formats
| Format | Extensions |
|---|---|
| Wavefront OBJ | .obj |
| STL | .stl |
| glTF | .gltf |
| GLB (binary glTF) | .glb |
| Collada | .dae |
| FBX | .fbx |
| PLY | .ply |
Input formats are routed through the appropriate engine before export. If a requested output format is not supported for an input, the job fails with a descriptive errorMessage.
How conversion works
Conversion is asynchronous and uses three steps:
- Start:
POST /api/converter/convertuploads the file and returns202 Acceptedwith a jobid. - Poll:
GET /api/converter/status/:idreturns the job status:pending,processing,completed, orfailed. - Download: once
completed,GET /api/converter/download/:idreturns a signed download URL.
Converted files are stored temporarily and cleaned up after roughly one hour, so download results promptly.
Start a conversion
Uploads a file and starts a conversion job. Guests are allowed with a strict daily limit.
| Field | Type | Description |
|---|---|---|
| file | file * | The model to convert (multipart form field). |
| inputFormat | string * | Source format, e.g. obj, fbx, glb, step. |
| outputFormat | string * | Target format, e.g. glb, stl, fbx. |
| sessionId | string | Optional client session identifier. |
Response 202:
{
"id": "60d21b4667d0d8992e610c85",
"status": "pending",
"message": "Conversion job received"
}
Example:
curl -X POST https://api.geometry-labs.com/api/converter/convert \
-H "Authorization: Bearer $GL_TOKEN" \
-F "file=@model.obj" \
-F "inputFormat=obj" \
-F "outputFormat=glb"
Get job status
Returns the current status of a conversion job.
{
"id": "60d21b4667d0d8992e610c85",
"status": "completed",
"inputFormat": "obj",
"outputFormat": "glb",
"originalName": "model.obj",
"outputName": "model.glb",
"downloadUrl": "/api/converter/download/60d21b4667d0d8992e610c85"
}
When status is failed, an error field contains the reason.
Download the result
Returns a signed, short-lived download URL. Add ?redirect=true to redirect directly to the file instead of receiving JSON.
{
"downloadUrl": "https://...signed-url...",
"fileName": "model.glb"
}