---
title: "Verify the emailed code for a signup_session from POST /v1/signup/start. On success returns a new signup_session advanced to the workspace step (logging in an existing account or signing up a new one — the outcome is only revealed here, after the code is verified). A wrong or expired code returns 401 unauthorized (same rules as the web flow)."
method: POST
path: "/v1/signup/verify"
---

# Verify the emailed code for a signup_session from POST /v1/signup/start. On success returns a new signup_session advanced to the workspace step (logging in an existing account or signing up a new one — the outcome is only revealed here, after the code is verified). A wrong or expired code returns 401 unauthorized (same rules as the web flow).

`POST /v1/signup/verify`

## Request

- Base URL: `https://api.usebubbles.com`
- URL: `https://api.usebubbles.com/v1/signup/verify`
- Auth: none required

## Request body

- SignupVerifyRequest: POST /v1/signup/verify request body.
  - `signup_session` string, required: The token from POST /v1/signup/start.
  - `code` string, required: The verification code Bubbles emailed the user.

## Response `200`

Success.

- SignupVerifyResponse: POST /v1/signup/verify response — email verified.
  - `next_step` 'workspaces', required: The next call to make.
  - `agent_context` string, required: Agent-facing guidance for this step: what happened, what to tell the user, and what to ask/call next.
  - `relay_to_user` string, required: Plain-language text for the agent to show the user.
  - `signup_session` string, required: Opaque token advanced to the workspace step.

## Other responses

- `400`: A query parameter or request body was malformed (invalid_request).
- `500`: An unexpected server error occurred (internal_error).

---

[API](https://skmtc.dev/usebubbles/apis/bubbles-public-api.md) - [All operations](https://skmtc.dev/usebubbles/apis/bubbles-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usebubbles/apis/bubbles-public-api/revisions/31570f5d4b05?raw)
