Saltar al contenido principal
Saltar al contenido de la API

Documentación de la API

Acceso programático a los datos de tu LLC. URL base: https://devil.club/api/v1

Gestionar tus API Keys

La API requiere al menos una LLC con suscripción Manager activa. Sin Manager, los endpoints no devolverán datos.

Quick start

En menos de un minuto: crea una key, haz tu primera llamada y verifica que recibes tu entidad.

  1. Crea una key en /developers/keys con scope read:entity.
  2. Guarda la key inmediatamente — solo se muestra una vez.
  3. Lanza la petición de ejemplo (abajo) sustituyendo TU_KEY.
# Tu primera llamada — lista tus LLCs
curl -H "Authorization: Bearer dc_live_TU_KEY" \
     https://devil.club/api/v1/entity

Autenticación

Todas las peticiones a la API requieren una API key enviada en el header Authorization como Bearer token.

# Cada petición debe incluir este header Authorization: Bearer dc_live_a1b2c3d4e5f6... # Ejemplo con curl curl -H "Authorization: Bearer dc_live_TU_KEY" \ https://devil.club/api/v1/entity

Crea y gestiona tus API keys en /developers/keys. Cada key tiene scopes específicos que controlan a qué puede acceder.

Límite de peticiones

Por defecto: 100 peticiones por hora por API key. Si se excede, recibirás una respuesta 429 con un header Retry-After.

IP Whitelisting

Opcionalmente puedes restringir tu API key a direcciones IP específicas. Si está configurado, las peticiones desde otras IPs recibirán una respuesta 403 que incluye tu IP actual.

Scopes de Permisos

Selecciona solo los scopes necesarios para cada clave. Principio de mínimo privilegio.

Scopes disponibles y el área de la API a la que aplican
Scope Acceso Sección
read:bookkeepingLecturaBookkeeping
write:bookkeepingEscrituraBookkeeping
read:ledgerLecturaLedger de Gobernanza
write:ledgerEscrituraLedger de Gobernanza
read:documentsLecturaDocumentos
read:entityLecturaEntidad (LLC)
write:entityEscrituraEntidad (LLC)
read:profileLecturaPerfil
write:profileEscrituraPerfil
read:reportsLecturaLucy — Informes
write:reportsEscrituraLucy — Informes
read:paymentsLecturaPagos
read:presenceLecturaPresencia Fiscal

Bookkeeping

GET /v1/bookkeeping read:bookkeeping

Lista las entradas de bookkeeping de una entidad. Incluye ingresos, gastos y totales resumidos.

ParámetroTipoDescripción
entity_id obligatoriointegerID de la entidad LLC
yearintegerFiltrar por año
monthintegerFiltrar por mes (1-12)
categorystringFiltrar por categoría
limitintegerMáx. resultados (por defecto 100, máx. 500)
offsetintegerOffset de paginación
# Obtener bookkeeping de 2026 para la entidad 42 curl -H "Authorization: Bearer dc_live_..." \ "https://devil.club/api/v1/bookkeeping?entity_id=42&year=2026" # Respuesta { "data": [ { "id": 1, "year": 2026, "month": 3, "category": "SaaS Revenue", "income": 5000.00, "expense": 0, "bank_source": "Mercury", ... } ], "summary": { "total_income": 45000, "total_expenses": 12000, "net": 33000 }, "pagination": { "total": 87, "limit": 100, "offset": 0 } }
POST /v1/bookkeeping write:bookkeeping

Añade una nueva entrada de bookkeeping. Las entradas añadidas vía API se etiquetan con source: "api".

