Skip to main content
The public API is available to enabled employer workspaces. Ask Shor to enable your workspace before connecting an integration. Use the API base URL supplied for your environment; production uses https://api.shorpay.com, with resource paths under /v1. Start with Authentication and API keys to create a credential, choose scopes, and make an authenticated request. That guide also covers expiry, rotation, revocation, membership roles, and test-environment matching. The current contract is available without authentication at the production OpenAPI endpoint; a downloadable reference is included here.

Integration guides

Connecting an AI assistant instead? Start with Connect AI assistants. Responses contain a curated public representation. Single resources are bare objects; lists return { data, hasMore, nextCursor }. Money is a decimal string with currency precision. Keep it as a string or use a decimal library. Payroll dates use YYYY-MM-DD; timestamps use UTC ISO 8601.

Create a draft

POST /v1/contracts initializes a draft for completion and review in Shor. It accepts title, description, professional email, employment/contract type, country of employment, start/end dates, an optional external reference, and supported structured fields such as compensation, invoicing settings, benefits, and milestones. Use the request fields in the OpenAPI reference; the dashboard’s full wizard state is not an API payload. Creating a draft does not sign or activate a contract. Every POST requires Content-Type: application/json and an Idempotency-Key. Follow Idempotency and retries to generate and retain one key per intentional action.
Use externalReference to correlate a draft with your integration. Its uniqueness and retention semantics are described in Idempotency and retries.

Creator drafts

Set contractType to contractor_creator. Use creatorTerms for exclusivity, IP ownership, and the usage note, and creatorDeliverables for each deliverable’s platform, format, brief, optional due date, and positive numeric amount. Use these deliverables instead of the generic milestones field. Retainer details belong in compensation. Drafts may be incomplete; finish and review the engagement in Shor before sending it. A ready creator contract needs a retainer, at least one paid deliverable, or both. GET /v1/contracts/{id} includes a creator object with the saved terms and deliverables for creator contracts.

Approve work

Fetch the timesheet or milestone, review its amount, currency and payment date, then send its version as expectedVersion to /timesheets/{id}/approve or /milestones/{id}/approve. Rejection uses /reject and also requires a nonempty reason. A changed review returns STALE_RESOURCE_VERSION. Fetch and review again before creating a new intent. Approval creates a payment; it does not mean the worker has been paid. Timesheet processing follows its due date and effective auto-pay setting. Milestone approval attempts payment processing immediately. Follow paymentId and poll the payment resource for pending, processing, completed or failed state.

Errors and retries

See API errors for response shapes, error codes, and recovery steps; Rate limits for request budgets; and Idempotency and retries for safe write retries and reconciliation.