Full schemas, parameters and examples: https://docs.urlcrop.com/api/reference. Plan column = minimum plan for the feature; API access itself needs Pro+.
| Area | Endpoints | Plan | Phase | ||||
|---|---|---|---|---|---|---|---|
| Workspace | GET /v1/workspace · GET /v1/members · GET/PATCH/DELETE /v1/members/{id} · GET/POST /v1/invitations · DELETE /v1/invitations/{id} · POST /v1/invitations/{id}/resend | – | 1 | ||||
| API keys | GET/POST /v1/api-keys · GET/PATCH/DELETE /v1/api-keys/{id} · POST /v1/api-keys/{id}/rotate (dashboard session only) | Pro | 1 | ||||
| Domains | GET/POST /v1/domains · GET/PATCH/DELETE /v1/domains/{id} · POST /v1/domains/{id}/verify · GET /v1/domains/{id}/status | Starter | 1 | ||||
| Links | GET/POST /v1/links · GET/PATCH/DELETE /v1/links/{id} · GET /v1/links/availability · GET /v1/links/metadata · GET /v1/links/{id}/stats · GET /v1/links/{id}/health · POST /v1/links/{id}/health/check · GET /v1/links/{id}/safety · GET /v1/links/{id}/qr-code | – | 1 | ||||
| Links (bulk) | POST /v1/links/bulk · POST /v1/links/import · GET /v1/jobs/{id} · GET /v1/jobs/{id}/results | Pro | 1 | ||||
| Links (routing) | GET/PUT/DELETE /v1/links/{id}/routing-rules | Pro | 2 | ||||
| Approvals | GET /v1/approvals · GET /v1/approvals/{id} · POST /v1/approvals/{id}/approve · POST /v1/approvals/{id}/reject · POST /v1/approvals/{id}/cancel (dashboard session only) | Agency | 1 | ||||
| Notifications | GET /v1/notifications · POST /v1/notifications/read (dashboard session only; your own notifications in the current workspace) | – | 1 | ||||
| QR codes | GET/POST /v1/qr-codes · GET/PATCH/DELETE /v1/qr-codes/{id} · `GET /v1/qr-codes/{id}.png | .svg | .pdf · GET /v1/qr-codes/{id}/stats · GET /v1/public/qr/{token}.{png | svg | pdf}` | – | 1 |
| Assets | POST /v1/assets · DELETE /v1/assets/{id} | – | 1 | ||||
| Pages | GET/POST /v1/pages · GET/PATCH/DELETE /v1/pages/{id} · PUT /v1/pages/{id}/blocks · POST /v1/pages/{id}/publish · POST /v1/pages/{id}/unpublish · GET /v1/pages/{id}/stats | – | 1 | ||||
| Organisation | GET/POST /v1/campaigns · GET/PATCH/DELETE /v1/campaigns/{id} · GET /v1/campaigns/{id}/stats · GET/POST /v1/tags · PATCH/DELETE /v1/tags/{id} · GET/POST /v1/utm-templates · GET/PATCH/DELETE /v1/utm-templates/{id} | – (UTM: Starter) | 1 | ||||
| Insights | GET /v1/insights/timeseries · GET /v1/insights/breakdown · GET /v1/insights/top-links · GET /v1/insights/events · POST /v1/insights/exports · GET /v1/insights/exports/{id} | – | 1 | ||||
| Conversions | POST /v1/conversions · POST /v1/conversions/batch · GET /v1/conversions · GET/DELETE /v1/conversions/{id} · POST /v1/collect (publishable key) | Business | 2 | ||||
| Webhooks | GET/POST /v1/webhooks · GET/PATCH/DELETE /v1/webhooks/{id} · POST /v1/webhooks/{id}/test · GET /v1/webhooks/{id}/deliveries · POST …/deliveries/{delivery_id}/retry · POST /v1/webhooks/{id}/rotate-secret · GET /v1/webhook-events | Pro | 1 | ||||
| Billing | GET /v1/public/plans · GET /v1/billing/subscription · GET /v1/billing/invoices · GET /v1/billing/invoices/{id} · GET /v1/billing/invoices/{id}/pdf · GET /v1/billing/customer · GET /v1/billing/payments · GET /v1/usage (checkout and plan changes are dashboard-only) | – | 1 | ||||
| Test mode | POST /v1/test/events · POST /v1/test/webhooks/fire · DELETE /v1/test/data | Pro | 1 | ||||
| Public | GET /v1/public/plans · GET /v1/public/link-preview (Turnstile) · GET /v1/public/invitations/{token} | – | 1 |
Approvals note: when a workspace turns on "Require approval for Editor changes" (Agency plan), link creates, edits and archives made by Editors in the dashboard return 202 with an approval_request object instead of the link, and nothing goes live until an Owner or Admin approves. API keys act as Admin, so API calls publish at once and never receive 202. Each new request notifies the workspace's Owners and Admins (except the requester) in the dashboard and by email; when a request is approved, rejected (with the reason) or expires after 14 days, the requester is notified the same way. A withdrawn request notifies nobody.
Billing note for developers: all purchases are final — there are no refund endpoints or events. Cancelling (POST /v1/billing/subscription/cancel from the dashboard) stops future renewals; access continues to the end of the paid period. Checkout requires explicit acceptance of the Cancellation & No-Refund Policy (accept_no_refund_policy: true with the current policy_version from GET /v1/public/plans), and that acceptance is recorded on your invoice.