---
title: "Create up to 50 time logs in one call"
method: POST
path: "/time-logs/batch"
---

# Create up to 50 time logs in one call

`POST /time-logs/batch`

## Request

- Base URL: `https://api.reps-log.com/v1`
- URL: `https://api.reps-log.com/v1/time-logs/batch`
- Auth: HTTP bearer

Each entry is validated and created independently (same rules and duplicate protection as `createTimeLog`), so one bad row never blocks the rest. Always returns 200 with `created` (each with its input `index`) and `failed` (`index`, `code`, `message`); check `failed` for partial success. A malformed request (no entries, more than 50) is a 400. Idempotent via the `Idempotency-Key` header.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `entries` object[], required
    - `propertyId` string, required
    - `description` string, required
    - `durationMinutes` integer, required
    - `categoryId` string
    - `performedOn` string, date
    - `performedBy` 'self' | 'spouse'

## Response `200`

Batch processed (possibly with per-entry failures)

- object
  - `ok` true, required
  - `data` object, required
    - `created` object[], required
      - `index` integer
      - `duplicate` boolean
      - `id` string
      - `url` string
      - `propertyId` string
      - `categoryId` string
      - `description` string
      - `durationMinutes` number
      - `performedOn` string
      - `performedBy` string
      - `isSTR` boolean
      - `source` string
    - `failed` object[], required
      - `index` integer
      - `code` string
      - `message` string
      - `details` unknown

## Other responses

- `400`: Validation / bad request
- `401`: Unauthenticated
- `403`: Forbidden scope / not Premium
- `404`: Not found
- `429`: Rate limited

---

[API](https://skmtc.dev/reps-log/apis/repslog-api.md) · [All operations](https://skmtc.dev/reps-log/apis/repslog-api/llms.txt) · [OpenAPI document](https://skmtc.dev/reps-log/apis/repslog-api/revisions/304ab3847932?raw)
