---
title: "Accept Partnership Invitation"
method: POST
path: "/api/invitations/partnerships/accept"
tags: ["Invitations"]
---

# Accept Partnership Invitation

`POST /api/invitations/partnerships/accept`

## Request

- Base URL: `https://api.thebetterhire.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.thebetterhire.ai/api/invitations/partnerships/accept`
- Auth: none declared

Accept a partnership invitation: create the partner org + its admin
user + the active partnership, atomically.

Ported from the direct-DB Next.js route (API proxy sweep slice 6) —
previously the ONLY auth-group route with no BE counterpart at all.
Faithful quirks kept: `invited_at` binds the invitation's created_at
(the row predates acceptance), plan is 'free_trial' (partnership
signups, vs 'trial' for self-serve register), partnership starts
'active' with approved_at=NOW() (accepting IS the approval). One
deliberate normalization: the session token is the standard
create_access_token (15-min, refreshable) — the old route minted a
nonstandard 24h JWT with an extra user_id claim.

## Request body

- PartnershipAcceptRequest: Accept a partnership invitation (public endpoint). Defaults-not-required so the missing-fields 400 stays the exact string the register page displays, not a Pydantic 422 list.
  - `invitation_token` string
  - `password` string
  - `full_name` string
  - `job_title` string, nullable
  - `phone` string, nullable
  - `industry` string, nullable
  - `company_size` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api.md) · [All operations](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thebetterhire/apis/interanalysis-b2b-api/revisions/c8ad03e900ea?raw)