CampoTipoDescripción
entity_id obligatoriointegerID de la entidad LLC
year obligatoriointegerAño
month obligatoriointegerMes (1-12)
incomenumberImporte de ingreso (por defecto 0)
expensenumberImporte de gasto (por defecto 0)
movement_typeenumTipo de movimiento canónico (ver tabla abajo). Si no se envía, se infiere del signo income/expense.
categoryenumUna de las 28 categorías canónicas (ver tabla abajo). Valores legacy se mapean automáticamente.
counterparty_idintegerRecomendado. FK a dc.counterparties. La “regla de oro”: quién está al otro lado del movimiento. Sin esto, Form 5472 prefill no detecta related-parties.
economic_purposestringRecomendado. Propósito económico (ej: “Servicios SEO mayo 2026”). Pieza 2 de la regla de oro.
document_idintegerRecomendado. FK a dc.documents con el justificante (factura, contrato, recibo). Pieza 3 de la regla de oro.
descriptionstringDescripción libre adicional
transaction_datedateFecha exacta (YYYY-MM-DD)
bank_sourcestringMercury, Stripe, Wise, manual
external_tx_idstringReferencia de transacción externa
# Ejemplo POST con las 3 piezas de la regla de oro curl -X POST -H "Authorization: Bearer dc_live_..." \ -H "Content-Type: application/json" \ "https://devil.club/api/v1/bookkeeping" \ -d '{ "entity_id": 42, "year": 2026, "month": 5, "movement_type": "gasto", "category": "profesional_legal", "counterparty_id": 12, "economic_purpose": "Honorarios legales — revisión contrato Q2", "document_id": 99, "expense": 1240.00, "transaction_date": "2026-05-12" }'

⚠️ Aviso: sin counterparty_id + economic_purpose + document_id, la entrada se crea pero no cuenta como sustancia económica. El prefill automático de Form 5472 (related-party transactions) y el dossier de defensa fiscal ignoran filas sin estas 3 piezas. Es silencioso pero crítico para tax filing.

ENUMS Set canónico bookkeeping

Valores canónicos español snake_case. Cualquier valor legacy (UPPER EN o Title Case) se mapea automáticamente vía dc.category_canonical_map y dc.movement_type_canonical_map. Para integraciones nuevas, envía directamente los valores canónicos.

movement_type — 7 valores

ValorSignificado
ingresoInflow operativo (P&L)
gastoOutflow operativo (P&L)
distribucionDistribución a socio (Form 1120 Sch K)
aportacionAportación de capital del socio
transferencia_internaTransferencia entre cuentas propias
transferencia_externaTransferencia a cuenta externa (no operacional)
ajusteAjuste manual contable

category — 28 valores

Agrupadas por group_label para tax filing prefill:

GrupoCategorías
INGRESOSventa_servicio, bonificacion_referido, interes_ganado, ingreso_otro
GASTOS_DEDUCIBLESpago_proveedor, software, hardware, marketing, hosting, profesional_legal, gestoria_llc, bancario, viaje, seguro, gasto_apertura, gasto_cierre, impuesto_irs, impuesto_estatal, gasto_otro
CAPITAL_FLOWSdistribucion, aportacion, prestamo_owner, prestamo_terceros, reembolso
TRANSFERENCIAStransferencia_interna, transferencia_externa
NO_DEDUCIBLESmulta_penalty (IRS § 162(f))
OTROSotro

relation_subtype en dc.counterparties — 5 valores (Form 5472 Part III)

ValorCuándo
selfEl owner es la contraparte (cuenta personal del socio)
self_rucAutónomo / sole-trader del owner (mismo NIF)
spouseCónyuge del owner
family_otherOtros familiares (padres, hijos, hermanos)
sibling_entityOtra entidad jurídica del owner (LLC US, SL ES, EAS, etc.)

Cuando una dc.counterparties.kind es OWNER o RELATED_ENTITY, un trigger DB-side garantiza automáticamente is_related_party = TRUE. No hace falta enviar el flag en la integración.

Ledger de Gobernanza

GET /v1/ledger read:ledger

Lista las transacciones de gobernanza/gestión. Incluye estado de decisiones, decisiones estratégicas y resoluciones del manager.

ParámetroTipoDescripción
entity_idintegerID de la entidad LLC (obligatorio si no se indica transaction_id)
transaction_idstringTransacción específica (ej: FGSL-2026-00042)
statusstringFiltrar: PENDING, RATIFIED, VETOED, REJECTED
POST /v1/ledger write:ledger

Envía una nueva solicitud de transacción para revisión del Manager. Crea una entrada PENDING en el ledger de gobernanza.

CampoTipoDescripción
entity_id obligatoriointegerID de la entidad LLC
amount obligatorionumberImporte de la transacción
category obligatoriostringOPEX, CAPITAL_CONTRIBUTION, OWNER_DISTRIBUTION, etc.
descriptionstringMotivo de la transacción
strategic_decisionstringJustificación estratégica
bankstringBanco desde el que ejecutar
exec_datedateFecha de ejecución solicitada
recurringstringno, monthly, quarterly, annual

Documentos

GET /v1/documents read:documents

