Addons

/v1/addons — productos recurrentes reutilizables que se agregan a una suscripción existente para aumentar su monto de cobro por periodo. A diferencia de un Plan, un addon no se suscribe directamente: se define una sola vez en tu catálogo y luego se adjunta a una o varias suscripciones usando los endpoints de Subscriptions.

El objeto Addon

{
  "id": "addon_01HZXK7QJ5M8Z9X2R3TVQ7A1B2",
  "code": "soporte-prioritario",
  "name": "Soporte prioritario",
  "price_monthly_cents": 1500000,
  "price_annual_cents": 15000000,
  "description": "Atención en menos de 1 hora hábil",
  "active": true,
  "created_at": "2026-09-12T15:00:00Z"
}
CampoTipoDescripción
idstringIdentificador único del addon
codestringCódigo único y legible
namestringNombre visible del addon
price_monthly_centsintegerPrecio mensual, en centavos COP
price_annual_centsinteger | nullPrecio anual, en centavos COP
descriptionstring | nullDescripción libre
activebooleanSi el addon puede adjuntarse a suscripciones
created_atdatetimeFecha de creación (ISO-8601 UTC)

Crear un addon

POST /v1/addons

Request body

{
  "code": "soporte-prioritario",
  "name": "Soporte prioritario",
  "price_monthly_cents": 1500000,
  "price_annual_cents": 15000000,
  "description": "Atención en menos de 1 hora hábil",
  "active": true
}
CampoTipoRequeridoDescripción
codestringSíCódigo único por desarrollador y entorno
namestringSíNombre visible
price_monthly_centsintegerSíPrecio mensual en centavos COP
price_annual_centsintegerNoPrecio anual en centavos COP; si se omite se usa price_monthly_cents * 12 en ciclos anuales
descriptionstringNoDescripción libre
activebooleanNoPor defecto true

Response — 201 Created

Devuelve el objeto Addon creado.

curl -X POST https://api.rekurra.dev/v1/addons \
  -H "Authorization: Bearer rk_live_XXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "soporte-prioritario",
    "name": "Soporte prioritario",
    "price_monthly_cents": 1500000
  }'

Errores posibles

Statuserror.typeCausa
400invalid_requestFalta code o name, o price_monthly_cents no es positivo
401authentication_errorAPI key inválida o ausente
409invalid_requestYa existe un addon con ese code

Listar addons

GET /v1/addons

Soporta paginación estándar: ?limit= (default 25, máx 100) y ?starting_after=<id>.

curl "https://api.rekurra.dev/v1/addons?limit=25" \
  -H "Authorization: Bearer rk_live_XXXXXXXXXXXXXXXXXXXXXXXX"

Response — 200 OK

{ "data": [ /* Addon[] */ ], "has_more": false, "next_cursor": null }

Obtener un addon

GET /v1/addons/{id}

curl https://api.rekurra.dev/v1/addons/addon_01HZXK7QJ5M8Z9X2R3TVQ7A1B2 \
  -H "Authorization: Bearer rk_live_XXXXXXXXXXXXXXXXXXXXXXXX"

Errores posibles

Statuserror.typeCausa
404invalid_requestEl addon no existe o no pertenece a tu cuenta

Actualizar un addon

PATCH /v1/addons/{id}

Acepta cualquier subconjunto de los campos de creación (excepto code).

curl -X PATCH https://api.rekurra.dev/v1/addons/addon_01HZXK7QJ5M8Z9X2R3TVQ7A1B2 \
  -H "Authorization: Bearer rk_live_XXXXXXXXXXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -d '{ "price_monthly_cents": 2000000 }'

Errores posibles

Statuserror.typeCausa
400invalid_requestCampo con formato inválido
404invalid_requestEl addon no existe

Desactivar un addon

DELETE /v1/addons/{id}

Desactivación suave: marca active: false. Las suscripciones que ya tienen este addon adjunto no se ven afectadas, pero ya no podrá adjuntarse a nuevas suscripciones. No elimina el historial de uso.

curl -X DELETE https://api.rekurra.dev/v1/addons/addon_01HZXK7QJ5M8Z9X2R3TVQ7A1B2 \
  -H "Authorization: Bearer rk_live_XXXXXXXXXXXXXXXXXXXXXXXX"

Response — 200 OK

Devuelve el objeto Addon con active: false.