API Overview
Conventions, errors, pagination, and rate limits for the Part3 REST API.
The Part3 API is a JSON-over-HTTPS REST API. All requests must be authenticated with a bearer token — see Authentication.
Base URLs
| Surface | Base URL |
|---|---|
| REST API | https://api.part3.io |
| MCP | https://mcp.part3.io |
Request format
- Content type:
application/jsonfor all request bodies - Auth:
Authorization: Bearer <token>header on every request - IDs: opaque strings; treat them as case-sensitive
- Timestamps: ISO 8601 (
2026-04-22T14:30:00Z), always UTC
Resource hierarchy
Most resources are scoped under an organization and (where relevant) a project:
/v1/organizations/:orgId
/v1/organizations/:orgId/projects
/v1/organizations/:orgId/projects/:projectId/documents
/v1/organizations/:orgId/projects/:projectId/drawingsAdmin endpoints (Part3 staff only) live under /v1/admin/* and are not
accessible with client API keys.
Errors
Errors return a JSON body with a machine-readable code:
{
"error": {
"code": "unauthorized",
"message": "Invalid or expired access token"
}
}| Status | When |
|---|---|
400 | Request shape / validation failure |
401 | Missing or invalid bearer token |
403 | Token valid but lacks required permission or scope |
404 | Resource does not exist or is outside your scope |
429 | Rate limit exceeded |
5xx | Server error — safe to retry with backoff |
Pagination
List endpoints use cursor-based pagination:
GET /v1/organizations/:orgId/projects?limit=50&cursor=eyJpZCI6...The response includes nextCursor when more pages are available:
{
"items": [ ... ],
"nextCursor": "eyJpZCI6..."
}Rate limits
Limits are applied per client ID. Exceeding them returns 429 with a
Retry-After header. Contact support if you need higher limits for a
production integration.
The full endpoint reference is generated from the OpenAPI specification and lives under the API Reference nav section.