Tasks
Follow-up to-dos for the team, optionally linked to a quote.
What the API offers
The Tasks API has a single method: POST /api/v1/tareas, to create a task. There are no endpoints to list, edit, complete, or delete tasks through the API; that’s done from the app. To learn about changes, listen to the task.created and task.completed events with webhooks or read them from the event history.
Creating a Task
POST /api/v1/tareas creates a task in the team’s inbox. Requires a key with write permission (for a restricted key, write on the tareas resource) and accepts Idempotency-Key.
| Field | Required | Detail |
|---|---|---|
titulo |
Yes | Task text. The first 200 characters are stored; the rest is dropped without an error. |
due_date |
No | Due date formatted as YYYY-MM-DD. |
cotizacion_id |
No | UUID of a quote from your organization to link the task to. |
factura_id |
No | UUID of an invoice from your organization (the id from /api/v1/facturas) to link the task to. It can go together with cotizacion_id. |
Any other field in the body (for example asignado_a, prioridad, or notas) is ignored without an error: assignee, priority, and notes can’t be set through the API.
curl -X POST "https://cordhq.app/api/v1/tareas" \
-H "Authorization: Bearer sk_live_tU..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: follow-up-cot-00104" \
-d '{
"titulo": "Call Stark Industries about COT-00104",
"due_date": "2026-09-20",
"cotizacion_id": "2a9d8e4f-6b1c-4d7a-9e3f-5c8b1a2d4e6f"
}'
{ "data": { "id": "7c1e0b4a-3f2d-4e8c-9a6b-5d1f0e2c3b4a" } }
The task is created unassigned with normal priority. In the app, its assignee, priority, and notes are set from Tasks; while it has no assignee, the morning email reminder goes to the account owner.
With a test key (sk_test_) the task is created in test mode, which doesn’t send reminders.
Every new task emits the task.created event, with cotizacion_id and factura_id (or null). Tasks Cord creates on its own (chargeback and SPEI refund) emit it too. When someone marks it done in the app, task.completed is emitted.
Possible errors
| Code | When |
|---|---|
invalid_request (400) |
titulo is missing (or empty), or due_date isn’t a real date formatted as YYYY-MM-DD (for example, 2026-02-30 is rejected). |
not_found (404) |
cotizacion_id or factura_id isn’t a UUID, or isn’t a quote or invoice from your organization. The message is in your account’s language. |
invalid_json (400) |
The body isn’t valid JSON. |
insufficient_scope / insufficient_permissions (403) |
The key is read-only, or it’s a restricted key without write on tareas. |
The rest of the common codes are in Error Handling.