Build with the Glossi API
Use the Glossi API when another application should control model intake, project creation, rendering, status, cancellation, or signed output retrieval. Start with one product and one accepted template before expanding the integration.
Prerequisites
Before you begin, you'll need:
- A Glossi account with an active workspace
- An API key (created in Workspace Settings → API Keys)
- A tool for making HTTP requests (Postman, cURL, or your programming language of choice)
Get Your API Key
- Log in to Glossi
- Go to Settings → Workspace → API Keys
- Click Create API Key
- Give it a name (e.g., "n8n Integration")
- Copy your API key immediately - you won't be able to see it again!
Your API key looks like this:
glsi_xxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxImportant Keep your API key secret. Don't commit it to version control or share it publicly.
Authentication
Include your API key in the X-API-Key header for all requests:
curl https://api.glossi.io/api/v1/models \
-H "X-API-Key: glsi_xxxxxxxxxx_xxxxx"To verify a key and see which workspace it belongs to:
curl https://api.glossi.io/api/v1/me \
-H "X-API-Key: glsi_xxxxxxxxxx_xxxxx"{
"workspace": { "id": "uuid", "name": "My Workspace" },
"apiKey": { "name": "My key", "expiresAt": null }
}Choose Your Workflow
Glossi offers three ways to use the API:
Automations
Connect a supported external folder to a monitored Glossi workflow. This is the better surface when a folder or workspace event already represents production intent and your team does not need to own the orchestration code.
Best for:
- Recurring production workflows (e.g. SolidWorks → renders)
- Repeated model-to-output workflows with bounded polling and run history
- Teams that want a visual production graph and connected delivery
Simple Workflow
The Jobs endpoint combines everything into a single workflow - upload models, create projects, and render in one streamlined process.
Best for:
- Automation tools like n8n or Zapier
- Batch processing multiple models
- When you want Glossi to handle the orchestration
Complete Workflow
Individual endpoints give you full control over each step - create models, upload files, create projects, and trigger renders separately.
Best for:
- Custom integrations
- When you need fine-grained control
- Building your own orchestration logic
View Complete Workflow Guide →
Quick Comparison
| Feature | Automations | Simple Workflow | Complete Workflow |
|---|---|---|---|
| API calls needed | 1 (setup) | 4 | 8+ |
| Orchestration | Configured node graph | Glossi-managed | Integration-managed |
| File handling | Auto-detect from folder | Upload via API | Upload via API |
| Progress tracking | Dashboard + API | Built-in | Poll each step |
| Best for | Production workflows | Automation tools | Custom integrations |
Webhooks
Receive signed notifications for supported state changes. Webhook delivery is not currently durable or exactly once, so production consumers should reconcile current state through the API.
Base URL
All API requests should be made to:
https://api.glossi.io/api/v1A machine-readable OpenAPI specification is available at https://api.glossi.io/api/v1/openapi.json (no API key required). You can import it into Postman or use it to generate a typed client.
Retry Writes Safely with Idempotency Keys
Every POST endpoint accepts an optional Idempotency-Key header (any string up to 255 characters — a UUID works well):
curl -X POST https://api.glossi.io/api/v1/jobs \
-H "X-API-Key: glsi_xxxxxxxxxx_xxxxx" \
-H "Idempotency-Key: 00000000-0000-4000-8000-000000000000" \
-H "Content-Type: application/json" \
-d '{ ... }'How it behaves:
- Retrying the same request (same key, same endpoint, same body) returns the original response instead of creating duplicate work. Keys are scoped to your workspace and expire after 24 hours.
- Reusing a key with a different endpoint or body returns
422 IDEMPOTENCY_KEY_REUSED. - Sending a duplicate while the original request is still in flight returns
409 IDEMPOTENCY_CONFLICT— wait briefly and retry. - Server errors (5xx) are not cached, so a failed request can be safely retried with the same key.
One caveat: a replayed response is returned verbatim, so a retried POST /jobs or POST /models returns the original signed upload URLs, which expire 1 hour after the first request.
Idempotency does not make every distributed side effect exactly once. Keep your own request record and verify the returned resource state.
Error Handling
All errors follow a consistent format:
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Model name is required"
}
}Common Error Codes
| Code | HTTP Status | Description |
|---|---|---|
MISSING_API_KEY | 401 | No API key provided |
INVALID_API_KEY | 401 | API key is invalid, revoked, or expired |
VALIDATION_ERROR | 400 | Request body is invalid |
INVALID_STATUS | 400 | Operation isn't valid for the resource's current status |
FILE_NOT_UPLOADED | 400 | Confirmed a model upload but no file was found at the upload location |
GEO_RESTRICTED | 403 | Access denied from your location (workspace geo-restriction) |
PLAN_LIMIT_REACHED | 403 | Workspace has reached plan limits |
IDEMPOTENCY_CONFLICT | 409 | A request with this idempotency key is still in flight |
MODEL_FILE_TOO_LARGE | 413 | Model file exceeds the 1 GB upload limit |
IDEMPOTENCY_KEY_REUSED | 422 | Idempotency key was already used with a different request |
MODEL_NOT_FOUND | 404 | Model ID doesn't exist |
PROJECT_NOT_FOUND | 404 | Project ID doesn't exist |
TEMPLATE_NOT_FOUND | 404 | Template ID doesn't exist |
JOB_NOT_FOUND | 404 | Job ID doesn't exist |
RENDER_JOB_NOT_FOUND | 404 | Render job ID doesn't exist |
INTERNAL_ERROR | 500 | Something went wrong on our end |
Need Help?
- Support: Contact us at support@glossi.io
- Community: Join our Discord for questions and updates