Create your account
Self-serve signup provisions a tenant, owner user, and billing customer in one call, and returns a ready-to-use session token.
Signing up for Pact is a single server-side transaction. The browser posts your email, password, and
chosen plan to POST /v1/signup, and the backend provisions everything you need to log in — you do
not have to orchestrate tenant creation, user creation, and billing setup yourself.
What one signup does
The POST /v1/signup endpoint (public, no API key required) performs these steps in order:
- 1
Validate the plan
The
planfield is checked against an allow-list. Canonical names arefree,pro,team, andenterprise; the olderstarter/growth/scalenames are still accepted and mapped forward, so old links keep working. - 2
Provision the tenant + owner
A
tenant_idis allocated (slugified from your email, or an explicittenant_idyou pass for a vanity workspace likeacme-inc), then the owner user is created. Signing up again with an email that already has an account does not create a duplicate tenant — the endpoint returns409 Conflict("An account with this email already exists. Sign in instead.") so you're routed to/v1/auth/loginrather than silently forking a second workspace. - 3
Issue a session token
A 256-bit URL-safe token is minted (the same scheme
/v1/auth/loginuses) and returned in the response, so the browser is authenticated immediately without a second round-trip. - 4
Create a billing customer
A billing customer is provisioned and mapped to the tenant. If the billing provider is briefly unreachable, signup still succeeds — you get a tenant now and the customer record can be created later from the dashboard. Paid plans open a subscription and provision a trial budget.
Request shape
curl -X POST https://api.pact.place/v1/signup \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"password": "a-strong-password",
"plan": "pro",
"accept_tos": true,
"job_title": "Head of Sales"
}'
The response includes your session token and tenant_id. Use the token as a Bearer credential on
every subsequent /v1/* call.
job_title powers a faster first run
If you include a job_title, Pact maps it to a persona (sales, marketing, CS, or admin)
and pre-fills the setup wizard so you land on that persona's working surface in seconds. Omit it and
you get the standard multi-step wizard — no downside either way.
Email verification (when enabled)
Some deployments require you to confirm your email before a tenant is created. When
PACT_SIGNUP_REQUIRE_EMAIL_VERIFY is on, the marketing site uses a two-call magic-link flow instead:
POST /v1/signup/start— validates your email and password and sends a verification link. No tenant is provisioned yet. The response is{ "status": "verification_sent" }.POST /v1/signup/verify— the link's token completes provisioning and returns the same signup response (session token +tenant_id) as the direct path.
After you're in
You land on the Dashboard. Admins and owners also get a short first-run setup tour (its progress
is stored per-user via /v1/me/onboarding) that walks you through the same getting-started steps
covered here. You can follow it or skip it — nothing is blocked on completing it.
Signing in later
Return visits go through https://app.pact.place/login. If your organization uses SSO,
sign in with your company domain instead of a password.