---
title: "Changes to Start device login"
method: POST
path: "/v1/login/device"
---

# Changes to Start device login

`POST /v1/login/device`

> Every recorded change to this endpoint, newest first.

## Timeline

Changed in 2 of 50 revisions.

- **2026-07-03** `3f7925dc651d` — 4 breaking, 6 info
- **2026-06-05** `3985c6090c91` — 22 breaking, 4 warning, 76 info

## Changes

- **2026-07-03** `3f7925dc651d` — 4 breaking, 6 info
  - removed the required property `device_code` from the response with the `200` status
  - removed the required property `expires_in` from the response with the `200` status
  - removed the required property `interval` from the response with the `200` status
  - removed the required property `verification_uri` from the response with the `200` status
  - added the required property `deviceCode` to the response with the `200` status
  - added the required property `expiresInSeconds` to the response with the `200` status
  - added the required property `intervalSeconds` to the response with the `200` status
  - added the required property `loginUrl` to the response with the `200` status
  - added the required property `userCode` to the response with the `200` status
  - added the required property `verificationUri` to the response with the `200` status
- **2026-06-05** `3985c6090c91` — 22 breaking, 4 warning, 76 info
  - the response property `checkout_url` became nullable for the status `400`
  - the response property `checkout_url` became nullable for the status `401`
  - the response property `checkout_url` became nullable for the status `429`
  - the response property `checkout_url` became nullable for the status `500`
  - the response property `checkout_url` became optional for the status `400`
  - the response property `checkout_url` became optional for the status `401`
  - the response property `checkout_url` became optional for the status `429`
  - the response property `checkout_url` became optional for the status `500`
  - the `agent_instruction` response property's maxLength was unset from `1000` for the response status `400`
  - the `agent_instruction` response property's maxLength was unset from `1000` for the response status `401`
  - the `agent_instruction` response property's maxLength was unset from `1000` for the response status `429`
  - the `agent_instruction` response property's maxLength was unset from `1000` for the response status `500`
  - the `message` response property's maxLength was unset from `240` for the response status `400`
  - the `message` response property's maxLength was unset from `240` for the response status `401`
  - the `message` response property's maxLength was unset from `240` for the response status `429`
  - the `message` response property's maxLength was unset from `240` for the response status `500`
  - removed the required property `deviceCode` from the response with the `200` status
  - removed the required property `expiresInSeconds` from the response with the `200` status
  - removed the required property `intervalSeconds` from the response with the `200` status
  - removed the required property `loginUrl` from the response with the `200` status
  - removed the required property `userCode` from the response with the `200` status
  - removed the required property `verificationUri` from the response with the `200` status
  - the optional response header `Retry-After` removed for the status `200`
  - the optional response header `Retry-After` removed for the status `400`
  - the optional response header `Retry-After` removed for the status `401`
  - the optional response header `Retry-After` removed for the status `500`
  - removed the `database_unavailable` enum value from the `code` response property for the response status `400`
  - removed the `database_unavailable` enum value from the `code` response property for the response status `401`
  - removed the `database_unavailable` enum value from the `code` response property for the response status `429`
  - removed the `database_unavailable` enum value from the `code` response property for the response status `500`
  - removed the `invalid_cpu_limit` enum value from the `code` response property for the response status `400`
  - removed the `invalid_cpu_limit` enum value from the `code` response property for the response status `401`
  - removed the `invalid_cpu_limit` enum value from the `code` response property for the response status `429`
  - removed the `invalid_cpu_limit` enum value from the `code` response property for the response status `500`
  - removed the `invalid_health_endpoint` enum value from the `code` response property for the response status `400`
  - removed the `invalid_health_endpoint` enum value from the `code` response property for the response status `401`
  - removed the `invalid_health_endpoint` enum value from the `code` response property for the response status `429`
  - removed the `invalid_health_endpoint` enum value from the `code` response property for the response status `500`
  - removed the `invalid_memory_limit` enum value from the `code` response property for the response status `400`
  - removed the `invalid_memory_limit` enum value from the `code` response property for the response status `401`
  - …62 more

---

[Operation](https://skmtc.dev/tovuk/apis/tovuk-api/docs/v1/login/device/post.md) · [API](https://skmtc.dev/tovuk/apis/tovuk-api.md) · [Page](https://skmtc.dev/tovuk/apis/tovuk-api/changes/v1/login/device/post)
