---
title: "Get Inventory Report"
method: GET
path: "/v1/farm/{farm_id}/reports/inventory"
tags: ["reports"]
---

# Get Inventory Report

`GET /v1/farm/{farm_id}/reports/inventory`

## Request

- Base URL: `https://api.ranch.bot`
- URL: `https://api.ranch.bot/v1/farm/{farm_id}/reports/inventory`
- Auth: HTTP bearer

Current farm reports HTTP operation. External credential scopes: read:records. Minimum farm role: READER. Production rate limit: 100 requests per 15-minute window per device account, 1000 per browser session, otherwise per client IP. RateLimit headers report the current window; respect Retry-After on 429.

## Path parameters

- `farm_id` string, uuid, required

## Query parameters

- `preset` 'month' | 'quarter' | 'year' | 'custom'
- `from` string
- `to` string

## Response `200`

Success

- object
  - `farm` object, required
    - `id` string, required
    - `name` string, required
    - `species` string, required
  - `period` object, required
    - `start` string, required
    - `end` string, required
  - `generatedAt` string, required
  - `totals` object, required
    - `opening` number, required
    - `births` number, required
    - `purchases` number, required
    - `deaths` number, required
    - `sales` number, required
    - `transfers` number, required
    - `closing` number, required
  - `byGroup` object[], required
    - `group` object, required
      - `id` string, nullable, required
      - `name` string, required
    - `opening` number, required
    - `births` number, required
    - `purchases` number, required
    - `deaths` number, required
    - `sales` number, required
    - `transfers` number, required
    - `closing` number, required
  - `byCategory` object, required
  - `reconciliation` object, required
    - `closingCount` number, required
    - `ledgerAdditions` number, required
    - `ledgerRemovals` number, required
    - `animalAdditions` number, nullable, required: Null when no independent management-entry evidence exists; profile creation is not an attested arrival.
    - `additionsDrift` number, nullable, required
    - `drift` boolean, required
    - `managementEvidenceIncomplete` boolean, required
    - `notes` string[], required
  - `births` object: Recorded birth biology, separate from operation inventory admissions.
    - `recorded_events` number, required
    - `linked_offspring` number, required
    - `reported_total` number, required
    - `reported_total_known` number, required
    - `reported_total_unknown` number, required
  - `operation` object
    - `inventory_additions` number, required
    - `arrival_evidence` 'incomplete', required
  - `unclassifiedRecords` object[], required
    - `id` string, required
    - `name` string, required
    - `type` string, required
    - `applied_at` string, required
    - `headCount` number, required
  - `records` object[], required
    - `id` string, required
    - `name` string, required
    - `description` string, nullable, required
    - `type` string, required
    - `applied_at` string, required
    - `category` 'BIRTH' | 'PURCHASE' | 'DEATH' | 'SALE' | 'TRANSFER' | 'OTHER', required
    - `groupIds` string[], required
    - `headCount` number, required
    - `headCountKnown` boolean, required
  - `preset` 'custom' | 'month' | 'quarter' | 'year', required

## Other responses

- `400`: Request validation failed.
- `401`: Missing/invalid authentication or insufficient farm role.
- `403`: Missing required scope or credential type is disallowed.
- `404`: Resource or active farm membership not found.
- `429`: Rate limit exceeded. Retry after the indicated delay.
- `500`: Unexpected server failure.

---

[API](https://skmtc.dev/ranch/apis/ranch-bot-http-api.md) · [All operations](https://skmtc.dev/ranch/apis/ranch-bot-http-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ranch/apis/ranch-bot-http-api/revisions/24109d33fa02?raw)
