Complete API reference for programmatic access to your Kounisou account
All API requests must include an API key in the Authorization header:
curl https://kounisou.com/api/v1/clients \
-H "Authorization: Bearer kns_live_..."Generate API keys in your account settings.
API requests are rate limited to 1,000 requests per hour per API key. Rate limit info is included in response headers:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 987
X-RateLimit-Reset: 2026-05-06T12:00:00ZList endpoints use cursor-based pagination. Pass cursor and limit query parameters:
GET /api/v1/clients?limit=20&cursor=abc123
{
"data": [...],
"meta": {
"cursor": "xyz789",
"hasMore": true,
"count": 20
}
}/api/v1/clientsList all clients. Supports pagination.
/api/v1/clientsCreate a new client invite.
/api/v1/clients/:idGet client details.
/api/v1/clients/:idUpdate client status or notes.
/api/v1/workoutsList all workout programs. Supports pagination.
/api/v1/workoutsCreate a new workout program.
/api/v1/exercisesList exercises (global + your custom). Supports filters: category, difficulty, muscle_group.
/api/v1/messagesSend a message to a client.
/api/v1/analyticsGet analytics summary (clients, workouts, engagement).
/api/v1/webhooksList webhook endpoints.
/api/v1/webhooksCreate a webhook endpoint. Returns secret once.
/api/v1/webhooks?id=:idDelete a webhook endpoint.
Available webhook event types:
client.created - New client addedclient.updated - Client profile updatedclient.deleted - Client removedworkout.completed - Client completed a workoutcheckin.submitted - Client submitted a check-inhabit.completed - Client completed a habitgoal.reached - Client reached a goalpayment.received - Payment receivedclient.inactive - Client became inactiveAll errors return a consistent JSON structure:
{
"error": {
"message": "Invalid API key",
"code": "INVALID_KEY"
}
}Common error codes: MISSING_AUTH, INVALID_KEY, KEY_REVOKED, KEY_EXPIRED, RATE_LIMIT_EXCEEDED, INSUFFICIENT_SCOPE, VALIDATION_ERROR, NOT_FOUND