Skip to main content
POST
Marcar la asistencia

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

Path Parameters

id
string
required

El id de la reserva (bkg_…). Id de una reserva.

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

"bkg_01jx9eak0437zdf0yw0atg7g0r"

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
status
enum<string>
required

attended (presente) o no_show (ausente).

Available options:
attended,
no_show
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 reserva como quedó, o con dry_run=true la vista previa (object dice cuál).

La reserva de un cliente en una sesión.

Volver a reservar una sesión que el cliente había cancelado reusa el mismo bkg_: el id es uno por cliente y sesión, no uno por intento. booked_at es el del último intento.

id
string
required

Id de una reserva.

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

"bkg_01jx9eak0437zdf0yw0atg7g0r"

object
string
required
Allowed value: "booking"
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 quien reservó no es cliente del estudio (por ejemplo, alguien del equipo).

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

"cli_01jatfha5h4nkg77c3wfrvd3cw"

session_id
string | null
required

La sesión. null si la sesión se borró.

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

"ses_01jnb07m4yxxe0s687jf750tkv"

status
enum<string>
required

confirmed, waitlisted, cancelled, attended o no_show. La lista puede crecer: trata un valor que no conoces como una reserva que no ocupa lugar.

Available options:
confirmed,
waitlisted,
cancelled,
attended,
no_show
credits_charged
integer
required

Los créditos que se descontaron al reservar (0 en lista de espera).

waitlist_position
integer | null
required

El lugar en la lista de espera; null fuera de ella.

booked_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"

free_cancel_until
string<date-time> | null
required

Hasta cuándo cancelar devuelve el crédito, con el plazo de la clase, de su disciplina o del estudio, y la regla de la lista de espera. Es una predicción: lo decide Craqui al cancelar. null si la reserva no está confirmed ni waitlisted, o si la sesión ya empezó.

Example:

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

recurring
boolean
required

Si la reserva salió de una reserva fija.

credit_refunded
boolean
required

Si se le devolvió el crédito de esta reserva (desde su último booked_at).

source
enum<string>
required

De dónde salió la reserva: api, recurring (una reserva fija), aggregator (una plataforma de terceros) o craqui (el estudio o el cliente en Craqui). La lista puede crecer.

Available options:
api,
recurring,
aggregator,
craqui
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"

client
object | null

Solo con expand[]=client (pide clients:read). null si client_id es null.

session
object | null

Solo con expand[]=session (pide sessions:read). null si session_id es null.