Get Proposal by Magic-Link Token
Resolve a single-use magic-link token to its proposal. Used by the unauthenticated web pages a recipient lands on after clicking Accept/Decline in a proposal-invitation email. No `Authorization` header is required — the token itself is the credential. The token is not consumed by this read; it is only consumed when the recipient submits an action via `POST /v1/proposals/{id}/response` with the `token` body field. ## Error codes - `400` — `token` query parameter is missing - `401 invalid_token` — token does not exist (malformed or already consumed for a named single-use token) - `404 proposal_not_found` — token resolved but the referenced proposal (or bound participant row) has been deleted - `410 token_expired` — token exists but has passed its `expires_at`
Auth required: No
token (query, string) (required) — The raw magic-link token from the proposal-invitation email.200: Proposal resolved from token.
**`participant` may be `null`** when the token is an open-poll shareable link (`token.kind: 'open'`). In that case the voter has not yet self-identified; client UI must render the name/email field and create the participant on submit via `POST /v1/proposals/{id}/response`. For named tokens (`token.kind: 'named'`), `participant` is always populated with the bound invitee's row.
400: Validation error401: Token is invalid (malformed or already consumed).404: Resource not found410: Token has expired.This endpoint does not require authentication.
Base URL: https://api.vennio.app