Listar todos los presupuestos
Lista tus presupuestos de venta con paginación por cursor. Admite filtrado por `status[in]`, `client_id`, `issued_on[gte|lte]`.
En: header
Parámetros de consulta
Número de objetos a devolver. Entero entre 1 y 100. Por defecto 25.
251 <= value <= 100Cursor para paginación hacia delante. Usa el uuid del último objeto de la página anterior.
uuidCursor para paginación hacia atrás. Usa el uuid del primer objeto de la página actual.
uuidEstado del presupuesto. Coincidencia exacta en status.
Estado del presupuesto. Lista separada por comas. Coincide cualquiera de los valores.
Client ID (UUID v7). Coincidencia exacta con client_id.
uuidClient ID (UUID v7). Lista separada por comas. Coincide cualquiera de los valores.
Series ID (UUID v7). Coincidencia exacta con series_id.
uuidSeries ID (UUID v7). Lista separada por comas. Coincide cualquiera de los valores.
Fecha de creación (ISO 8601). Mayor o igual que el valor dado.
date-timeFecha de creación (ISO 8601). Menor o igual que el valor dado.
date-timeFecha de creación (ISO 8601). Estrictamente mayor que el valor dado.
date-timeFecha de creación (ISO 8601). Estrictamente menor que el valor dado.
date-timeFecha de validez. Mayor o igual que el valor dado.
dateFecha de validez. Menor o igual que el valor dado.
dateFecha de validez. Estrictamente mayor que el valor dado.
dateFecha de validez. Estrictamente menor que el valor dado.
dateImporte total. Mayor o igual que el valor dado.
Importe total. Menor o igual que el valor dado.
Importe total. Estrictamente mayor que el valor dado.
Importe total. Estrictamente menor que el valor dado.
Filtrar por tag de clasificación (slug en minúscula). Admite múltiples valores con tags[in]=a,b (JSON_CONTAINS, semántica OR — coincide con los presupuestos que llevan CUALQUIERA de los tags). Coincidencia exacta sobre tags.
Filtrar por tag de clasificación (slug en minúscula). Admite múltiples valores con tags[in]=a,b (JSON_CONTAINS, semántica OR — coincide con los presupuestos que llevan CUALQUIERA de los tags). Lista separada por comas. Coincide cualquiera de los valores.
Orden de los resultados. Usa un campo para ascendente o un prefijo - para descendente (p. ej. -created). Campos permitidos: created, total, number, valid_until. Combinado con el cursor, el orden se mantiene determinista (un orden secundario estable por el id del cursor, al estilo Stripe). Si se omite, los resultados siguen el orden de cursor por defecto (created descendente).
"created" | "-created" | "total" | "-total" | "number" | "-number" | "valid_until" | "-valid_until"Cuerpo de la respuesta
application/json
application/json
application/json
application/json
application/json
application/json
{
"data": [
{
"id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a04",
"object": "quote",
"number": "P-2026-00012",
"series": {
"id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0e",
"code": "F-2026"
},
"client": {
"id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a01",
"name": "Acme Corporation"
},
"status": "sent",
"issued_on": "2026-01-18",
"valid_until": "2026-02-17",
"accepted_at": null,
"rejected_at": null,
"converted_to_id": null,
"converted_invoice_number": "F-2025-001",
"subtotal": 500,
"taxes_total": 105,
"total_vat": 105,
"total_retention": 0,
"total_surcharge": 0,
"total": 605,
"currency": "EUR",
"notes": "Presupuesto válido 30 días.",
"terms": "Presupuesto valido durante 30 dias desde la fecha de emision.",
"external_id": "CRM-PRES-2026-0012",
"lines": [
{
"object": "quote_line",
"description": "Auditoría inicial",
"product": {
"id": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a09",
"name": "Consultoría hora estándar"
},
"quantity": 5,
"unit_price": 100,
"tax_rate": 21,
"retention_rate": 0,
"surcharge_rate": 0,
"discount_percent": 0,
"subtotal": 500,
"taxes": 105,
"total": 605
}
],
"metadata": {
"erp_code": "IVA-GEN",
"ledger_account": "477000"
},
"tags": [
"comercial",
"q1-2026"
],
"custom_fields": [
{
"field": "campania",
"value": "Promo primavera"
}
],
"link_expires_at": "2026-07-01T09:53:57+02:00",
"link_is_active": true,
"created_at": "2026-01-18T16:20:00Z",
"updated_at": "2026-01-18T16:25:00Z"
}
],
"has_more": true,
"next_cursor": "01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a0c"
}{
"error": {
"type": "authentication_error",
"code": "missing_api_key",
"message": "No se ha proporcionado una API key válida en el header Authorization.",
"param": null,
"doc_url": "https://docs.factuarea.com/guides/errors#missing_api_key",
"request_id": "req_01HKQS5N8VR7QXJ9K3T6BWPMZA"
}
}{
"error": {
"type": "authorization_error",
"code": "insufficient_scope",
"message": "Esta API key no tiene el scope requerido para esta operación.",
"param": null,
"doc_url": "https://docs.factuarea.com/guides/errors#insufficient_scope",
"request_id": "req_01HKQS5NBC3P8M1KX4V7SLNHQD"
}
}{
"error": {
"type": "invalid_request_error",
"code": "parameter_invalid",
"message": "El campo `name` es obligatorio y no puede estar vacío.",
"param": "name",
"doc_url": "https://docs.factuarea.com/guides/errors#parameter_invalid",
"request_id": "req_01HKQS5NGS8Z3T6Q1D2E7FYVSI"
}
}{
"error": {
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Has excedido el rate limit de 60 peticiones por minuto. Reintenta tras 30 segundos.",
"param": null,
"doc_url": "https://docs.factuarea.com/guides/errors#rate_limit_exceeded",
"request_id": "req_01HKQS5NKW1C6W9T4G5H0JBZVL"
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "Ha ocurrido un error inesperado. Si persiste, contacta con soporte adjuntando el request_id.",
"param": null,
"doc_url": "https://docs.factuarea.com/guides/errors#internal_error",
"request_id": "req_01HKQS5NLX2D7X0U5H6J1KCAWM"
}
}Buscar un presupuesto por external ID
Busca un único presupuesto por su `external_id` (enviado en el body JSON), la clave de integración que lo mapea a un registro en un sistema de terceros (ERP/CRM/e-commerce). Devuelve el presupuesto coincidente o 404 `quote_not_found` si ningún presupuesto usa ese external_id dentro de tu empresa.
Descargar el PDF del presupuesto
Descarga la representación en PDF de un presupuesto.