# List a version's languages

`GET /v1/email/templates/{template_ref}/versions/{version_id}/languages`

Returns every language the version holds, ordered by language tag, without the content itself, so listing a template with twenty-five languages stays small.

Each entry has the language's `revision` (send it back when you save that language) and its `content_hash`, so you can tell which languages changed since you last read them and fetch only those. Read a single language for its subject and bodies.

## Code samples

### CLI

```sh
bird email templates versions languages list <template-ref> <version-id>
```

### cURL

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

## Example response `200`

```json
{
  "data": [
    {
      "language": "pt-BR",
      "content_hash": "sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
    }
  ]
}
```

## Path parameters

- `template_ref` (string): The template's id (`emt_…`) or slug. A built-in `system` template's `bird_` slug also resolves here, to its one permanently published version.
- `version_id` (string)

## Response body

- `data` (array of object, required): Every language the version holds, ordered by language tag, without their content. Read a single language to get its content.
- `data.language` (string, required): The language, in its canonical form.
- `data.revision` (integer, required): This language's revision counter, to send back when you save it. It counts only this language's own changes.
- `data.content_hash` (nullable string): A hash over this language's content, prefixed with the algorithm that produced it (`sha256:`), so the algorithm can change without the field becoming ambiguous. It tells you whether a language differs without transferring the content, and is comparable only within one version of this API. Null for a language saved before fingerprints were recorded.
- `data.updated_at` (nullable string): When this language was last saved. Null if that is not recorded.
- `data.has_html` (boolean): Whether this language has an HTML body.
- `data.has_text` (boolean): Whether this language has a plain-text body.

## Related resources

- [How to build an email template](/learn/email/how-to-build-an-email-template) (video)
- [Email templates](/products/email/templates) (product)
- [Build your first integration](/learn/paths/integration) (course)
- [Email templates](/docs/guides/email/templates) (docs)

[Get an implementation brief](/learn/workspace?topic=email-templates)
