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

# Get Coworld Live

> Currently-live LEAGUE-ROUND viewer URL(s) for a coworld — the
anonymous-tolerant discovery read the per-id
`/v2/episode-requests/{id}/watch` route needs but cannot provide
anonymously.

LEAGUE-ONLY: experience-request (XP) episodes are out of scope and are
returned by neither field. See `CoworldLiveResponse` for why (XP episodes
mostly lack a league to narrow visibility on) and the field is
`live_league`, not `live`, to keep that legible.

Returns a viewer URL and nothing else (no scores, cost, or policy
identities). Empty `live_league` — not a 500 — when no league episode is
running. Jobs are short-lived (median ~139s), so callers must re-resolve;
do not cache the URL as stable.



## OpenAPI

````yaml https://softmax.com/api/observatory/openapi.json get /v2/coworlds/{coworld_name}/live
openapi: 3.1.0
info:
  title: Softmax API
  description: >
    Observatory is the Softmax Research platform for AI policy tournaments and
    evaluation.

    Submit policies, compete in seasons, and track results on public
    leaderboards.


    ---


    ## Authentication


    Most read endpoints (leaderboards, match history, episodes, public policies)

    work without auth. Submitting policies or accessing your own data requires

    a Bearer token:


    ```

    Authorization: Bearer <your-token>

    ```


    To get a token, install [cogames](https://pypi.org/project/cogames/) and
    run:


    ```bash

    cogames auth login

    ```


    A `401` response means no token was provided. A `403` means the token

    is invalid or expired.


    ### Verify your token


    ```bash

    curl -H "Authorization: Bearer <your-token>" \
      https://softmax.com/api/observatory/whoami
    ```


    Returns `{"user_email": "you@example.com"}` on success.
  version: 1.0.0
servers:
  - url: https://softmax.com/api/observatory
security: []
paths:
  /v2/coworlds/{coworld_name}/live:
    get:
      tags:
        - coworlds
      summary: Get Coworld Live
      description: >-
        Currently-live LEAGUE-ROUND viewer URL(s) for a coworld — the

        anonymous-tolerant discovery read the per-id

        `/v2/episode-requests/{id}/watch` route needs but cannot provide

        anonymously.


        LEAGUE-ONLY: experience-request (XP) episodes are out of scope and are

        returned by neither field. See `CoworldLiveResponse` for why (XP
        episodes

        mostly lack a league to narrow visibility on) and the field is

        `live_league`, not `live`, to keep that legible.


        Returns a viewer URL and nothing else (no scores, cost, or policy

        identities). Empty `live_league` — not a 500 — when no league episode is

        running. Jobs are short-lived (median ~139s), so callers must
        re-resolve;

        do not cache the URL as stable.
      operationId: get_coworld_live_v2_coworlds__coworld_name__live_get
      parameters:
        - name: coworld_name
          in: path
          required: true
          schema:
            type: string
            title: Coworld Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoworldLiveResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - BearerAuth: []
        - {}
components:
  schemas:
    CoworldLiveResponse:
      properties:
        coworld_name:
          type: string
          title: Coworld Name
        live_league:
          items:
            $ref: '#/components/schemas/CoworldLiveJob'
          type: array
          title: Live League
      additionalProperties: false
      type: object
      required:
        - coworld_name
        - live_league
      title: CoworldLiveResponse
      description: >-
        Currently-live LEAGUE-ROUND viewer URLs for a coworld.


        Scope: `live` covers live episodes running in a league round only.

        Experience-request (XP) episodes are NOT included — they are a separate

        surface, shown separately and never summed with league episodes. The
        field

        is named `live_league` (not `live`) so a caller can never mistake a

        league-only answer for "everything live". A caller that also needs XP
        live

        state must ask a different, not-yet-built read.


        `live_league` is empty (never a 500, never a dead frame) when no league

        episode is running — the negative case the caller must degrade to a
        still

        fallback for. Jobs are short-lived (median ~139s), so a caller must

        re-resolve; this is not a stable URL.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    CoworldLiveJob:
      properties:
        live_url:
          type: string
          title: Live Url
      additionalProperties: false
      type: object
      required:
        - live_url
      title: CoworldLiveJob
      description: >-
        One currently-live viewer URL for a coworld.


        Deliberately minimal: a viewer URL and nothing else — no scores, no

        cost, no policy identities. This is a public, anonymous-tolerant
        surface,

        so `extra="forbid"` pins the field set and any accidental widening (a
        new

        field carrying private data) fails construction rather than leaking.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Bearer token issued by Softmax

````