# Get a template version

`GET /v1/whatsapp/templates/{template_ref}/versions/{version_id}`

Returns one version: the content of every language it holds and what its submission did with each.

## Code samples

### TypeScript

```ts
const version = await bird.whatsapp.templates.versions.get(
  "bird_otp",
  "wav_01ky4x8e4genzb7way45txfkm1",
);
console.log(version.id, Object.keys(version.languages));
```

### Python

```py
version = client.whatsapp.templates.versions.get("bird_otp", "wav_01ky4x8e4genzb7way45txfkm1")
print(version.id, list(version.languages))
```

### Go

```go
version, err := client.Whatsapp.Templates.Versions.Get(context.Background(), "bird_otp", "wav_01ky4x8e4genzb7way45txfkm1")
if err != nil {
	log.Fatal(err)
}
fmt.Println(version.Id, len(version.Languages))
```

### PHP

```php
$version = $bird->whatsapp->templates->versions->get('bird_otp', 'wav_01ky4x8e4genzb7way45txfkm1');
echo $version->getVersionNumber();
```

### CLI

```sh
bird whatsapp templates versions get <template-ref> <version-id>
```

### cURL

```sh
curl -X GET "https://us1.platform.bird.com/v1/whatsapp/templates/{template_ref}/versions/{version_id}" \
  -H "Authorization: Bearer $TOKEN"
```

## Example response `200`

```json
{
  "id": "wav_01krdgeqcxet5s7t44vh8rt9mg",
  "template_id": "wat_01krdgeqcxet5s7t44vh8rt9mg",
  "version_number": 4,
  "submitted_at": "2026-07-20T11:04:00Z",
  "languages": {
    "en": {
      "status": "approved",
      "components": [
        {
          "type": "body",
          "text": "Your verification code is {{1}}.",
          "example_parameters": [
            {
              "type": "text",
              "text": "123456"
            }
          ]
        }
      ]
    }
  },
  "created_at": "2026-07-20T10:31:00Z"
}
```

## Path parameters

- `template_ref` (string): Template ID (`wat_` prefix) or slug. A value that parses as a valid ID resolves by ID; any other value resolves as a slug.
- `version_id` (string): ID of the template version (`wav_` prefix), as returned by the version list.

## Response body

- `id` (string, required): Stable Bird identifier for the version.
- `template_id` (string, required): The template this version belongs to.
- `version_number` (nullable integer): The version's sequence number, assigned when it is submitted. Null on a draft, which has not been submitted and has no place in the sequence yet.
- `submitted_at` (nullable string, required): When this version was submitted to Meta. Null on a draft, which has not been submitted, and null for a built-in template's version, which Bird ships already approved rather than submitting on your behalf.
- `languages` (object, required): This version's content, keyed by BCP-47 language tag, with what its submission did with each language.
- `created_at` (nullable string, required): When the version was opened. Null for a built-in template's version, which Bird ships rather than stores.

## Related resources

- [Should I use a Bird SDK or call the API directly?](/explained/platform/should-i-use-an-sdk-or-call-the-api-directly) (answer)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)

[Get an implementation brief](/learn/workspace?topic=api-basics)
