Skip to main content
POST
Dar de baja una membresía

Authorizations

Authorization
string
header
required

Clave del negocio. sk es una clave completa (todo lo que el rol de quien la creó puede dar) y rk una restringida a los permisos que se eligieron al crearla. Solo se usa desde un servidor: un pedido desde un navegador se rechaza con browser_not_allowed.

Scopes

memberships:write

Asignar, cancelar, congelar y descongelar membresías.

Headers

Craqui-Version
string

Versión de la API para este pedido (YYYY-MM-DD). Si no la mandas, se usa la versión fijada en la clave cuando se creó.

Pattern: ^\d{4}-\d{2}-\d{2}$
Example:

"2026-12-01"

Idempotency-Key
string

Obligatorio en todo pedido que crea o cambia algo, salvo con dry_run=true. Un valor único por operación (por ejemplo un UUID). Si repites el pedido con la misma clave y el mismo cuerpo dentro de 24 horas, recibes la misma respuesta (con el header Idempotent-Replayed: true) sin que se repita el efecto, también la misma respuesta de error: para intentar de nuevo algo que se rechazó, usa una clave nueva. Con un dry_run=true la clave se ignora y no se guarda: el pedido real puede usar la misma. Pasadas las 24 horas, repetir una reserva con la misma clave y el mismo cuerpo sigue devolviendo la reserva que se hizo (como está ahora), y la misma clave con otro cuerpo responde idempotency_key_reused.

Required string length: 1 - 255

Path Parameters

id
string
required

El id de la membresía (mem_…). Id de una membresía de un cliente.

Pattern: ^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example:

"mem_01j1q27t44qvr6v2s50cv4rbvq"

Query Parameters

dry_run
boolean

true para ver qué pasaría sin hacerlo: Craqui evalúa el pedido con las mismas reglas que el real y responde 200 con un objeto preview, sin escribir nada ni avisarle a nadie. Cuenta para el límite de escrituras. false (o sin el parámetro) hace el pedido real. Es el único parámetro de consulta de una escritura.

Body

application/json
at
enum<string>
required

period_end programa la baja al fin del período; now la da de baja hoy.

Available options:
period_end,
now
current_fee
enum<string> | null

Obligatorio con at: "now" (400 current_fee_choice_required si falta): keep deja la cuota del período en curso para cobrar; retire la da de baja si no está pagada. Con period_end no se manda.

Available options:
keep,
retire,
null
advance_payment_unpaid
enum<string> | null

Solo si la membresía tiene un pago por adelantado con la cuota sin pagar (409 advance_payment_choice_required con amount_at_stake si hace falta y no vino): prorate cobra solo lo usado, keep lo cobra entero, retire no lo cobra.

Available options:
prorate,
keep,
retire,
null
notify
boolean
default:true

false para no enviarle al cliente los avisos de esta escritura (email, WhatsApp). Necesita el permiso notifications:suppress; sin él, la respuesta es 403 scope_required. Nunca silencia el aviso a otra persona: si una cancelación hace entrar a alguien de la lista de espera, esa persona se entera igual. Los recordatorios posteriores salen igual. Por defecto true. Tu estudio de prueba no le avisa a nadie, diga lo que diga este campo.

Response

La membresía como quedó, o con dry_run=true la vista previa (object dice cuál).

La membresía como quedó, con changed.

id
string
required

Id de una membresía de un cliente.

Pattern: ^mem_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example:

"mem_01j1q27t44qvr6v2s50cv4rbvq"

object
string
required
Allowed value: "membership"
livemode
boolean
required

false si el objeto es de tu estudio de prueba (claves crq_test_); true con claves crq_live_.

client_id
string | null
required

El cliente. null si la membresía es de alguien que no es cliente del estudio.

Pattern: ^cli_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example:

"cli_01jatfha5h4nkg77c3wfrvd3cw"

membership_plan_id
string
required

Id de un plan de membresía.

Pattern: ^mpl_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example:

"mpl_01jt05nvk11xa1zm1pwve2qj7r"

status
enum<string>
required

active, paused (congelada), suspended, pending_payment, cancelled o expired. La lista puede crecer: trata un valor que no conoces como una membresía que no da créditos.

Available options:
active,
paused,
suspended,
pending_payment,
cancelled,
expired
current_period_start
string<date-time>
required

Instante en RFC 3339 con el offset del negocio en ese momento.

Example:

"2026-12-02T19:00:00-03:00"

current_period_end
string<date-time>
required

Instante en RFC 3339 con el offset del negocio en ese momento.

Example:

"2026-12-02T19:00:00-03:00"

renews_at
string<date-time> | null
required

Cuándo se renueva sola: el fin del período actual si la membresía está active y su plan se renueva solo; si no, null.

Example:

"2026-12-02T19:00:00-03:00"

next_credit_date
string<date> | null
required

La fecha local en que recibe los próximos créditos; null si no hay una prevista.

Pattern: ^\d{4}-\d{2}-\d{2}$
Example:

"2026-12-02"

started_at
string<date-time>
required

Instante en RFC 3339 con el offset del negocio en ese momento.

Example:

"2026-12-02T19:00:00-03:00"

cancelled_at
string<date-time> | null
required

Instante en RFC 3339 con el offset del negocio en ese momento.

Example:

"2026-12-02T19:00:00-03:00"

suspension_reason
string | null
required

Por qué se suspendió, como texto; null si no está suspendida.

discount
object | null
required

El descuento que tiene la membresía; null si no tiene.

active_freeze_id
string | null
required

El congelamiento en curso o programado; null si no hay. El detalle está en GET /v1/memberships/{id}/freezes.

Pattern: ^frz_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example:

"frz_01jtk6e3z2vm9ych2cc7kadyja"

created_at
string<date-time>
required

Instante en RFC 3339 con el offset del negocio en ese momento.

Example:

"2026-12-02T19:00:00-03:00"

updated_at
string<date-time>
required

Instante en RFC 3339 con el offset del negocio en ese momento.

Example:

"2026-12-02T19:00:00-03:00"

changed
boolean
required

false si la baja ya estaba programada: no cambió nada y no se avisó de nuevo.