---
title: "Redeem an emailed one-click sign-in link (dashboard page only)"
method: POST
path: "/api/auth/link/redeem"
tags: ["auth"]
---

# Redeem an emailed one-click sign-in link (dashboard page only)

`POST /api/auth/link/redeem`

## Request

- Base URL: `https://api.zettoai.com`
- URL: `https://api.zettoai.com/api/auth/link/redeem`
- Auth: none required

Called by https://app.zettoai.com/auth/link with the token from a link Zetto emailed to the account's own address. Returns a one-time Supabase magic-link token hash the browser redeems with verifyOtp. Single use; links last at most 24 hours. Login links are never issued through the API — not to agents, not to anyone.

## Request body

- object
  - `token` string, required
  - `next` string: Same-origin path to land on

## Response `200`

Session token hash

- object
  - `token_hash` string
  - `type` string
  - `next` string

## Other responses

- `400`: Invalid link
- `410`: Expired or already used
- `429`: Rate limited

---

[API](https://skmtc.dev/zettoai/apis/zetto-network-api.md) · [All operations](https://skmtc.dev/zettoai/apis/zetto-network-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zettoai/apis/zetto-network-api/revisions/a81077177fc2?raw)
