---
title: "Upload File"
method: POST
path: "/v1/file/upload"
tags: ["files"]
---

# Upload File

`POST /v1/file/upload`

## Request

- Base URL: `https://api.ranch.bot`
- URL: `https://api.ranch.bot/v1/file/upload`
- Auth: HTTP bearer

Current files HTTP operation. External credential scopes: write:records. Access is resolved for the authenticated user or by the endpoint-specific OAuth checks. Direct requests execute without an app confirmation screen. 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. Accepted types: JPEG, PNG, GIF, WebP images (10 MB each); MP4, QuickTime and AVI video (100 MB each); JSON, PDF and CSV documents (5 MB each). Maximum 10 files per request.

## Query parameters

- `entity_type` 'animal' | 'group' | 'record' | 'user'
- `entity_id` string, uuid

## Response `201`

Success

- object
  - `success` boolean, required
  - `errors` object[], required
  - `data` object, required
    - `files` object[], required
      - `id` string, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
      - `name` string, required
      - `is_active` boolean, required
      - `mime_type` string, required
      - `size` number, required
      - `url` string, required

## Other responses

- `400`: Error
- `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)
