# List all releases

Lists all releases for your team.

[endpoint]
base_url = "https://errors.betterstack.com"
path = "/api/v1/releases"
method = "GET"

[[query_param]]
name = "application_id"
description = "Filter by application ID"
required = false
type = "integer"

[[query_param]]
name = "version"
description = "Filter by version (exact match)"
required = false
type = "string"

[[query_param]]
name = "environment"
description = "Filter by environment (matches releases deployed to that environment)"
required = false
type = "string"

[[query_param]]
name = "from"
description = "Only return releases first seen at or after this ISO8601 timestamp"
required = false
type = "string"

[[query_param]]
name = "to"
description = "Only return releases first seen at or before this ISO8601 timestamp"
required = false
type = "string"

[[query_param]]
name = "page"
description = "Page number"
required = false
type = "integer"

[[query_param]]
name = "per_page"
description = "Items per page (default: 50, max: 250)"
required = false
type = "integer"

[[header]]
name = "Authorization"
description = "Bearer `$TOKEN`"
required = true
type = "string"
[/endpoint]

[responses]
[[response]]
status = 200
description = '''Returns a paginated list of releases, newest first. The `origin` attribute is `reported` for releases registered via this API or the Sentry CLI, and `detected` for releases discovered automatically from the first error event carrying the version. `last_seen_at` only advances when an error event arrives, so a release registered at build time keeps its `first_seen_at` value until its first error.'''
body = '''{
  "data": [
    {
      "id": "456",
      "type": "release",
      "attributes": {
        "version": "v1.2.3",
        "application_id": 123,
        "environments": ["production"],
        "first_seen_at": "2026-08-18T09:00:00.000Z",
        "last_seen_at": "2026-08-18T09:00:00.000Z",
        "origin": "reported",
        "created_at": "2026-08-18T09:00:00.000Z",
        "updated_at": "2026-08-18T09:00:00.000Z"
      }
    }
  ],
  "pagination": {
    "first": "https://errors.betterstack.com/api/v1/releases?page=1&per_page=50",
    "last": "https://errors.betterstack.com/api/v1/releases?page=3&per_page=50",
    "prev": null,
    "next": "https://errors.betterstack.com/api/v1/releases?page=2&per_page=50"
  }
}'''

[[response]]
status = 401
description = '''Unauthorized'''
body = '''{
  "errors": "Invalid authentication"
}'''

[[response]]
status = 422
description = '''Unprocessable Entity - Invalid Timestamp'''
body = '''{
  "errors": "Sorry, some values are incorrect",
  "invalid_values": {
    "from": "Invalid timestamp, use ISO8601"
  }
}'''
[/responses]

#### Example cURL

```shell
[label Example]
curl --request GET \
  --url https://errors.betterstack.com/api/v1/releases \
  --header "Authorization: Bearer $TOKEN"
```

[info]
#### Pagination

This endpoint supports [pagination](https://betterstack.com/docs/uptime/api/pagination/). Default is 50 items per page, with a maximum of 250 items per page. The pagination links are provided in the `pagination` object within the response body.
[/info]
