Sign in
Developer API

SoLoPrint REST API

The public SoLoPrint API is organization-scoped and built for fleet control, queue orchestration, school operations, integrations, and reporting. This page is intentionally grounded in the routes that are live in the current server so external consumers can onboard without guessing.

Base URL
https://api.soloprint.app
Auth
Authorization: Bearer <api-key>
Current version
2026-04-02

Quickstart

1
Create a scoped API key

Generate a key from Integrations. Keys are shown once, can expire, and should be limited to the capabilities your integration actually needs.

2
Probe the public contract

Call `/v1/public/version` first so your client can log the API series, active version stamp, and hosted documentation links before it starts work.

3
Validate org access early

Use `/v1/org/context` or a small read endpoint during startup to confirm the key resolves into the correct organization and capability set.

Related surfaces

Every `/v1/*` response includes documentation and changelog headers so clients can surface drift in logs, dashboards, or support tooling.

Response headers

X-SoLoPrint-API-Series: v1
Stable series identifier for the public contract.
X-SoLoPrint-API-Version: 2026-04-02
Current published contract stamp for the `/v1` series.
X-SoLoPrint-API-Docs: https://www.soloprint.app/developers/api-docs
Hosted documentation URL returned on every `/v1/*` response.
X-SoLoPrint-API-Changelog: https://www.soloprint.app/developers/changelog
Hosted changelog URL returned on every `/v1/*` response.

Capability scopes

operations.read
Read operational surfaces such as history, statistics, file downloads, queue reads, and printer monitoring.
queue.manage
Create queue items, recompute eligibility, and assign or dispatch work.
printer.manage
Create and manage printers, tags, groups, and printer metadata.
spool.manage
Create, update, and deduct filament spools plus related material operations.
integrations.manage
Manage API keys, webhooks, notification rules, and delivery replay operations.
org.manage_users
Read and manage users, classes, groups, invites, and SSO configuration.

Common error contract

Error responses are machine-readable and typically include an `error` code plus a `details` field for operational context.

401
{ "error": "missing_bearer_token" }
No bearer token was sent.
403
{ "error": "insufficient_permissions" }
The token is valid but does not carry the required capability.
404
{ "error": "organization_not_found" }
The resource or organization-scoped record could not be resolved.
409
{ "error": "queue_item_not_assignable", "details": "..." }
The request is valid but conflicts with current state.
500
{ "error": "webhook_create_failed", "details": "..." }
A server-side failure occurred and includes a machine-readable error code.

Public contract and auth bootstrap

GET
/v1/public/version
Inspect the active API series, version stamp, and public docs links without authenticating.
GET
/v1/me
Resolve the authenticated user before organization selection or device-bound flows.
GET
/v1/org/context
Load the active organization, membership, and capability context for the current token.
POST
/v1/org/sso/complete
Complete branded SSO sign-in and link the authenticated user to the right organization membership.

Organizations and school operations

GET
/v1/org/users
List organization memberships, roles, approval state, and roster metadata.
POST
/v1/org/users/bulk
Apply bulk roster updates such as role, status, class, and group changes.
GET
/v1/platform/classes
Read school class definitions for rostering and assignment workflows.
GET
/v1/platform/user-groups
Read reusable user groups and their capability overrides.
GET
/v1/platform/sso/providers
Read SSO providers configured for an organization.
GET
/v1/platform/sso/group-mappings
Read inbound SSO group-to-role, class, teacher, and user-group mappings.

Fleet, queue, and materials

GET
/v1/printers
List printers with organization-aware state, capability data, tags, groups, and active material context.
POST
/v1/platform/printers/:printer_id/dispatch-next
Dispatch the next eligible queue item to a specific printer.
GET
/v1/platform/queue
Read queue items, current eligibility state, and assignment information.
POST
/v1/platform/queue
Create a new queue item with printer requirements, metadata, and optional file linkage.
POST
/v1/platform/queue/:queue_item_id/recompute
Recompute matching and eligibility after printer, file, or spool changes.
POST
/v1/platform/queue/:queue_item_id/assign
Manually assign a queue item to a specific printer.
GET
/v1/spools
List tracked spools with assignment-aware material status and low-stock metadata.
POST
/v1/spools/:spool_id/deduct
Deduct filament usage from a spool after an operation or integration sync.

Files and integrations

GET
/v1/files
List organization files available for queueing, slicing, and downstream operations.
POST
/v1/files/register
Register a file placeholder for direct storage uploads from a client.
POST
/v1/files/upload-from-url
Import a file into the library from a remote URL.
GET
/v1/files/:fileId/download
Issue a signed download URL for a stored file.
GET
/v1/platform/api-keys
List active API keys and their scopes. Secret material is never returned after creation.
POST
/v1/platform/webhooks
Create a webhook endpoint with retry policy and event subscriptions.
GET
/v1/platform/webhook-deliveries
Inspect queued, delivered, or failed webhook deliveries.
POST
/v1/platform/webhook-deliveries/:webhook_delivery_id/replay
Replay a failed or historical webhook delivery.

Request examples

Probe the current public contract
curl https://api.soloprint.app/v1/public/version
List printers with an API key
curl https://api.soloprint.app/v1/printers \
  -H "Authorization: Bearer <api-key>" \
  -H "Accept: application/json"
Create a webhook endpoint
curl https://api.soloprint.app/v1/platform/webhooks \
  -X POST \
  -H "Authorization: Bearer <api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Operations endpoint",
    "endpoint_url": "https://example.com/webhooks/soloprint",
    "subscriptions": ["queue_item.assigned", "spool_assignment.created"],
    "max_attempts": 5,
    "retry_backoff_seconds": 300
  }'

Key management

Create capability-scoped keys, rotate them cleanly, and audit which surfaces they can reach.

Open Integrations

Contract tracking

Pair the version endpoint with the changelog so downstream tools can flag when the hosted contract changed.

Review release notes

Operational readiness

Before rotating credentials or troubleshooting delivery issues, check public platform health and recent incidents.

Open status page