### Upload a billing file for savings analysis

`post/v1/org/{org_id}/uploads`

Accepts a multipart PDF or CSV billing file, stores it in Archera's invoice upload bucket, and returns an upload ID. Use this upload ID when invoking the Savings Analysis MCP tool. The upload status workflow is: PENDING before storage begins, PROCESSING while the file is being transferred, COMPLETE once it is available for analysis, and ERROR if storage fails.

#### Path parameters

- `org_id` string · uuid Required

#### Body

- `multipart/form-data`
  - `description` string · max: 255 · nullable Optional
  - `files` string · binary Write-only Required

#### Responses

- **201 Created**

- `application/json`
      - `id` string · uuid Read-only Required
      - `created_at` string · date-time Read-only Required
      - `org_id` string · max: 50 Read-only Required
      - `file_name` string · max: 255 Read-only Required
      - `content_type` string · max: 255 Read-only Required
      - `size_bytes` integer Read-only Required
      - `description` string · max: 255 · nullable Read-only Required
      - `upload_status` string · enum Read-only Required Possible values: `PENDING`, `PROCESSING`, `COMPLETE`, `ERROR`
      - `source` undefined · enum Read-only Required Possible values: `agent_upload`, `attachment`, `partner_api`
      - `detected_type` string · max: 64 · nullable Read-only Required
      - `available_actions` string[] Read-only Optional

- **400 Bad request**   
- **401 Unauthorized**   
- **403 Forbidden**   
- **404 Not found**   
- **405 Method not allowed**   
- **409 Conflict**   
- **422 Unprocessable Content**   
- **500 Internal server error**   
- **default Default error response**

#### Example Request

```
POST /v1/org/{org_id}/uploads HTTP/1.1
Content-Type: multipart/form-data
Accept: */*
Content-Length: 36

{
  "description": null,
  "file": "binary"
}
```

#### Example Response

```
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "created_at": "2026-07-27T21:08:04.625Z",
  "org_id": "text",
  "file_name": "text",
  "content_type": "text",
  "size_bytes": 1,
  "description": null,
  "upload_status": "PENDING",
  "source": "agent_upload",
  "detected_type": null,
  "available_actions": ["text"]
}
```

### Get uploaded billing file status

`get/v1/org/{org_id}/uploads/{upload_id}`

Returns metadata and upload status for a partner API upload. Clients can poll this endpoint until `upload_status` is COMPLETE, then pass the upload ID to the Savings Analysis MCP tool.

#### Path parameters

- `org_id` string · uuid Required
- `upload_id` string · uuid Required

#### Responses

- **200 OK**

- **400 Bad request**   
- **401 Unauthorized**   
- **403 Forbidden**   
- **404 Not found**   
- **405 Method not allowed**   
- **409 Conflict**   
- **500 Internal server error**   
- **default Default error response**

#### Example Request

```
GET /v1/org/{org_id}/uploads/{upload_id} HTTP/1.1
Accept: */*
```

#### Example Response
