Presupuestos
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.
AuthorizationBearer <token>
En: header
Cuerpo de la petición
application/json
Definiciones de TypeScript
Usa el tipo request body en TypeScript.
Cuerpo de la respuesta
application/json
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"
}
}{
"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": "idempotency_error",
"code": "idempotency_key_reused",
"message": "La cabecera `Idempotency-Key` ya se usó con un body distinto. Usa una clave nueva o reenvía exactamente el mismo body.",
"param": null,
"doc_url": "https://docs.factuarea.com/guides/errors#idempotency_key_reused",
"request_id": "req_01HKQS5NHT9A4U7R2E3F8GZWTJ"
}
}{
"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"
}
}