---
title: "List Contracts"
method: GET
path: "/api/contracts"
tags: ["contracts"]
---

# List Contracts

`GET /api/contracts`

## Query parameters

- `status` string, nullable
- `company_id` string, uuid, nullable
- `person_id` string, uuid, nullable
- `ids` string, nullable — Comma-separated contract UUIDs
- `person_ids` string, nullable — Comma-separated person UUIDs
- `page` integer
- `limit` integer

## Response `200`

Successful Response

- PaginatedResponseContractOut
  - `data` ContractOut[], required
    - `id` string, uuid, required
    - `company_id` string, uuid, required
    - `person_id` string, uuid, required
    - `service_tier` string, required
    - `billing_cycle` string, required
    - `monthly_value_cents` integer, required
    - `total_contract_value_cents` integer, nullable, required
    - `currency` string, required
    - `content_cadence` string, nullable, required
    - `batch_count` integer, nullable, required
    - `revenue_per_batch_cents` integer, nullable, required
    - `includes_commenting` boolean, required
    - `writer_owner` string, nullable, required
    - `editor_owner` string, nullable, required
    - `manager_owner` string, nullable, required
    - `interviewer_owner` string, nullable, required
    - `term_months` integer, nullable, required
    - `renewed_from_contract_id` string, uuid, nullable, required
    - `status` string, required
    - `payment_status` string, required
    - `external_source` string, nullable, required
    - `external_contract_id` string, nullable, required
    - `start_date` string, date-time, nullable, required
    - `end_date` string, date-time, nullable, required
    - `signed_at` string, date-time, nullable, required
    - `last_paid_at` string, date-time, nullable, required
    - `notes` string, nullable, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `total` integer, required — Total records matching the query (before pagination)
  - `page` integer, required — Current page number (1-indexed)
  - `limit` integer, required — Records per page (default 50, max 200)
  - `has_more` boolean, required — True if (page * limit) < total

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/rethoric/apis/rethoric-os.md) · [All operations](https://skmtc.dev/rethoric/apis/rethoric-os/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/rethoric/rethoric-os/revisions/76b6d39426f6/schema)
