Documentation Index
Fetch the complete documentation index at: https://alpha.developer.tomorro.com/llms.txt
Use this file to discover all available pages before exploring further.
Base URL
All API requests should be made to:Authentication
The Tomorro API uses API keys for authentication. Include your API key in thex-api-key header with every request.
Get your API key
Generate an API key from your organization settings.
Available Resources
The Tomorro API provides access to the following resources:Contracts
Create, manage, and send contracts for signature
Counterparties
Manage external companies and organizations
Members
Manage organization members and permissions
Terminology
If you’re migrating from the previous GraphQL API, note these terminology changes:| Previous API (GraphQL) | Current API (REST) |
|---|---|
ExternalCompany | Counterparty |
Attribute | Field |
ContractMember | Member (on contract) |
AttributeDefinition | Field options (inline) |
Response Format
All responses are returned in JSON format. Successful responses wrap the data in adata field:
Pagination
List endpoints use cursor-based pagination for efficient traversal of large datasets.Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 20 | Number of items per page (1-100) |
after | string | - | Cursor for forward pagination |
before | string | - | Cursor for backward pagination |
Response
Paginated responses include apagination object:
Example: Fetching pages
Sorting
Use thesort parameter to order results. Prefix with - for descending order.
Filtering
The API uses a simplified filtering format. Use query parameters directly.Filter Operators
| Format | Description | Example |
|---|---|---|
field=value | Equality (default) | status=active |
field=in:value1,value2 | In list (OR condition) | status=in:draft,negotiating |
field=gte:value | Greater than or equal | startAt=gte:2024-01-01 |
field=lte:value | Less than or equal | endAt=lte:2024-12-31 |
field=ne:value | Not equals | status=ne:canceled |
GET /contracts, contractTypeId applies to one contract type UUID per request. Using in: with several UUIDs (for example contractTypeId=in:uuid1,uuid2) is not supported for multiple types; make one request per contract type and merge the results client-side.
Examples
Error Handling
The API uses standard HTTP status codes to indicate success or failure.Status Codes
| Code | Description |
|---|---|
200 | Success |
201 | Resource created |
204 | Success (no content) |
400 | Bad request - Invalid parameters |
401 | Unauthorized - Invalid or missing API key |
404 | Not found - Resource doesn’t exist |
409 | Conflict - Resource state conflict |
429 | Too many requests - Rate limit exceeded |
500 | Internal server error |
Error Response Format
Common Error Codes
| Code | Description |
|---|---|
CONTRACT_NOT_FOUND | Contract does not exist |
COUNTERPARTY_NOT_FOUND | Counterparty does not exist |
TEMPLATE_NOT_FOUND | Template does not exist |
MEMBER_NOT_FOUND | Member does not exist |
FIELD_NOT_FOUND | Unknown field name or ID |
FIELD_OPTION_NOT_FOUND | Unknown option for select field |
INVALID_STATUS_TRANSITION | Cannot transition to requested status |
Rate Limiting
The API implements rate limiting to ensure fair usage. If you exceed the rate limit, you’ll receive a429 Too Many Requests response.