---
title: "Bootstrap a hosted tenant with first admin user"
method: POST
path: "/tenant/bootstrap"
---

# Bootstrap a hosted tenant with first admin user

`POST /tenant/bootstrap`

## Request

- Base URL: `https://api.gravityads.dev` (the document declares no server; this is the origin it was published from)
- URL: `https://api.gravityads.dev/tenant/bootstrap`
- Auth: HTTP bearer

## Request body

- object
  - `tenant_name` string
  - `plan_id` string
  - `admin_user_id` string
  - `admin_email_hash` string
  - `oidc_sub` string
  - `feishu_open_id` string
  - `display_name` string
  - `create_subscription` boolean
  - `subscription_status` string
  - `provider` string
  - `provider_customer_id` string
  - `provider_subscription_id` string
  - `currency` string
  - `current_period_start` string, date-time
  - `current_period_end` string, date-time
  - `trial_start` string, date-time
  - `trial_end` string, date-time
  - `checkout` union
    - boolean
    - object
      - `enabled` boolean
      - `success_url` string, uri
      - `cancel_url` string, uri
      - `customer_id` string
      - `billing_interval` 'monthly' | 'annual'
      - `request_key` string
      - `quantity` integer
      - `promotion_code` string
      - `allow_promotion_codes` boolean
      - `metadata` object
  - `signup_attribution` object
    - `source` string
    - `registration_code_hash` string
    - `registration_code_type` string
    - `referral_code_hash` string
    - `promotion_code_hash` string
    - `product` string
    - `source_domain_hash` string
    - `email_domain_hash` string
    - `billing_mode` string
  - `landing_evidence` object
    - `schema_version` 'gravityads.portal_landing.v1', required
    - `event_id` string, required
    - `occurred_at` string, date-time, required
    - `entrypoint` 'home' | 'docs' | 'pricing' | 'security', required

## Response `200`

Tenant bootstrapped

- object
  - `status` 'tenant_bootstrapped' | 'tenant_bootstrapped_checkout_setup_required' | 'tenant_bootstrapped_checkout_failed' | 'tenant_bootstrap_failed' | 'tenant_bootstrap_degraded' | 'tenant_bootstrap_unconfigured', required
  - `tenant_id` string
  - `admin_user_id` string
  - `plan` object
  - `subscription_created` boolean
  - `subscription` object
  - `users` object[]
  - `user_count` integer
  - `database_url_configured` boolean
  - `checkout_requested` boolean
  - `checkout_session` object
    - `status` 'stripe_checkout_session_created' | 'stripe_checkout_setup_required' | 'stripe_checkout_session_failed', required
    - `tenant_id` string
    - `plan_id` string
    - `session_id` string
    - `url` string
    - `client_secret` string
    - `mode` string
    - `payment_status` string
    - `error_code` string
    - `retry` boolean
    - `raw_secrets_returned` false, required
  - `error_code` string
  - `message` string
  - `retry` boolean
  - `billing_setup_required` boolean
  - `self_service_checkout_ready` false
  - `payment_collection_blocked` boolean
  - `tenant_bootstrapped` boolean
  - `internal_trial_active` boolean
  - `safe_to_continue_read_only_setup` boolean
  - `next_actions` object[]
    - `id` string, required
    - `status` string, required
    - `owner` string
    - `path` string
    - `requires` string[]
    - `url_present` boolean
    - `session_id` string
  - `raw_price_ids_returned` false
  - `raw_secrets_returned` false, required

---

[API](https://skmtc.dev/gravityads/apis/gravityads-api.md) · [All operations](https://skmtc.dev/gravityads/apis/gravityads-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gravityads/apis/gravityads-api/revisions/124cd07d534d?raw)
