> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.crehana.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.crehana.com/_mcp/server.

## Nuevo endpoint para enviar marcajes de asistencia

`POST /org/{slug}/time/attendance/marks/` registra una marca de asistencia de
una persona (entrada, inicio o fin de descanso, salida) con la hora real en que
ocurrió. Está pensado para relojes biométricos y sistemas de control de acceso.

```json
{
  "user_id": 97099,
  "mark_type": "ENTRY",
  "marked_at": "2026-10-07T09:00:00-06:00",
  "timezone": "America/Mexico_City"
}
```

La marca pasa por las mismas reglas que una hecha desde Crehana: se asigna al
turno del día, se clasifica por puntualidad y entra en la gestión diaria.
Reenviar la misma marca no la duplica: responde `200` con
`already_registered: true`.

`marked_at` lleva desfase o `Z`, y `timezone` es la zona IANA del lugar donde
se marcó. Requiere credenciales de un administrador de la organización.

Guía completa en
[Enviar marcajes de asistencia](/documentacion/casos-de-uso/enviar-marcajes),
y qué zona mandar en
[Zonas horarias](/documentacion/conceptos/zonas-horarias).

## Nuevo endpoint para asignar turnos

`POST /org/{slug}/time/attendance/shift-assignments/` asigna un turno de
Asistencia a una o más personas por un período. Está pensado para sistemas de
RR. HH. o de planificación que son dueños del horario y lo empujan a Crehana.

```json
{
  "shift_id": "4ed0f6c7-a2a7-4de7-90cd-ae8cf26aabb1",
  "user_ids": [97097, 97099],
  "start_date": "2026-10-13",
  "end_date": "2026-12-31"
}
```

La asignación es igual a una hecha desde Crehana: a partir de esas fechas las
marcas se comparan contra ese turno y la gestión diaria se recalcula. Si la
persona ya tenía un turno en esas fechas, el nuevo lo reemplaza. La llamada es
todo o nada: si alguna persona no pertenece a la organización, no se asigna a
nadie. Reenviar la misma asignación no la duplica.

Los turnos rotativos llevan además `start_cycle_id`. Requiere credenciales de
un administrador de la organización.

Guía completa en
[Asignar turnos](/documentacion/casos-de-uso/asignar-turnos).