/v1. Test credentials are accepted only by the matching test environment. The current contract is available without authentication at /v1/openapi.json; a downloadable reference is included here.
Connecting an AI assistant instead? Start with Connect AI assistants. The MCP tool reference maps every supported tool to its HTTP route, inputs, scopes, and confirmation requirements.
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 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 Idempotency-Key, a unique intent identifier of 16–128 letters, digits, underscores or hyphens. Generate it once, persist it in your integration, and reuse it with exactly the same request for retries. Generate a new identifier for each intentional new action, even when its arguments are identical.
Idempotency-Replayed: true; current resource state may since have changed. Never reuse an old key after retention. externalReference provides durable draft correlation after operation retention and is unique within the workspace and integration principal. Key rotation preserves that principal. An independently created key or a different MCP grant is a different integration.
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.
Errors and retries
Errors return{ error: { type, code, message, status, requestId, details? } }. Retain the request ID when contacting support; do not log credentials or sensitive request bodies.
Limits currently allow 600 reads and 60 writes per principal per minute, with a shared workspace ceiling of 2,000 requests per minute. Failed-auth admission has a separate limit. Responses include rate-limit headers. Retry transient network/502/503/504 errors with exponential backoff, preserving the key and payload for writes. Resolve validation, authorization and state conflicts before retrying.