# API reference

> Every ByDomu API v1 endpoint with its parameters, required permission, response and examples in cURL, JavaScript and Python.


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.

Base URL

`https://api.bydomu.com/v1`

OpenAPI

[openapi.json · v3.1.0](https://api.bydomu.com/v1/openapi.json)

Collections

[Postman](https://developers.bydomu.com/bydomu-api.postman_collection.json) · [Bruno](https://developers.bydomu.com/bydomu-api.bruno_collection.json)

For AI agents

[llms.txt](https://developers.bydomu.com/llms.txt) · [llms-full.txt](https://developers.bydomu.com/llms-full.txt)

This 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.

```bash
curl https://api.bydomu.com/v1/me \
  -H "X-API-Key: $BYDOMU_API_KEY"
```

`domu_pk_live_` publishable

For websites and the browser. Only: portal:read, leads:write, booking:write, finder:write, events:write.

`domu_sk_live_` secret

Server-side only: with an Origin header (browser) it returns 403 SECRET_KEY_IN_BROWSER. Any permission.

`domu_live_` legacy

Keys created before key types existed. They keep working the same.

### Access levels

Level Plans How to get it

1 **Publishable keys** 300 requests and 60 writes per minute · up to 5 keys Any paid plan No request

2 **Read-only secret keys** 60 requests per minute · up to 2 keys Business · Enterprise Automatic

3 **Writes, messages, webhooks and higher limits** Tailored to what’s approved Any paid plan Support review

## 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.

```json
{
  "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.

```json
{
  "error": {
    "code": "FORBIDDEN",
    "message": "La API key no tiene el scope requerido: contacts:read"
  }
}
```

**400** `VALIDATION_ERROR` Invalid input

**401** `UNAUTHORIZED` Missing or invalid key

**402** `PAYMENT_REQUIRED` Account is read-only: write rejected

**403** `FORBIDDEN` The key lacks that permission

**403** `SECRET_KEY_IN_BROWSER` Secret key used from a browser

**403** `API_ACCESS_REQUIRED` The account’s access level doesn’t allow this key

**403** `PLAN_LIMIT_REACHED` A plan limit was reached

**404** `NOT_FOUND` Resource not found

**409** `IDEMPOTENCY_CONFLICT` Idempotency-Key reused with a different body

**409** `IDEMPOTENCY_IN_PROGRESS` Another request with the same Idempotency-Key is still running

**429** `RATE_LIMITED` Per-minute limit exceeded

**429** `TENANT_RATE_LIMITED` The organization’s per-minute write limit was exceeded

## Limits

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.

## Resources

[**Account** 1 endpoint](https://developers.bydomu.com/en/referencia/get-me) [**Portal** 1 endpoint](https://developers.bydomu.com/en/referencia/get-portal) [**Properties** 6 endpoints](https://developers.bydomu.com/en/referencia/list-properties) [**Agents** 2 endpoints](https://developers.bydomu.com/en/referencia/list-agents) [**Leads** 2 endpoints](https://developers.bydomu.com/en/referencia/submit-lead) [**Finder** 1 endpoint](https://developers.bydomu.com/en/referencia/submit-finder) [**Booking** 4 endpoints](https://developers.bydomu.com/en/referencia/list-booking-agents) [**Contacts** 4 endpoints](https://developers.bydomu.com/en/referencia/list-contacts) [**Pipelines** 2 endpoints](https://developers.bydomu.com/en/referencia/list-pipelines) [**Deals** 5 endpoints](https://developers.bydomu.com/en/referencia/list-deals) [**Tasks** 4 endpoints](https://developers.bydomu.com/en/referencia/list-tasks) [**Documents** 2 endpoints](https://developers.bydomu.com/en/referencia/list-documents) [**Signature envelopes** 2 endpoints](https://developers.bydomu.com/en/referencia/list-envelopes) [**Conversations** 4 endpoints](https://developers.bydomu.com/en/referencia/list-conversations) [**Appointments** 5 endpoints](https://developers.bydomu.com/en/referencia/list-appointments) [**Team** 2 endpoints](https://developers.bydomu.com/en/referencia/list-team-members) [**Tags** 1 endpoint](https://developers.bydomu.com/en/referencia/list-tags) [**Custom fields** 1 endpoint](https://developers.bydomu.com/en/referencia/list-custom-fields) [**Commissions** 2 endpoints](https://developers.bydomu.com/en/referencia/list-commissions) [**Accounting** 2 endpoints](https://developers.bydomu.com/en/referencia/list-accounting-entries) [**Leases** 2 endpoints](https://developers.bydomu.com/en/referencia/list-leases) [**Notes** 1 endpoint](https://developers.bydomu.com/en/referencia/create-note) [**Events** 4 endpoints](https://developers.bydomu.com/en/referencia/list-event-types) [**Webhooks** 4 endpoints](https://developers.bydomu.com/en/referencia/list-webhooks) [**Modo de prueba** 2 endpoints](https://developers.bydomu.com/en/referencia/reset-test-data)
