> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lithtrix.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Blobs

> Binary upload, download, list, metadata, soft-delete, and signed read URLs.

## Upload

```bash theme={null}
PUT /v1/blobs
Authorization: Bearer ltx_your_key
Content-Type: application/pdf

<raw bytes>
```

Multipart (`file` field) or raw body. Returns content-addressed `blob_id` (`b_` + 16 hex). Duplicate bytes → **200** idempotent. Enforces aggregate tier blob storage (**413** `BLOB_STORAGE_LIMIT`).

## Download

```bash theme={null}
GET /v1/blobs/{blob_id}
Authorization: Bearer ltx_your_key
```

Supports HTTP Range. Wrong agent or soft-deleted → **404** `BLOB_NOT_FOUND`.

## List

```bash theme={null}
GET /v1/blobs?page=1&per_page=50
Authorization: Bearer ltx_your_key
```

## Metadata

```bash theme={null}
GET /v1/blobs/{blob_id}/meta
Authorization: Bearer ltx_your_key
```

## Signed read URL

```bash theme={null}
GET /v1/blobs/{blob_id}/signed-url?expires_in=3600
Authorization: Bearer ltx_your_key
```

## Delete

```bash theme={null}
DELETE /v1/blobs/{blob_id}
Authorization: Bearer ltx_your_key
```

**204** when the request is valid: soft-deletes an active blob, or is an idempotent no-op if the blob is already gone for this agent (including never existed or another agent’s object — same **204** so existence is not leaked). Malformed `blob_id` (not `b_` + 16 hex) → **404** `BLOB_NOT_FOUND`.

When a row actually transitions to soft-deleted, aggregate `blob_storage_bytes` refreshes. Storage objects are removed later by reconciliation after a configurable grace period.

## Billing

See [Billing](/api-reference/billing): `blob_storage_bytes` / `blob_storage_limit_bytes` for aggregate object storage (separate from memory embedding bytes).

## MCP

Static tool schemas: `GET https://lithtrix.ai/mcp/lithtrix-blob-upload.json` (and `-download`, `-list`, `-meta`, `-delete`, `-signed-url`).
