# Retrieve Campaign Version

`GET https://api.inboxjot.com/v1/campaigns/{campaign_id}/versions/{version_id}`

Returns one version with its fields and rendered HTML. Needs a Full key. A key limited to one domain answers 403.

## Path Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `campaign_id` | string | Yes | The campaign id. |
| `version_id` | string | Yes | The version id. |

## Response

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | No | The version id. |
| `reason` | string | No | Why the version exists. |
| `name` | string \| null | No | The name someone gave it. `null` for an automatic version. A named version does not expire. |
| `editors` | object[] | No | Who edited since the version before. |
| `editors[].kind` | string | No | `user`, `agent` or `api`. |
| `editors[].id` | string | No | The id of the person or connection. |
| `editors[].name` | string | No | The name at the time of the edit. |
| `created_at` | string | No | When it was saved. |
| `from` | string | No | The from address in this version. |
| `reply_to` | string \| null | No | The reply-to address in this version. |
| `subject` | string | No | The subject in this version. |
| `preheader` | string | No | The preview text in this version. |
| `html` | string | No | The rendered HTML, with variables kept as placeholders. |
| `text` | string | No | The plain text version. |
| `content` | object | No | The editor document. |

## Request

cURL:

```bash
curl -X GET https://api.inboxjot.com/v1/campaigns/cpg_06d2mfk8r7hm4ps9wb2kd/versions/ver_06d2mfk8r5cx3nd8vt1qb \
  -H "Authorization: Bearer $INBOXJOT_API_KEY"
```

## Responses

| Status | Description |
| --- | --- |
| 200 | Returns the version. |
| 400 | A path parameter is invalid. |
| 401 | The API key is missing, revoked or expired. |
| 403 | The key is a Sending key or is limited to one domain, or the request comes from outside its IP allowlist. |
| 404 | The campaign or the version does not exist. |
| 429 | Too many requests for this key. Wait for the seconds in the Retry-After header. |
| 500 | Something failed on our side. Retry later. |

200:

```json
{
  "id": "ver_06d2mfk8r5cx3nd8vt1qb",
  "reason": "manual",
  "name": "Launch Copy",
  "editors": [
    {
      "kind": "user",
      "id": "usr_06d2mfk8r3bt6kq2zn7wc",
      "name": "Suhasinee"
    }
  ],
  "created_at": "2026-10-21T09:00:00.000Z",
  "from": "Acme <hello@acme.dev>",
  "reply_to": null,
  "subject": "Welcome to Acme, {{first_name}}",
  "preheader": "Here is how to get started",
  "html": "<!DOCTYPE html><html>…</html>",
  "text": "Hi {{first_name}}, welcome to Acme…",
  "content": {
    "type": "doc",
    "content": []
  }
}
```

400:

```json
{
  "name": "validation_error",
  "status": 400,
  "message": "length is greater than 100",
  "errors": [
    {
      "message": "length is greater than 100",
      "location": "campaign_id"
    }
  ],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```

401:

```json
{
  "name": "unauthorized",
  "status": 401,
  "message": "Unauthorized",
  "errors": [],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```

403:

```json
{
  "name": "forbidden",
  "status": 403,
  "message": "This key cannot be used from 203.0.113.7",
  "errors": [],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```

404:

```json
{
  "name": "not_found",
  "status": 404,
  "message": "Campaign not found",
  "errors": [],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```

429:

```json
{
  "name": "rate_limit_exceeded",
  "status": 429,
  "message": "Too many attempts. Try again later.",
  "errors": [],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```

500:

```json
{
  "name": "unknown_error",
  "status": 500,
  "message": "Something went wrong. Please try again later.",
  "errors": [],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```
