API Reference
API Reference
Complete reference for the Coop REST API.
Base URL
https://api.coop.example.com/api/v1Authentication
All requests require an Authorization header with either an API key or JWT token.
Authorization: Bearer YOUR_API_KEYSee Generate and use API keys for setup instructions.
Rate limits
| Limit | Value |
|---|---|
| Requests per minute | 100 |
| Burst allowance | 20 |
Exceeding the limit returns 429 Too Many Requests with a Retry-After header (seconds).
Pagination
List endpoints accept page and limit query parameters.
GET /api/v1/contacts?page=2&limit=25Responses include pagination metadata:
{
"data": [],
"pagination": {
"page": 2,
"limit": 25,
"total": 142,
"totalPages": 6
}
}Default limit is 20. Maximum is 100.
Error format
{
"error": "not_found",
"message": "Message not found",
"statusCode": 404
}| Status | Meaning |
|---|---|
400 | Bad request — invalid input |
401 | Unauthorized — missing or invalid credentials |
403 | Forbidden — insufficient permissions |
404 | Resource not found |
429 | Rate limit exceeded |
500 | Internal server error |
Message statuses
| Status | Description |
|---|---|
queued | Waiting in the send queue |
processing | Coop Desktop is sending via iMessage |
sent | iMessage accepted the message |
delivered | Recipient device confirmed receipt |
failed | All retry attempts exhausted |
Webhook events
| Event | Description |
|---|---|
message.queued | Message added to send queue |
message.sent | Message sent via iMessage |
message.failed | Message failed after retries |
message.received | Incoming iMessage received |
relay.online | Coop Desktop connected |
relay.offline | Coop Desktop disconnected |