# Register a recording made elsewhere

> The first of two requests: this creates the row and decides from the file name whether it is audio or a transcript. Send the bytes to the content endpoint afterwards. Counts against the monthly allowance like any other recording.

`POST https://api-notetaker.nabrah.ai/ext/v1/uploads`

Requires an API key in the `Authorization` header.

The first of two requests: this creates the row and decides from the file name whether it is audio or a transcript. Send the bytes to the content endpoint afterwards. Counts against the monthly allowance like any other recording.

## Body

- `title` (string)
- `filename` (string, required)
- `contentType` (string)
- `byteSize` (integer)
- `startsAt` (string · date-time)
- `kind` (enum) One of: `audio`, `transcript`.

## Example request body

```json
{
  "title": "string",
  "filename": "string",
  "contentType": "string",
  "byteSize": 0,
  "startsAt": "2026-01-01T09:00:00.000Z",
  "kind": "audio"
}
```

## Responses

- `201` — One upload.
- `401` — No key, an unknown key, or one that has been revoked or has expired.
- `403` — The key is read only, or lacks the reach for this route.
- `404` — No such record — or one that belongs to another account.
- `422` — The body or query failed validation; `details` names the field.
- `429` — Too many requests. `Retry-After` says how long to wait.

### 201 example

```json
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "runId": "00000000-0000-0000-0000-000000000000",
    "reference": "string",
    "title": "string",
    "kind": "audio",
    "stage": "pending",
    "filename": "string",
    "byteSize": 0,
    "durationMs": 0,
    "startsAt": "2026-01-01T09:00:00.000Z",
    "createdAt": "2026-01-01T09:00:00.000Z",
    "updatedAt": "2026-01-01T09:00:00.000Z",
    "error": "string",
    "hasNotes": true
  }
}
```

### 401 example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": [
      {
        "path": "string",
        "message": "string"
      }
    ]
  }
}
```

### 403 example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": [
      {
        "path": "string",
        "message": "string"
      }
    ]
  }
}
```

### 404 example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": [
      {
        "path": "string",
        "message": "string"
      }
    ]
  }
}
```

### 422 example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": [
      {
        "path": "string",
        "message": "string"
      }
    ]
  }
}
```

### 429 example

```json
{
  "error": {
    "code": "string",
    "message": "string",
    "details": [
      {
        "path": "string",
        "message": "string"
      }
    ]
  }
}
```
