---
title: "Read-only invite status (no auth, no token consumption)"
method: GET
path: "/api/public/invite/{token}/status"
tags: ["public"]
---

# Read-only invite status (no auth, no token consumption)

`GET /api/public/invite/{token}/status`

## Request

- Base URL: `https://api.signalraven.ai`
- URL: `https://api.signalraven.ai/api/public/invite/{token}/status`
- Auth: none declared

Returns one of: valid (with invitee details) / expired / already_accepted / not_found / email_already_user (existing user, not on this workspace) / already_member (existing user already on this workspace, with customerName). Used by the portal /signup/accept-invite landing page to branch the UI before driving the user into the auth flow.

## Path parameters

- `token` string, required

## Response `200`

Status (discriminated union)

- union
  - object
    - `status` 'valid', required
    - `invitedEmail` string, email, required
    - `role` 'user' | 'manager' | 'prospector', required
    - `customerName` string, required
    - `inviterName` string, required
  - object
    - `status` 'expired', required
  - object
    - `status` 'already_accepted', required
  - object
    - `status` 'not_found', required
  - object
    - `status` 'email_already_user', required
  - object
    - `status` 'already_member', required
    - `customerName` string, required

---

[API](https://skmtc.dev/signalraven/apis/zygnal-api.md) · [All operations](https://skmtc.dev/signalraven/apis/zygnal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signalraven/apis/zygnal-api/revisions/36e1d9b9d604?raw)
