# List an SMS template version's languages

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

Returns the languages a version holds, ordered by canonical language tag, without their text. Each summary includes the revision and content hash needed to detect changes. A version holds at most 25 languages.

## Code samples

### TypeScript

```ts
const { data } = await bird.smsTemplates.versions.languages.list(
  "bird_otp_verification",
  "smv_01ky4x8e4genzb7way45txfkm1",
);
for (const language of data) console.log(language.language, language.revision);
```

### Python

```py
languages = client.sms_templates.versions.languages.list(
    "bird_otp_verification", "smv_01ky4x8e4genzb7way45txfkm1"
)
for language in languages.data:
    print(language.language, language.revision)
```

### Go

```go
languages, err := client.SmsTemplates.Versions.Languages.List(context.Background(), "bird_otp_verification", "smv_01ky4x8e4genzb7way45txfkm1")
if err != nil {
	log.Fatal(err)
}
for _, language := range languages.Data {
	fmt.Println(language.Language, *language.Revision)
}
```

### PHP

```php
$languages = $bird->smsTemplates->versions->languages->list(
    'bird_otp_verification',
    'smv_01ky4x8e4genzb7way45txfkm1',
);
foreach ($languages->getData() ?? [] as $language) {
    echo $language->getLanguage(), ' ', $language->getRevision(), "\n";
}
```

### CLI

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

### cURL

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

## Example response `200`

```json
{
  "data": [
    {
      "language": "en",
      "revision": 1,
      "content_hash": "sha256:3d948846f5f773fb7bed8ab81b57f3d0ff2cbff24cb549718f4d389f1ab0300a",
      "updated_at": "2026-09-10T09:00:00Z"
    }
  ]
}
```

## Path parameters

- `template_ref` (string): The template's ID (`smt_…`) or slug.
- `version_id` (string): The version whose languages to list.

## Response body

- `data` (array of object, required): The version's languages ordered by canonical tag, without text.
- `data.language` (string, required): The language in canonical BCP-47 form.
- `data.revision` (integer, required): This language's revision counter.
- `data.content_hash` (string, required): A fingerprint of SMS template text, prefixed with its algorithm. Compare it within this API version to identify the exact source without transferring it.
- `data.updated_at` (nullable string, required): When this language was last saved. Null for a built-in template.

## 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)
