Skip to main content
POST
Congelar 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

Lleva ends_on o until_notice: true, uno de los dos.

starts_on
string | null

today o una fecha YYYY-MM-DD del calendario del estudio, entre hoy y la próxima renovación. Por defecto, hoy. Si la membresía ya tiene un congelamiento abierto, no lo mandes (o manda su mismo inicio): el pedido cambia el día de vuelta de ese congelamiento (409 membership_frozen con otro inicio).

Example:

"today"

ends_on
string<date> | null

El día que vuelve, en el calendario del estudio.

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

"2026-12-02"

until_notice
boolean
default:false

true en lugar de ends_on: congelada hasta que se descongele.

cancel_bookings
boolean
default:false

Si el cliente tiene reservas en esas fechas: true las cancela y devuelve sus créditos; false (por defecto) responde 409 bookings_in_freeze_window con booking_ids.

Response

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

La membresía de un cliente a un plan. Una membresía anulada o una compra que no se terminó no existen para la API: no se listan y su id responde not_found.

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"