---
title: "Retrieve a work schedule"
method: GET
path: "/companies/{company}/work-schedules/{schedule}"
tags: ["Work Schedules"]
---

# Retrieve a work schedule

`GET /companies/{company}/work-schedules/{schedule}`

## Request

- Base URL: `https://api.factuarea.com/v1`
- URL: `https://api.factuarea.com/v1/companies/{company}/work-schedules/{schedule}`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Retrieve a single work schedule by its `id` (UUID v7). A schedule belonging to another company returns 404 `work_schedule_not_found` (anti-enumeration).

## Path parameters

- `company` string, uuid, required
- `schedule` string, uuid, required

## Headers

- `Factuarea-Version` string, date

## Response `200`

- object
  - `data` WeeklySchedule, required: A fixed weekly work schedule for the Control Horario (time tracking) module. Defines, per weekday, the expected time ranges (from which the expected hours and the planned start time are derived). Its `mode` decides how balances are computed downstream: `validated` (the period is assumed fulfilled unless an exception) or `real_clocking` (only real clock-ins count).
    - `id` string, uuid, required: Opaque identifier of the work schedule, a UUID v7 (e.g. `01931b3e-7c4a-7f2e-9a8b-3c5d6e7f8a9b`).
    - `object` 'work_schedule', required: Always `work_schedule`.
    - `name` string, required: Human-readable name of the schedule (e.g. `Jornada partida`).
    - `mode` 'validated' | 'real_clocking', required: How the schedule computes balances: `validated` (period assumed fulfilled unless an exception) or `real_clocking` (only real clock-ins count).
    - `week_pattern` object[], required: Weekly pattern: one entry per configured weekday with its ordered, non-overlapping time ranges. A weekday absent from the list (or with an empty `ranges`) is a rest day.
      - `day` integer, required: ISO 8601 weekday (1 = Monday … 7 = Sunday).
      - `ranges` object[], required: Ordered, non-overlapping time ranges worked that day (empty = rest day).
        - `start` string, required: Range start time (HH:MM, 24h).
        - `end` string, required: Range end time (HH:MM, 24h).
    - `weekly_hours` number, float, required: Total weekly hours derived from the sum of all time ranges in the pattern.
    - `status` 'active' | 'archived', required: Lifecycle status: `active` (assignable) or `archived` (retired from use).
    - `created_at` string, date-time, nullable, required: Creation timestamp (ISO 8601).
    - `updated_at` string, date-time, nullable, required: Last-update timestamp (ISO 8601).

## Other responses

- `400`: `parameter_unknown` with `subcode` `retired_active_profile_header`: the retired `X-Active-Profile` header was sent; the company goes in the path. `parameter_invalid_format` on `Factuarea-Version`: the header is not a `YYYY-MM-DD` date. `unsupported_api_version`: the `Factuarea-Version` date is not a supported version.
- `401`: Missing or invalid API key.
- `403`: The request is authenticated but not allowed: the API key lacks the required scope (`insufficient_scope`), the plan does not include the public API or this feature (`addon_not_active`, `feature_not_available_in_plan`), or the module is not available with a test key (`module_not_available_in_sandbox`).
- `404`: The requested resource does not exist or belongs to another company.
- `429`: Rate limit exceeded. Retry after the duration in `Retry-After`.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/factuarea/apis/factuarea-public-api.md) · [All operations](https://skmtc.dev/factuarea/apis/factuarea-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/factuarea/apis/factuarea-public-api/revisions/718e77934422?raw)
