---
title: "One-call sign-in helper"
method: POST
path: "/v1/inboxes/{inbox_id}/identity/sign-in"
tags: ["Identity"]
---

# One-call sign-in helper

`POST /v1/inboxes/{inbox_id}/identity/sign-in`

## Request

- Base URL: `https://api.deadsimple.email`
- URL: `https://api.deadsimple.email/v1/inboxes/{inbox_id}/identity/sign-in`
- Auth: HTTP bearer

Hand over the relying party's authorization URL (the `https://id.deadsimple.email/authorize?...` link a browser would be sent to) and get back the URL to GET to finish signing in as this inbox. Validates the client, redirect_uri, PKCE and scopes exactly as /authorize does, then mints the code. Exposed as `identity.sign_in(inbox_id, authorization_url)` in the Python SDK, `identity.signIn(inboxId, authorizationUrl)` in the Node SDK, and the `sign_in_with_inbox` MCP tool.

## Path parameters

- `inbox_id` string, required

## Request body

- object
  - `authorization_url` string, required: Must start with https://id.deadsimple.email/authorize and carry response_type=code and a code_challenge.

## Response `201`

The redirect to follow. The code inside it lives 5 minutes.

- IdentitySignInResult
  - `redirect_to` string: The relying party's redirect_uri with code (and state) appended. GET it, following redirects.
  - `client_id` string
  - `client_name` string
  - `scope` string
  - `expires_in` integer: Seconds until the authorization code expires (300).
  - `next_step` string

## Other responses

- `400`: Not our authorize URL, unknown client or unregistered redirect_uri, missing PKCE, or an unsupported scope.
- `404`: Inbox not found on this account.

---

[API](https://skmtc.dev/deadsimple/apis/dead-simple-email-api.md) · [All operations](https://skmtc.dev/deadsimple/apis/dead-simple-email-api/llms.txt) · [OpenAPI document](https://skmtc.dev/deadsimple/apis/dead-simple-email-api/revisions/c697881be131?raw)