Lista los documentos de una entidad. Incluye articles, EIN letters, actas, tax filings y más. Cada documento incluye hash SHA-256 y estado de verificación OpenTimestamps.

ParámetroTipoDescripción
entity_idintegerID de la entidad LLC (obligatorio si no se indica id)
idintegerID de documento específico
doc_typestringFiltrar: ARTICLES, EIN_LETTER, ACTA, 8822-B, etc.
GET /v1/documents/{id}/download read:documents

Descarga un documento propio usando la misma API key; no requiere sesión web ni token de navegador.

Entidad (LLC)

GET /v1/entity read:entity

Lista tus LLCs u obtén información detallada (servicios, tax filings, titularidad).

ParámetroTipoDescripción
idintegerID de entidad específica (omitir para listar todas)
PUT /v1/entity write:entity

Actualiza información de contacto/formación de la entidad.

CampoTipoDescripción
id obligatoriointegerID de la entidad
founder_namestringNombre del fundador/organizador
founder_addressstringDirección del fundador
founder_countrystringPaís del fundador
naicsstringCódigo NAICS del negocio

Perfil

GET /v1/profile read:profile

Obtén tu perfil de cuenta e identificadores (pasaporte, ITIN, etc.).

PUT /v1/profile write:profile

Actualiza tu información de contacto (nombre, teléfono, país).

Lucy — Informes y Propuestas

GET /v1/reports read:reports

Lista los informes generados por Lucy (mensuales, trimestrales, anuales). Incluye métricas, recomendaciones, alertas y decisiones propuestas.

POST /v1/reports write:reports

Responde a las recomendaciones de un reporte. Puedes aprobar, rechazar, modificar o aplazar cada recomendación.

# Aprobar recomendación #0, rechazar #1 curl -X POST -H "Authorization: Bearer dc_live_..." \ -H "Content-Type: application/json" \ -d '{ "report_id": 15, "decisions": [ {"recommendation_idx": 0, "decision": "APPROVED", "client_notes": "Adelante"}, {"recommendation_idx": 1, "decision": "REJECTED", "client_notes": "Ahora no"} ] }' \ https://devil.club/api/v1/reports

Pagos

GET /v1/payments read:payments

Consulta tu historial de pagos. Incluye detalles del servicio, importes y estado.

ParámetroTipoDescripción
entity_idintegerFiltrar por entidad
yearintegerFiltrar por año

Presencia Fiscal

GET /v1/presence read:presence

Consulta el registro de presencia fiscal geo-trazada. Devuelve días acumulados por país (con gap-fill automático), alertas de umbral 183 días y, opcionalmente, el calendario día a día.

ParámetroTipoDescripción
entity_idintegerRequerido. ID de la entidad
yearintegerAño fiscal (por defecto: año actual)
detailbooleanSi true, incluye el mapa día a día en calendar

Respuesta incluye summary (países + días), warnings (niveles: info / warning / danger / exceeded) y opcionalmente calendar (mapa YYYY-MM-DD → país).

Manejo de errores

Todos los errores siguen un formato consistente:

{ "error": "Descripción de lo que falló" }
Tabla de códigos HTTP emitidos por la API
CódigoSignificado
400Petición incorrecta — parámetros faltantes o inválidos
401No autorizado — API key inválida o no proporcionada
403Prohibido — IP no autorizada, scope insuficiente o sin titularidad
404No encontrado — el recurso no existe o no te pertenece
429Límite excedido — demasiadas peticiones, consulta el header Retry-After
500Error del servidor — contacta con soporte

Changelog

Cambios no destructivos se añaden sin preaviso. Cualquier cambio breaking se anuncia con mínimo 30 días de antelación al email de la cuenta y se publica aquí.

Historial de versiones públicas
FechaCambio
2026-04-18Añadido Quick start, pestañas curl/JS y copia-al-portapapeles en ejemplos.
2026-04Endpoint GET /v1/presence: presencia fiscal geo-trazada con avisos 183 días.
2026-03Endpoint GET /v1/documents/{id}/download: descarga directa con la misma API key.
2026-02Scopes read:reports / write:reports: respuesta a recomendaciones de Lucy.
2026-01Lanzamiento público v1: bookkeeping, ledger, documents, entity, profile, payments.

¿Necesitas ayuda? [email protected]

Recibe la guía y estrategias para tu LLC

v1.0.0 · local