---
title: "Generate a resource-scoped JWT from a direct hash."
method: POST
path: "/auth/boot"
tags: ["Auth"]
---

# Generate a resource-scoped JWT from a direct hash.

`POST /auth/boot`

Resolves a direct hash link and returns a resource-scoped JWT token. The token grants
limited access to specific resource types associated with the direct hash (e.g., aicall
for an AI direct hash). This endpoint is unauthenticated — the direct hash acts as the
credential.

## Request body

- RequestBodyAuthBootPOST — Request body for POST /auth/boot (resource-scoped JWT generation from a direct hash).
  - `direct_hash` string, required — The direct hash link (e.g., "direct.a1b2c3d4e5f6"). Obtained from resource direct hash endpoints such as `POST /ais/{id}/direct_hash_regenerate`.

## Response `200`

Resource-scoped JWT generated successfully.

- AuthBootResponse — Result of a successful boot request. Contains a resource-scoped JWT and metadata about the scoped resource.
  - `token` string — JWT token string for API authentication. Pass as `Bearer <token>` in the Authorization header.
  - `type` 'direct' — Token type. Always "direct" for boot tokens.
  - `resource_type` string — The type of resource this token is scoped to (e.g., "ai").
  - `resource_id` string, uuid — The UUID of the resource this token is scoped to. Returned from the resource creation endpoint (e.g., `POST /ais`).
  - `customer_id` string, uuid — The UUID of the customer that owns the resource. Returned from the `POST /auth/signup` response.
  - `expire` string, date-time — Token expiry timestamp in ISO 8601 format.
  - `resource_data` object, nullable — Resource-type-scoped envelope for additional, publicly-safe data about the boot-scoped resource. Each entry is a self-documenting named key; currently only "public_display_config" is populated (for resource_type "webchat_widget", carrying the widget's WebchatManagerWidgetThemeConfig shape). The envelope key itself, and any entry inside it, is OMITTED (not present) when there is nothing to report -- never present as an empty object.
    - `public_display_config` WebchatManagerWidgetThemeConfig — Cosmetic, customer-editable widget appearance settings. All fields are optional; omitted fields fall back to the platform default (blue bubble, no logo, bottom-right, light mode). An explicit color field always wins over the theme_mode-resolved default.
      - `primary_color` string — Hex color code for the widget's primary color.
      - `secondary_color` string — Hex color code for the widget's accent/text-contrast color.
      - `header_background_color` string — Hex color code for the widget header bar's background. Falls back to primary_color (light mode) or a dark surface color (dark mode) when unset.
      - `header_text_color` string — Hex color code for the widget header bar's text.
      - `logo_url` string, uri — HTTPS URL of the logo image displayed in the widget header.
      - `position` 'bottom_right' | 'bottom_left' — Where the floating bubble/panel renders on the customer's page.
      - `theme_mode` 'light' | 'dark' | 'auto' — Controls light/dark/auto rendering of the widget panel.
      - `header_title` string — Widget header text. Defaults to "Chat with us" when unset.
      - `header_subtitle` string — Widget header subtext, shown below header_title. No subtitle row rendered when unset.
      - `connecting_indicator_enabled` boolean, nullable — Whether to show a system message in the panel while the visitor's session is being created. Unset/null falls back to enabled (true); an existing widget's default is preserved by omitting this key rather than sending false.
      - `connecting_indicator_text` string — Text shown while the visitor's session is being created. Defaults to "Connecting…" when unset.
      - `typing_indicator_enabled` boolean, nullable — Whether to show the three-dot "waiting for response" animation after the visitor sends a message. Unset/null falls back to enabled (true). No text-label variant is supported.
      - `border_radius` 'sharp' | 'rounded' | 'pill' — Corner rounding applied to the bubble, panel, message bubbles, input field, and send button as a coordinated set. Defaults to rounded when unset.
      - `font_size` 'compact' | 'default' | 'large' — Base font-size scale applied to the widget's header text and message text. Defaults to default when unset.

## Other responses

- `400` — Bad request. Possible causes: - `direct_hash` is missing or empty. - The direct hash format is invalid. - The direct hash does not resolve to any resource.

---

[API](https://skmtc.net/voipbin/apis/voipbin-api.md) · [All operations](https://skmtc.net/voipbin/apis/voipbin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/voipbin/voipbin-api/versions/79e779080bcc/schema)
