---
title: "Get your account, teams, and referenced Spaces"
method: GET
path: "/v1/bootstrap"
tags: ["Account"]
---

# Get your account, teams, and referenced Spaces

`GET /v1/bootstrap`

## Request

- Base URL: `https://api.spacefast.com`
- URL: `https://api.spacefast.com/v1/bootstrap`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Returns who is signed in and the teams they can act for. Use it for account identity or login information, or when a task needs the caller's teams. Optional `teamRef` and `spaceRef` resolve a team or Space in the same read. A Space result includes serving status. A failed reference keeps its error without removing other results. The request fails only if Spacefast cannot identify the caller. Read a referenced value only when its status is `resolved`. It does not return passwords or tokens.

## Query parameters

- `teamRef` string: Team id or slug to resolve. It also scopes slug resolution for `spaceRef` and selects the team on the support boot payload. Present but blank is a request error, never `not_requested`.
- `spaceRef` string: Space reference: a `spc_` id, a hostname or URL, or a slug. Slugs resolve only within spaces you can already reach, so an unclaimed space is reachable by id or hostname only. Present but blank is a request error, never `not_requested`.

## Response `200`

Response for status 200

- object
  - `$schema` string, uri: Canonical JSON Schema URL for this response body. The server also sends it in the `Link: rel="describedby"` response header.
  - `data` object, required
    - `me` object, nullable, required: The authenticated identity, exactly as `GET /v1/me` returns it. Null only for a claim-token caller, which has no identity.
      - `subject` object, required: The authenticated subject of the calling credential.
        - `type` 'user' | 'team' | 'external' | 'system', required: Subject kind: the session user, or the machine credential's acting subject.
        - `id` string, required: Stable subject id.
      - `user` object, nullable, required: Authenticated user identity for user-subject credentials. Null for team-subject or service-subject machine credentials. Creator metadata is retained only for audit attribution, not request identity.
        - `id` string, required: User id.
        - `email` string, nullable, required: User email.
        - `name` string, nullable, required: User display name.
        - `isAutomattician` boolean, required: Whether the linked WordPress.com account is an Automattician.
        - `wpcom` object, nullable: Deprecated compatibility field. Current servers return null; readers accept older provider profiles and responses that omitted this field during the rolling upgrade.
        - `isSuperadmin` boolean, required: Whether the user is a platform operator.
        - `pendingDeletionAt` string, nullable, required: When this account's deletion was requested, while the close is still running. Null for every account that is not being deleted.
        - `dashboardPrefs` object, required: The user's dashboard preferences. Carried on the boot payload the dashboard already fetches, so applying a cross-device preference costs no extra request. Write with `PATCH /v1/me/dashboard-preferences`.
        - `privacy` object, required: The user's account-level privacy choices. Write with `PATCH /v1/me/privacy`.
          - `analyticsOptOut` boolean, required: Opt out of product analytics. When true, no analytics events are recorded for this account, in the browser or server-side.
          - `advertisingOptOut` boolean, required: Do-not-sell/share election (CCPA). When true, the account is excluded from any advertising or audience use.
      - `tenants` object[], required: Tenant grants derived from the credential's effective policy. The credential's home tenant is always included.
        - `id` string, required: Tenant id.
        - `kind` string, required: Tenant kind.
        - `name` string, required: Tenant display name.
        - `access` 'full' | 'scoped', required: Grant level the credential's policy holds in this tenant: `full` covers the whole tenant subtree, `scoped` covers specific principals or resources within it.
      - `teams` object[], required: Teams the credential can act in: session team memberships, or the teams a machine credential's policy grants.
        - `id` string, required: Team id.
        - `tenantId` string, required: Owning tenant id.
        - `name` string, required: Team display name.
        - `slug` string, nullable, required: Team slug.
        - `role` string, nullable, required: The caller's membership role. Null for policy-granted (non-member) access.
        - `plan` 'free' | 'go' | 'plus' | 'gold' | 'enterprise' | 'internal', required: The team's resolved plan code (plan summary).
      - `intercom` object, nullable, required: Intercom Messenger boot payload for authenticated browser sessions.
        - `api_base` string, uri, required: Intercom Messenger API base URL.
        - `app_id` string, required: Intercom workspace app id.
        - `user_id` string, required: Stable Intercom user id.
        - `email` string, email: User email when available.
        - `name` string: User display name when available.
        - `created_at` integer: User creation time in Unix seconds.
        - `company` object: Current team as an Intercom company.
          - `company_id` string, required: Stable Intercom company id.
          - `name` string, required: Company display name.
          - `plan` 'free' | 'go' | 'plus' | 'gold' | 'enterprise' | 'internal': Resolved company plan code.
        - `intercom_user_jwt` string, required: Short-lived server-signed Messenger JWT.
        - `session_duration` integer, required: Messenger session cookie TTL in ms.
        - `expiresAt` string, date-time, required: JWT expiry timestamp.
      - `joinableTeams` object[], required: Teams the user can join without waiting for anyone: a pending invitation or company-domain rule matching any verified email, or Automattician access to the Automattic team. Teams the user already belongs to are not listed.
        - `teamId` string, required: Team id.
        - `name` string, required: Team display name.
        - `slug` string, nullable, required: Team slug.
        - `source` 'invitation' | 'automattician', required: Why the caller can join the team.
        - `domainMatch` boolean: The offer matches a verified company email domain.
      - `beta` object, required: Deprecated. Always `{ gateEnabled: false, enrolled: true, eligibleTeams: [] }`.
        - `gateEnabled` false, required
        - `enrolled` true, required
        - `eligibleTeams` unknown[], required
          - unknown
    - `teams` object[], required: The teams this credential can act for, newest-first — the same set `GET /v1/teams` returns. Empty for a claim-token caller.
      - `id` string, required: The team id (the Better Auth team id in the main tenant).
      - `tenantId` string, required: The owning tenant id; `ten_main` for self-serve teams.
      - `name` string, required: The team display name.
      - `slug` string, required: URL-safe team slug, unique per tenant.
      - `role` 'owner' | 'admin' | 'member', required: Requesting member's role; member for non-session credentials.
      - `plan` 'free' | 'go' | 'plus' | 'gold' | 'enterprise' | 'internal', required: Resolved plan code from the active subscription.
      - `partner` object, nullable, required: Partner access for this team, or null when the team is not a partner.
        - `enabledAt` string, date-time, required: The instant this team became a partner.
      - `defaultDataLocation` string, required: Default placement region for new spaces; "auto" lets placement decide.
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
    - `teamsPagination` object, required: Paging for `teams`. `hasMore: true` means this credential reaches more teams than the boot payload carried; page the rest from `GET /v1/teams`.
      - `nextCursor` string, nullable, required: Opaque cursor for the next page; null when there are no more results.
      - `hasMore` boolean, required: Whether another page exists after this one.
    - `resolvedTeam` union, required: The team named by `teamRef`: the resolved value, the problem that stopped it, or not asked for.
      - object
        - `status` 'resolved', required
        - `value` object, required
          - `id` string, required: The team id (the Better Auth team id in the main tenant).
          - `tenantId` string, required: The owning tenant id; `ten_main` for self-serve teams.
          - `name` string, required: The team display name.
          - `slug` string, required: URL-safe team slug, unique per tenant.
          - `role` 'owner' | 'admin' | 'member', required: Requesting member's role; member for non-session credentials.
          - `plan` 'free' | 'go' | 'plus' | 'gold' | 'enterprise' | 'internal', required: Resolved plan code from the active subscription.
          - `partner` object, nullable, required: Partner access for this team, or null when the team is not a partner.
            - `enabledAt` string, date-time, required: The instant this team became a partner.
          - `defaultDataLocation` string, required: Default placement region for new spaces; "auto" lets placement decide.
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
          - `logo` string, nullable, required: Optional team logo URL.
          - `metadata` string, nullable, required: Opaque team metadata stored by the client.
          - `stripeCustomerId` string, nullable, required: Stripe customer id linked to this team; null until billing is initialized.
          - `systemSpaceId` string, nullable, required: The space that supplies this team's page, theme, and presentation defaults.
          - `manifestStatus` object, required: The status of the restricted manifest from the team's system space.
            - `items` object[], required: Per-key materialization status.
              - …
            - `sourceVersionId` string, nullable, required: The system space's live version every item was converged from, or null when nothing is materialized.
          - `presentation` object, nullable, required: Partner-facing branding and links for the white-label surface.
            - `name` string
            - `logo` string
            - `supportUrl` string
            - `claimOrigin` string
            - `accessHandoffOrigin` string
            - `problemDocsBaseUrl` string
            - `contacts` object: Named contact URLs or addresses shown to claimants and partners.
      - object
        - `status` 'unresolved', required
        - `problem` object, required: Why this slot did not resolve: the same problem document the dedicated endpoint would have returned, minus the request id carried by the response itself.
          - `type` string, required: Problem type URI resolving to the error docs page. The server derives it mechanically from `code` against the docs origin.
          - `title` string, required: Short human-readable summary of the problem type. The server derives it mechanically from `code`.
          - `status` integer, required: HTTP status code of this response, repeated in the body.
          - `detail` string, required: Human-readable failure explanation for this occurrence.
          - `code` string, required: Stable snake_case error code naming the failed public contract.
          - `pointer` string: RFC 6901 JSON Pointer into the failing request field, for example "/files/37/path", on validation failures.
          - `details` object: Machine-readable context for the error code.
          - `suggestions` string[]: Actionable recovery steps safe to show in dashboards, SDKs, and CLI output.
          - `next` string[]: Copy-pasteable commands or API requests an agent can run next.
      - object
        - `status` 'not_requested', required
    - `resolvedSpace` union, required: The space named by `spaceRef`: the resolved value, the problem that stopped it, or not asked for.
      - object
        - `status` 'resolved', required
        - `value` object, required
          - `id` string, required
          - `tenantId` string
          - `mode` 'live' | 'test': `test` when the owning tenant is a linked test tenant, `live` otherwise.
          - `providerRef` string, nullable: WP Cloud `atomic_site_id` of the site serving this space. Use it with `providerClientId` to address the site in WP Cloud. Null until the space is placed.
          - `providerClientId` string, nullable: WP Cloud client identity (`pvc_...`) the space's site is provisioned under.
          - `teamId` string, nullable, required
          - `teamSlug` string, nullable, required
          - `principal` object, nullable
            - `tenantId` string, required
            - `principalType` 'team' | 'external', required
            - `principalId` string, required
          - `infrastructure` object
            - `region` string, nullable, required: Concrete region the space's site was placed in.
            - `runtimeInstanceId` string, nullable, required: Runtime instance serving this space.
            - `managementHostname` string, nullable, required: Permanent hostname minted for the provider site when it was created. It stays attached to the site for the site's whole life and never changes, even when the Space is renamed or gets a custom domain, so it is a stable key for matching this Space to its WP Cloud site. It is not the public URL: visitors use `liveUrl`, and WP Cloud reports the Space's primary hostname as the site's `domain_name`.
            - `provisioningState` 'provisioning' | 'converged' | 'degraded', required: Convergence of the space against its intended infrastructure: still being placed, matching intent, or failing to converge.
          - `anonymous` boolean, required
          - `slug` string, required
          - `title` string, required
          - `status` 'provisioning' | 'active' | 'updating' | 'deleting' | 'failed', required: Operation-lifecycle status. Serving state is the separate `disabled` axis.
          - `disabled` object, nullable, required
            - `at` string, date-time, nullable, required
            - `reasonCode` 'anonymous_expired' | 'publish_failed' | 'abuse_takedown' | 'tenant_suspended' | 'site_suspended' | 'author_removed' | 'archived', required: Why serving is disabled.
          - `claimState` object, nullable, required
            - `expiresAt` string, date-time, nullable, required
            - `claimedAt` string, date-time, nullable, required
            - `purgeAfter` string, date-time, nullable, required
          - `expiryExtension` object, nullable
            - `extendedTo` string, date-time, required
          - `defaultHostname` string, required: Current Spacefast-owned managed hostname: under space.fast, or under view.fast for a space created before space.fast. Renaming the space changes the label and keeps the apex; previously managed hostnames temporarily redirect to the current one.
          - `publicName` string, required: Public space label used in the managed hostname.
          - `liveUrl` string, required: Live space URL: the primary bound domain when one exists, else the default hostname. Always present on non-deleted spaces.
          - `thumbnail` object, nullable, required: Server-selected dashboard thumbnail. Screenshots use WordPress.com mShots; image thumbnails use WordPress.com Site Accelerator.
            - `kind` 'screenshot' | 'image', required
            - `provider` 'wpcom-mshots' | 'wpcom-site-accelerator', required
            - `url` string, uri, required
            - `sourceUrl` string, uri, required
          - `dataLocation` string, required: Resolved data-location region, fixed when the space is created and immutable afterwards; "auto" only while no concrete region is known yet.
          - `region` string, required: Alias of dataLocation for placement dashboards; "auto" only while no concrete region is known yet.
          - `burstable` boolean, nullable, required: Whether this space's site can burst provider PHP workers.
          - `archivedBytes` integer, required: Bytes currently archived out of the hot runtime store.
          - `hasRuntime` boolean, required: Whether this space's live version runs code and therefore has a Runtime surface. Feature eligibility alone does not make the surface visible.
          - `channels` object, required: Channel pointers by name. "live" is present after a version is promoted.
          - `config` object, nullable, required: Stored SpaceConfig overlay applied over the live version's sf.jsonc; null when nothing is overridden.
            - `index` union: Directory index file; false disables index resolution.
              - …
            - `fallback` union: Fallback document. "/index.html" means SPA. Defaults to the nearest 404.html.
              - …
            - `cleanUrls` boolean: Serve flat `<name>.html` files at their extensionless URL (`/about` serves `about.html`). Defaults to on, unless a 200-status SPA fallback is configured.
            - `listing` boolean: Enable automatic directory listings.
            - `meta` object: Listing, viewer, sharing, and browser icon metadata.
              - …
            - `superpowers` object: Platform-managed built-ins and custom JavaScript snippets.
              - …
            - `templates` string[]: Files that receive {{ vars.NAME }} substitution at finalize.
            - `theme` object: Visual tokens for every Spacefast-authored page.
              - …
            - `collab` object: Comments overlay delivery. `default` injects Spacefast's UI; `custom` injects only /__spacefast/collab.css for a self-built UI. Turning comments off lives in the Space's Comments settings, not here.
              - …
            - `build` object: Default settings for remote repository builds.
              - …
            - `placement` object: Placement controls for this space.
              - …
            - `markdownNegotiation` boolean: Accepted serving flag; runtime enforcement ships separately.
            - `firewall` object[]: Requests to block or challenge before they reach the space.
              - …
            - `cache` object: Cache behavior, including which requests skip it.
              - …
            - `redirects` object[]: Browser redirect rules. Same matcher grammar as _redirects, and _redirects rules match first.
              - …
            - `rewrites` object[]: Rewrite and proxy rules: the URL stays, the content comes from the destination. _redirects rules match first, then redirects.
              - …
            - `headers` object[]: Response headers to set or remove on matching requests. A _headers rule wins on the same header name.
              - …
            - `users` object
              - …
            - `dataSources` object: Named public WordPress sources exposed to repository builds; at most 32 entries.
          - `grandfatherBrandingRemoval` boolean: Whether this Space can keep removing the badge under a newer plan.
          - `settingsDigest` string, required: CAS token for versioned settings writes (digest over title + config overlay). Send it back as baseSettingsDigest on PATCH to get compare-and-swap semantics.
          - `noindex` boolean, required: When true, the live production hostnames serve platform noindex directives. Immutable version and preview hostnames are always noindex regardless of this setting.
          - `pinnedAt` string, date-time, nullable, required: Instant the space was pinned to the top of its team's space list, or null when it is not pinned. The pin is team-wide: everyone who can see the team sees it.
          - `labelIds` string[], required: Ids of the team labels on this space, ordered by label name. Empty when the space carries none. Manage them with PUT and DELETE /v1/spaces/{spaceId}/labels/{labelId}.
          - `viewerCanDelete` boolean: Whether the caller's account may delete this space. Team owners and admins can delete any space in the team; a member can delete the spaces they created. Absent on unclaimed spaces, which their space key governs, and when the request carries no account credential.
          - `viewerCanTransfer` boolean: Whether the caller's account may transfer this space to another team. Team owners and admins can; a member who created the space can from the dashboard while nobody else has published to it and it has no custom domain, database, or paid resource. Present on single-space GET reads only; absent on lists, on write responses, on unclaimed spaces, and when the request carries no account credential.
          - `git` object, nullable, required: Git remote for this space, or null when it has no repository yet. Push to `remoteUrl` to publish.
            - `managedBy` 'spacefast' | 'github' | 'connected', required: Who owns the Git history. `spacefast`: push to publish. `github` or `connected`: deploys from an upstream repository; direct pushes are refused.
            - `remoteUrl` string, nullable, required: Credential-free git remote to push to, or null for an upstream-managed repository. Authenticate as HTTP Basic user `t` with a space key or API key as the password.
            - `repository` string, nullable, required: Name of the connected upstream repository this Space deploys from, else null.
            - `defaultBranch` string, nullable, required: Branch that publishes to the live channel when pushed.
            - `provisioned` boolean, required: Whether the repository behind this block exists yet. Always true for a GitHub binding; for a hosted remote, true once it was minted or first pushed to, and false while there is nothing to browse.
          - `operation` object, nullable, required
            - `id` string, required
            - `kind` string, required
            - `status` 'queued' | 'running' | 'succeeded' | 'failed' | 'canceled', required
            - `resources` object[], required
              - …
            - `progress` object
              - …
            - `diagnostics` object[]
              - …
            - `createdAt` string, date-time, required
            - `finishedAt` string, date-time
          - `createdAt` string, date-time, required
          - `updatedAt` string, date-time, required
      - object
        - `status` 'unresolved', required
        - `problem` object, required: Why this slot did not resolve: the same problem document the dedicated endpoint would have returned, minus the request id carried by the response itself.
          - `type` string, required: Problem type URI resolving to the error docs page. The server derives it mechanically from `code` against the docs origin.
          - `title` string, required: Short human-readable summary of the problem type. The server derives it mechanically from `code`.
          - `status` integer, required: HTTP status code of this response, repeated in the body.
          - `detail` string, required: Human-readable failure explanation for this occurrence.
          - `code` string, required: Stable snake_case error code naming the failed public contract.
          - `pointer` string: RFC 6901 JSON Pointer into the failing request field, for example "/files/37/path", on validation failures.
          - `details` object: Machine-readable context for the error code.
          - `suggestions` string[]: Actionable recovery steps safe to show in dashboards, SDKs, and CLI output.
          - `next` string[]: Copy-pasteable commands or API requests an agent can run next.
      - object
        - `status` 'not_requested', required
    - `spaceRuntime` union, required: Serving status of the resolved space: the resolved value, the problem that stopped it, or not asked for.
      - object
        - `status` 'resolved', required
        - `value` object, required
          - `liveVersionId` string, nullable, required: Version that the live space URL now points to, if any.
          - `pendingVersionId` string, nullable, required: Version that live traffic is trying to publish now, if any.
          - `liveUrl` string, nullable, required: Live space URL. It moves to the latest version after a successful publish to `live`.
          - `runtimeState` 'provisioning' | 'active' | 'updating' | 'deleting' | 'failed', required: Space operation-lifecycle status.
          - `liveVersionStatus` 'building' | 'prepared' | 'created' | 'uploading' | 'uploaded' | 'finalizing' | 'ready' | 'failed' | 'expired' | 'canceled', nullable, required
          - `pendingVersionStatus` 'building' | 'prepared' | 'created' | 'uploading' | 'uploaded' | 'finalizing' | 'ready' | 'failed' | 'expired' | 'canceled', nullable, required
          - `operation` object, nullable, required
            - `id` string, required
            - `kind` string, required
            - `status` 'queued' | 'running' | 'succeeded' | 'failed' | 'canceled', required
            - `resources` object[], required
              - …
            - `progress` object
              - …
            - `diagnostics` object[]
              - …
            - `createdAt` string, date-time, required
            - `finishedAt` string, date-time
          - `app` object, nullable, required: What the live version runs: its Zero capsule and its Functions worker, each null when the published tree carries none of that product (both null for a space without a runtime). The whole object is null for callers whose credential does not carry `versions:read`, because app details read version contents, not serving state.
            - `capsule` object, nullable, required: The live version's Zero capsule, if it carries one.
              - …
            - `worker` object, nullable, required: The live version's Functions worker, if it carries one.
              - …
          - `pendingApp` object, nullable, required: What the pending version would run — the same projection as `app`, read from `pendingVersionId`'s version so a dashboard can show what an in-flight publish is about to serve. Null when no publish is in flight, and null for callers without `versions:read`, exactly like `app`.
            - `capsule` object, nullable, required: The live version's Zero capsule, if it carries one.
              - …
            - `worker` object, nullable, required: The live version's Functions worker, if it carries one.
              - …
      - object
        - `status` 'unresolved', required
        - `problem` object, required: Why this slot did not resolve: the same problem document the dedicated endpoint would have returned, minus the request id carried by the response itself.
          - `type` string, required: Problem type URI resolving to the error docs page. The server derives it mechanically from `code` against the docs origin.
          - `title` string, required: Short human-readable summary of the problem type. The server derives it mechanically from `code`.
          - `status` integer, required: HTTP status code of this response, repeated in the body.
          - `detail` string, required: Human-readable failure explanation for this occurrence.
          - `code` string, required: Stable snake_case error code naming the failed public contract.
          - `pointer` string: RFC 6901 JSON Pointer into the failing request field, for example "/files/37/path", on validation failures.
          - `details` object: Machine-readable context for the error code.
          - `suggestions` string[]: Actionable recovery steps safe to show in dashboards, SDKs, and CLI output.
          - `next` string[]: Copy-pasteable commands or API requests an agent can run next.
      - object
        - `status` 'not_requested', required

## Other responses

- `default`: Problem details (RFC 9457). Any 4xx/5xx response is one `application/problem+json` document.

---

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