PPactDocs
Getting started

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. 1

    Validate the plan

    The plan field is checked against an allow-list. Canonical names are free, pro, team, and enterprise; the older starter / growth / scale names are still accepted and mapped forward, so old links keep working.

  2. 2

    Provision the tenant + owner

    A tenant_id is allocated (slugified from your email, or an explicit tenant_id you pass for a vanity workspace like acme-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 returns 409 Conflict ("An account with this email already exists. Sign in instead.") so you're routed to /v1/auth/login rather than silently forking a second workspace.

  3. 3

    Issue a session token

    A 256-bit URL-safe token is minted (the same scheme /v1/auth/login uses) and returned in the response, so the browser is authenticated immediately without a second round-trip.

  4. 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

bash
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.