Skip to main content
POST
Reservar una sesión

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.

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

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
client_id
string
required

Id de un cliente del estudio.

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

"cli_01jatfha5h4nkg77c3wfrvd3cw"

session_id
string
required

Id de una sesión (una fecha de una clase).

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

"ses_01jnb07m4yxxe0s687jf750tkv"

allow_waitlist
boolean
default:true

Con la sesión completa, true anota al cliente en la lista de espera (sin descontarle créditos hasta que entre) y false responde 409 session_full sin escribir nada.

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

Con dry_run=true, la vista previa. No se escribió nada.

Lo que haría la escritura, sin hacerla. Craqui la evalúa con las mismas reglas que el pedido real: si el pedido real se rechazaría, la vista previa responde el mismo error. Entre la vista previa y el pedido real algo puede cambiar (otra persona ocupa el último lugar), y entonces el real responde lo que corresponda en ese momento.

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

false si la vista previa es de tu estudio de prueba (claves crq_test_); true con claves crq_live_.

action
enum<string>
required

Qué escritura se evaluó: booking.create, booking.cancel o booking.set_attendance. La lista puede crecer.

Available options:
booking.create,
booking.cancel,
booking.set_attendance
result
object
required

La reserva como quedaría después de la escritura.

effects
object
required

Lo que la escritura le haría al saldo del cliente y a quién avisaría.

warnings
enum<string>[]
required

Lo que conviene saber, como códigos: waitlisted (la reserva queda en lista de espera), waitlist_promoted (cancelar hace entrar a otra persona de la lista de espera) y no_change (la reserva ya está así; el pedido real no cambia nada). La lista puede crecer.

Available options:
waitlisted,
waitlist_promoted,
no_change
summary
string
required

Lo mismo en una frase en español, para mostrarle a una persona. No nombra al cliente.