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
- Authentication and API keys
- Rate limits
- API errors
- Idempotency and retries
- Polling and TypeScript SDK
- MCP tool reference
{ 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 and an optional external reference. It does not sign or activate a contract or accept the dashboard’s nested compensation/wizard payload.
Every POST requires Content-Type: application/json and an Idempotency-Key. Follow Idempotency and retries to generate and retain one key per intentional action.
externalReference to correlate a draft with your integration. Its uniqueness and retention semantics are described in Idempotency and retries.
Approve work
Fetch the timesheet or milestone, review its amount, currency and payment date, then send itsversion 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.