> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oddswire.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create browser w s ticket

> Create browser w s ticket: request contract, authentication, parameters and response behavior for the Oddswire private pilot.

Account/workspace contract; current authentication, membership and the documented role are required. Account access does not grant source data. This account/control/coverage operation consumes no REST data credits. Its authentication, role and access requirements still apply. See [Current availability](https://docs.oddswire.io/availability.md).

`POST /v1/account/ws-tickets`

[Authentication](https://docs.oddswire.io/authentication.md) · [Requests, quota and errors](https://docs.oddswire.io/errors.md) · [Coverage and units](https://docs.oddswire.io/data.md).


## OpenAPI

````yaml POST /v1/account/ws-tickets
openapi: 3.1.2
info:
  description: >-
    Implemented REST v1 contract. Hosted account login and HTTPS API are
    deployed; signup grants no source data or credits. Core data requires
    explicit approved scope. History, streaming, alerts, Terminal and test
    billing have separate availability limits. Read
    https://docs.oddswire.io/availability. Namespaces, decimal strings, native
    identity and missing coverage retain their contract meaning.
  title: Oddswire REST v1 private pilot
  version: 1.0.0
servers:
  - url: https://api.oddswire.io
    description: Hosted HTTPS API; account grants and allocation are required for data.
security: []
externalDocs:
  description: Current feature availability
  url: https://docs.oddswire.io/availability
paths:
  /v1/account/ws-tickets:
    post:
      summary: createBrowserWSTicket
      description: >-
        Account/workspace contract; current authentication, membership and the
        documented role are required. Account access does not grant source data.
        This account/control/coverage operation consumes no REST data credits.
        Its authentication, role and access requirements still apply. Free
        owner/admin stream controls. Minting requires a verified Clerk bearer,
        an existing account-owned active key, odds+websocket grants and an exact
        configured frontend origin. Tickets redeem once within 30 seconds;
        browser authorization expires within one minute and no later than the
        provider token. Transmit tickets only in the first authenticate frame on
        /v1/ws/browser. Revocation closes the user's browser streams; no
        source/feature grant is created. Capabilities describe configuration and
        access, not authenticated streaming or freshness proof.
      operationId: createBrowserWSTicket
      parameters:
        - description: >-
            UUID of an account where the signed-in user is a member; defaults to
            their oldest account.
          in: header
          name: X-Oddswire-Account
          required: false
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrowserWSTicketInput'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrowserWSTicketPage'
          description: >-
            Successful account/control response; zero REST data credits. Account
            ledger response; no-store. Key secrets appear only once on
            creation/rotation. Lists contain at most 100 recent entries, active
            keys first.
          headers:
            X-Oddswire-Credit-Cost:
              $ref: '#/components/headers/X-Oddswire-Credit-Cost'
            X-Oddswire-Credits-Limit:
              $ref: '#/components/headers/X-Oddswire-Credits-Limit'
            X-Oddswire-Credits-Remaining:
              $ref: '#/components/headers/X-Oddswire-Credits-Remaining'
            X-Oddswire-Credits-Reserved:
              $ref: '#/components/headers/X-Oddswire-Credits-Reserved'
            X-Oddswire-Credits-Reset:
              $ref: '#/components/headers/X-Oddswire-Credits-Reset'
            X-Oddswire-Credits-Used:
              $ref: '#/components/headers/X-Oddswire-Credits-Used'
            X-Oddswire-Metering:
              $ref: '#/components/headers/X-Oddswire-Metering'
            X-Oddswire-Overage:
              $ref: '#/components/headers/X-Oddswire-Overage'
            X-Oddswire-Usage-State:
              $ref: '#/components/headers/X-Oddswire-Usage-State'
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
        '400':
          $ref: '#/components/responses/Problem'
        '401':
          $ref: '#/components/responses/Problem'
        '403':
          $ref: '#/components/responses/Problem'
        '404':
          $ref: '#/components/responses/Problem'
        '405':
          $ref: '#/components/responses/Problem'
        '409':
          $ref: '#/components/responses/Problem'
        '422':
          $ref: '#/components/responses/Problem'
        '429':
          $ref: '#/components/responses/Problem'
        '500':
          $ref: '#/components/responses/Problem'
        '503':
          $ref: '#/components/responses/Problem'
        '504':
          $ref: '#/components/responses/Problem'
      security:
        - AccountSession: []
components:
  schemas:
    BrowserWSTicketInput:
      additionalProperties: false
      properties:
        key_id:
          type: string
        origin:
          type: string
      required:
        - key_id
        - origin
      type: object
    BrowserWSTicketPage:
      additionalProperties: false
      properties:
        data:
          items:
            $ref: '#/components/schemas/WSTicket'
          type: array
        meta:
          $ref: '#/components/schemas/Meta'
        missing:
          items:
            $ref: '#/components/schemas/Missing'
          type: array
      required:
        - data
        - missing
        - meta
      type: object
    WSTicket:
      additionalProperties: false
      properties:
        redeem_until:
          format: date-time
          type: string
        ticket:
          type: string
        valid_until:
          format: date-time
          type: string
      required:
        - ticket
        - redeem_until
        - valid_until
      type: object
    Meta:
      additionalProperties: false
      properties:
        consistency:
          type: string
        count:
          type: integer
        dataset:
          type: string
        namespace:
          type: string
        next_cursor:
          type: string
        request_id:
          type: string
        sent_ts:
          format: date-time
          type: string
        snapshot_ts:
          format: date-time
          type: string
        version:
          type: string
      required:
        - version
        - request_id
        - sent_ts
        - snapshot_ts
        - next_cursor
        - count
        - consistency
      type: object
    Missing:
      additionalProperties: false
      properties:
        detail:
          type: string
        family:
          $ref: '#/components/schemas/Family'
        fixture_id:
          $ref: '#/components/schemas/ID'
        quote_key:
          type: string
        reason:
          type: string
        source_id:
          $ref: '#/components/schemas/ID'
      required:
        - reason
        - detail
      type: object
    Problem:
      additionalProperties: false
      properties:
        code:
          type: string
        detail:
          type: string
        invalid_params:
          items:
            $ref: '#/components/schemas/InvalidParam'
          type: array
        missing:
          items:
            $ref: '#/components/schemas/Missing'
          type: array
        request_id:
          type: string
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      required:
        - type
        - title
        - status
        - detail
        - code
        - request_id
        - invalid_params
        - missing
      type: object
    Family:
      enum:
        - 1x2
        - total
        - asian_handicap
      type: string
    ID:
      maximum: 9007199254740991
      minimum: 1
      type: integer
    InvalidParam:
      additionalProperties: false
      properties:
        name:
          type: string
        reason:
          type: string
      required:
        - name
        - reason
      type: object
  headers:
    X-Oddswire-Credit-Cost:
      description: >-
        Account-scoped admission snapshot where authenticated: remaining
        excludes holds; used counts settled calls. Cost 1 reserves one credit;
        actual charge settles only after complete local write/flush. Inspect
        free account/usage by request ID for final state. UTC reset is RFC3339;
        overage is off. Unknown credentials disclose no account counters.
      schema:
        type: string
    X-Oddswire-Credits-Limit:
      description: >-
        Account-scoped admission snapshot where authenticated: remaining
        excludes holds; used counts settled calls. Cost 1 reserves one credit;
        actual charge settles only after complete local write/flush. Inspect
        free account/usage by request ID for final state. UTC reset is RFC3339;
        overage is off. Unknown credentials disclose no account counters.
      schema:
        type: string
    X-Oddswire-Credits-Remaining:
      description: >-
        Account-scoped admission snapshot where authenticated: remaining
        excludes holds; used counts settled calls. Cost 1 reserves one credit;
        actual charge settles only after complete local write/flush. Inspect
        free account/usage by request ID for final state. UTC reset is RFC3339;
        overage is off. Unknown credentials disclose no account counters.
      schema:
        type: string
    X-Oddswire-Credits-Reserved:
      description: >-
        Account-scoped admission snapshot where authenticated: remaining
        excludes holds; used counts settled calls. Cost 1 reserves one credit;
        actual charge settles only after complete local write/flush. Inspect
        free account/usage by request ID for final state. UTC reset is RFC3339;
        overage is off. Unknown credentials disclose no account counters.
      schema:
        type: string
    X-Oddswire-Credits-Reset:
      description: >-
        Account-scoped admission snapshot where authenticated: remaining
        excludes holds; used counts settled calls. Cost 1 reserves one credit;
        actual charge settles only after complete local write/flush. Inspect
        free account/usage by request ID for final state. UTC reset is RFC3339;
        overage is off. Unknown credentials disclose no account counters.
      schema:
        type: string
    X-Oddswire-Credits-Used:
      description: >-
        Account-scoped admission snapshot where authenticated: remaining
        excludes holds; used counts settled calls. Cost 1 reserves one credit;
        actual charge settles only after complete local write/flush. Inspect
        free account/usage by request ID for final state. UTC reset is RFC3339;
        overage is off. Unknown credentials disclose no account counters.
      schema:
        type: string
    X-Oddswire-Metering:
      description: >-
        Account-scoped admission snapshot where authenticated: remaining
        excludes holds; used counts settled calls. Cost 1 reserves one credit;
        actual charge settles only after complete local write/flush. Inspect
        free account/usage by request ID for final state. UTC reset is RFC3339;
        overage is off. Unknown credentials disclose no account counters.
      schema:
        type: string
    X-Oddswire-Overage:
      description: >-
        Account-scoped admission snapshot where authenticated: remaining
        excludes holds; used counts settled calls. Cost 1 reserves one credit;
        actual charge settles only after complete local write/flush. Inspect
        free account/usage by request ID for final state. UTC reset is RFC3339;
        overage is off. Unknown credentials disclose no account counters.
      schema:
        type: string
    X-Oddswire-Usage-State:
      description: >-
        Account-scoped admission snapshot where authenticated: remaining
        excludes holds; used counts settled calls. Cost 1 reserves one credit;
        actual charge settles only after complete local write/flush. Inspect
        free account/usage by request ID for final state. UTC reset is RFC3339;
        overage is off. Unknown credentials disclose no account counters.
      schema:
        type: string
    X-Request-ID:
      description: >-
        Account-scoped admission snapshot where authenticated: remaining
        excludes holds; used counts settled calls. Cost 1 reserves one credit;
        actual charge settles only after complete local write/flush. Inspect
        free account/usage by request ID for final state. UTC reset is RFC3339;
        overage is off. Unknown credentials disclose no account counters.
      schema:
        type: string
  responses:
    Problem:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
      description: >-
        Structured actionable problem; errors consume zero credits. Quota
        exhaustion/unconfigured returns 402 with counters/reset headers and free
        usage guidance. 429 Retry-After is separate abuse control. No database
        details or credentials.
      headers:
        X-Oddswire-Credit-Cost:
          $ref: '#/components/headers/X-Oddswire-Credit-Cost'
        X-Oddswire-Credits-Limit:
          $ref: '#/components/headers/X-Oddswire-Credits-Limit'
        X-Oddswire-Credits-Remaining:
          $ref: '#/components/headers/X-Oddswire-Credits-Remaining'
        X-Oddswire-Credits-Reserved:
          $ref: '#/components/headers/X-Oddswire-Credits-Reserved'
        X-Oddswire-Credits-Reset:
          $ref: '#/components/headers/X-Oddswire-Credits-Reset'
        X-Oddswire-Credits-Used:
          $ref: '#/components/headers/X-Oddswire-Credits-Used'
        X-Oddswire-Metering:
          $ref: '#/components/headers/X-Oddswire-Metering'
        X-Oddswire-Overage:
          $ref: '#/components/headers/X-Oddswire-Overage'
        X-Oddswire-Usage-State:
          $ref: '#/components/headers/X-Oddswire-Usage-State'
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
  securitySchemes:
    AccountSession:
      description: >-
        Production Clerk bearer session for documented
        account-management/introspection operations; current membership and
        roles required. CLI local sessions are development-only and rejected in
        production.
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.