API reference
The ByDomu API v1 is REST with JSON. This reference is generated from the OpenAPI spec, which in turn comes from the routes’ code: every endpoint lists its parameters, the permission it needs and examples. There is no official SDK; you can generate your own client from the spec.
https://api.bydomu.com/v1This reference is generated from the API’s code, so descriptions are in Spanish. Names, parameters and examples are the same in every language.
Authentication
The key goes in the X-API-Key header (Authorization: Bearer is not accepted). You create it in ByDomu under Settings › API Keys, and the full key is shown only once.
curl https://api.bydomu.com/v1/me \
-H "X-API-Key: $BYDOMU_API_KEY"domu_pk_live_publishabledomu_sk_live_secretdomu_live_legacyAccess levels
Pagination
Lists take page (from 1) and pageSize, and respond with the data and the total. Each endpoint states its maximum pageSize. Contacts, deals and tasks also accept a cursor.
{
"data": [ … ],
"meta": { "total": 64, "page": 1, "pageSize": 12, "totalPages": 6 }
}Errors
Always with the same shape. Data that fails schema validation returns 400 with the list of issues.
{
"error": {
"code": "FORBIDDEN",
"message": "La API key no tiene el scope requerido: contacts:read"
}
}VALIDATION_ERRORInvalid inputUNAUTHORIZEDMissing or invalid keyPAYMENT_REQUIREDAccount is read-only: write rejectedFORBIDDENThe key lacks that permissionSECRET_KEY_IN_BROWSERSecret key used from a browserAPI_ACCESS_REQUIREDThe account’s access level doesn’t allow this keyPLAN_LIMIT_REACHEDA plan limit was reachedNOT_FOUNDResource not foundIDEMPOTENCY_CONFLICTIdempotency-Key reused with a different bodyRATE_LIMITEDPer-minute limit exceededLimits
A publishable key gets 300 requests and 60 writes per minute; a secret key, 60 and 30. Support can approve more. Every response includes X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset; when you go over, 429 RATE_LIMITED with Retry-After.
On any write you can send Idempotency-Key: a retry with the same key and body returns the original response with Idempotency-Status: replayed. It lives 24 hours.