Documentation
The API is the contract.
What can I do with the API?
Everything. There is nothing the console does that the API cannot — upload and validate data, forecast and submit runs, stream progress, gate a candidate against its baseline, deploy an endpoint, publish weights, and read exactly what has been spent. The console is a client of this API, not a privileged one.
Pages
Quickstart
How do I fine-tune and deploy a model on Onrup?
Authentication
How does authentication work on the Onrup API?
Datasets
What dataset formats does Onrup accept and how are they validated?
Runs
How does a training run work on Onrup?
Evaluation and the gate
How does the Onrup evaluation gate decide whether a model can be deployed?
Deployments
How do I serve a fine-tuned model on Onrup?
Publishing models
How do I export or publish a model trained on Onrup?
Long-running operations
How do I track a long-running job on the Onrup API?
Billing and spend limits
How does Onrup billing work?
Errors
What error codes does the Onrup API return?
Rate limits and quotas
What are the Onrup rate limits and quotas?
Security model
How does Onrup isolate and protect tenant data?
API reference
What endpoints does the Onrup API expose?
Endpoints
55 public endpoints across 11 groups. Also published as an OpenAPI document.
| Method | Path | Purpose | Scope |
|---|---|---|---|
| GET | /v1/me | The authenticated identity, tenant and role. | any |
| PATCH | /v1/me | Update profile fields on the authenticated user. | session |
| POST | /v1/keys | Create an API key with an explicit scope set. | keys:write |
| GET | /v1/keys | List keys with their scopes and last use. | keys:read |
| DELETE | /v1/keys/{id} | Revoke a key immediately. | keys:write |
| POST | /v1/data-assets/uploads | Begin a resumable multipart upload. | datasets:write |
| POST | /v1/data-assets/uploads/{id}/parts | Request further presigned part URLs. | datasets:write |
| POST | /v1/data-assets/uploads/{id}/complete | Finalise an upload and trigger validation. | datasets:write |
| GET | /v1/data-assets/uploads/{id} | Upload state and which parts have landed. | datasets:read |
| DELETE | /v1/data-assets/uploads/{id} | Abandon an upload and release its parts. | datasets:write |
| GET | /v1/data-assets | List data assets with kind and state. | datasets:read |
| GET | /v1/data-assets/{id} | A single data asset and its manifest. | datasets:read |
| GET | /v1/data-assets/{id}/report | The validation report: record counts, token length percentiles, duplicates, truncation risk. | datasets:read |
| POST | /v1/data-assets/{id}/generate | Expand a seed asset into a full one under a declared cost ceiling. | datasets:write |
| DELETE | /v1/data-assets/{id} | Delete a data asset and its derived artefacts. | datasets:write |
| GET | /v1/models | Base models with memory thresholds and supported objectives. | any |
| GET | /v1/templates/training | Training templates, filterable by model. | any |
| GET | /v1/templates/inference | Inference templates and their scaling options. | any |
| POST | /v1/runs | Create a run in draft, against a template and a data asset. | runs:write |
| POST | /v1/runs/{id}/submit | Authorise cost and queue the run. | runs:write |
| POST | /v1/runs/{id}/cancel | Cancel a run and release its reservation. | runs:write |
| POST | /v1/runs/{id}/resume | Resume an interrupted run from its last checkpoint. | runs:write |
| GET | /v1/runs | List runs with state and accrued cost. | runs:read |
| GET | /v1/runs/{id} | A single run: state, template, GPU class, cost so far. | runs:read |
| GET | /v1/runs/{id}/logs | Training logs for a run. | runs:read |
| GET | /v1/runs/{id}/metrics | Loss, throughput and validation metrics over time. | runs:read |
| GET | /v1/runs/{id}/weights | A signed URL to download the trained weights. | runs:read |
| GET | /v1/runs/{id}/stream | Server-sent event stream of run progress. | runs:read |
| GET | /v1/operations/{id} | State of any long-running operation. | any |
| GET | /v1/operations/{id}/events | Replay the event log from a cursor. | any |
| GET | /v1/operations/{id}/stream | Live event stream, resumable via Last-Event-ID. | any |
| POST | /v1/operations/{id}/cancel | Cancel an operation. | any |
| POST | /v1/operations/{id}/retry-from-checkpoint | Restart from the last durable checkpoint. | any |
| POST | /v1/evaluations | Run a blinded comparison of a candidate against a baseline. | runs:write |
| GET | /v1/evaluations/{id} | Evaluation state and summary. | runs:read |
| GET | /v1/evaluations/{id}/gate | The gate verdict: pass, fail or inconclusive, with win rate and interval. | runs:read |
| GET | /v1/evaluations/{id}/results | Per-case results, including which side won and why. | runs:read |
| POST | /v1/runs/{id}/publications | Publish a finished run to a model hub. | runs:write |
| GET | /v1/runs/{id}/publications | Publications for a run. | runs:read |
| GET | /v1/publications/{id} | State of a single publication. | runs:read |
| POST | /v1/publications/{id}/cancel | Cancel an in-flight publication. | runs:write |
| GET | /v1/runs/{id}/model-card | The generated model card, as markdown or JSON. | runs:read |
| POST | /v1/deployments | Create an endpoint for a finished run. | deployments:write |
| POST | /v1/deployments/{id}/warm | Bring a cold endpoint up before traffic arrives. | deployments:write |
| POST | /v1/deployments/{id}/retire | Retire an endpoint and release its capacity. | deployments:write |
| POST | /v1/deployments/{id}/resume | Return a retired endpoint to service. | deployments:write |
| GET | /v1/deployments | List endpoints with state and hourly rate. | deployments:read |
| GET | /v1/deployments/{id} | A single endpoint, its URL and scaling configuration. | deployments:read |
| GET | /v1/deployments/{id}/stream | Server-sent events for warm-up and scaling transitions. | deployments:read |
| GET | /v1/forecast/cost | Estimate a run’s cost before creating it. | any |
| GET | /v1/billing/entitlement | Plan, spend limit, reserved and settled amounts, available headroom. | billing:read |
| GET | /v1/billing/usage | Usage for the current period, including events not yet settled. | billing:read |
| GET | /v1/billing/invoices | Invoice history. | billing:read |
| POST | /v1/billing/portal-session | A short-lived link to the billing portal. | session |
| POST | /{tenant}/{deployment}/v1/chat/completions | OpenAI-compatible chat completions. Served from serve.onrup.com. | deployments:read |
Scopes
An API key carries an explicit scope set. Administrative actions are deliberately unavailable to any key and require an interactive session, so a leaked key cannot be used for them under any circumstances.
| runs:read | Read runs, logs, metrics, weights and evaluation results. |
|---|---|
| runs:write | Create, submit, cancel and resume runs; publish models. |
| datasets:read | Read data assets and validation reports. |
| datasets:write | Upload, generate and delete data assets. |
| deployments:read | Read endpoints and call inference. |
| deployments:write | Create, warm, retire and resume endpoints. |
| billing:read | Read entitlement, usage and invoices. |
| keys:read | List API keys and their scopes. |
| keys:write | Create and revoke API keys. |
Start with the free tier
A magic link creates your account, your tenant and your first API key. No card until you ask for compute.