---
title: "Link external account"
method: POST
path: "/account/link"
tags: ["Account"]
---

# Link external account

`POST /account/link`

Links another identity provider (Google / GitHub / Microsoft) to the current user. Requires a fresh IdP intent for the source being linked. After linking the user can sign in via either provider.

## Request body

- LinkAccount
  - `id` string, required
  - `source` 'google' | 'github' | 'microsoft'
  - `token` string, required

## Response `200`

Account linked. Includes a new session when the intent was verified.

- NewAccount
  - `division_id` integer
  - `division_name` string
  - `linked_accounts` IdentityProvider[], nullable
  - `session` SessionInfo
    - `csrf_token` string, required
    - `email` string, required
    - `expiry` string, date-time, required
  - `tenant_id` integer
  - `tenant_name` string
  - `verified` boolean, required
  - `workspace` 'joined' | 'join_requested' | 'awaiting_invitation'

## Other responses

- `401` — Invalid or expired intent
- `409` — External account already linked to another user

---

[API](https://skmtc.net/laserdata/apis/laserdata-cloud-core-api.md) · [All operations](https://skmtc.net/laserdata/apis/laserdata-cloud-core-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/laserdata/laserdata-cloud-core-api/revisions/db81a447bba9/schema)
