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

# Get a work item's newest demo

> The item's newest live demo record: its artifact id, the commit it was recorded at, and the parsed record, which names the test that recorded the demo. A demo belongs to an item the same way its other artifacts do. `demo` is null when the item has none. `record` is null when the stored bytes are missing or do not parse. `workItemId` is the item's id or its number in this factory.



## OpenAPI

````yaml /openapi.yaml get /v1/work-items/{workItemId}/demo
openapi: 3.0.3
info:
  contact:
    email: hello@outerlayer.ai
    url: https://www.outerlayer.ai
  description: >-
    The OuterLayer Gateway API lets you ingest coding-agent sessions and record
    evidence of work programmatically.


    Most teams reach it through the `outerlayer` CLI, which calls it for them.

    Call it directly to build your own integration or to automate what the
    dashboard does.


    Versioning: every endpoint is prefixed with `/v1/`. Breaking changes ship
    under a new version prefix (`/v2/`, etc.) with a 90-day-minimum deprecation
    window; anything additive lands on the current prefix.


    Vocabulary: the dashboard calls this API's `app` a **factory** — the unit
    that owns a set of repositories, the agent sessions worked on them, and the
    evidence they produce. They are the same entity. The API keeps `app` in its
    paths, headers, and field names because those are a published contract; only
    the product surface was renamed.
  title: OuterLayer Gateway API
  version: '1.0'
servers:
  - description: Production (OuterLayer Cloud)
    url: https://api.outerlayer.ai
  - description: Local dev server (self-hosted gateway)
    url: http://localhost:9418
security:
  - AppId: []
    BearerAuth: []
tags:
  - description: >-
      What a CLI login token can read about its owner without naming a factory,
      such as the factories they can use.
    name: Account
  - description: >-
      The CLI version a gateway names to its runners, set with the gateway's
      runner version key.
    name: Runner version
  - description: >-
      Coding-agent session ingest (outerlayer sync) and content-addressed
      session images.
    name: Agents
  - description: >-
      Evidence artifacts (screenshots, recordings, reports, logs) emitted as
      proof of a change and anchored to pull requests.
    name: Artifacts
  - description: >-
      Pass/fail outcomes of checks run in your own CI or compute, anchored to
      pull requests with the run URL as proof.
    name: Emitted Results
  - description: >-
      The acceptance criteria of a work item, recorded as one list. The Criteria
      tab, its count and the item status read that list.
    name: Criteria
  - description: >-
      What any agent found wrong about a change under review or about a rule it
      ran on, recorded on a work item.
    name: Findings
  - description: >-
      Find, file and edit the issue a spec lives in, through OuterLayer, with no
      tracker credential on the caller's side.
    name: Specs
  - description: >-
      Add or remove a source's statement that it is working on an issue or pull
      request, and read what is currently live.
    name: Work Items
  - description: >-
      What the factory's GitHub App installation lets builds do on each
      connected repository, and whether each default branch requires a pull
      request.
    name: Repositories
  - description: >-
      A runner host's heartbeat — its CLI version, slots and last request for
      work — and the factory's list of hosts with a derived status.
    name: Hosts
  - description: Query server feature availability.
    name: Capabilities
  - description: Per-model LLM pricing data. Public, unauthenticated.
    name: Pricing
  - description: >-
      Create, list, and revoke factory API keys. Plaintext returned exactly once
      at creation.
    name: API Keys
  - description: >-
      Factory CRUD — a factory is owned by an organization and is the unit every
      other resource hangs off. Lets a headless agent provision one without the
      dashboard.
    name: Apps
  - description: >-
      Agent-coding session list and full transcript reads, with actor-privacy
      controls for machine keys.
    name: Sessions
  - description: >-
      Per-model token spend and fleet-wide agent behavior tiles, including
      two-window comparisons.
    name: Metrics
  - description: Synced-commit history of the app's `.outerlayer/` context tree.
    name: Context
  - description: >-
      Session→PR attribution: which agent sessions produced which pull requests,
      and what each attributed PR cost.
    name: PRs
  - description: Service health checks.
    name: Health
  - description: >-
      Org member and role administration, authenticated with an org-scoped
      management API key (`olk_…`) minted in the dashboard's settings.
    name: Org Management
  - description: OAuth 2.1 discovery metadata for MCP connector clients.
    name: OAuth
paths:
  /v1/work-items/{workItemId}/demo:
    get:
      tags:
        - Work Items
      summary: Get a work item's newest demo
      description: >-
        The item's newest live demo record: its artifact id, the commit it was
        recorded at, and the parsed record, which names the test that recorded
        the demo. A demo belongs to an item the same way its other artifacts do.
        `demo` is null when the item has none. `record` is null when the stored
        bytes are missing or do not parse. `workItemId` is the item's id or its
        number in this factory.
      operationId: get-work-item-demo
      parameters:
        - in: path
          name: workItemId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties:
                      demo:
                        description: >-
                          The newest live demo record; null when the item has
                          none.
                        nullable: true
                        properties:
                          artifactId:
                            description: >-
                              The demo record's artifact id, which `--replaces`
                              names.
                            type: string
                          commitSha:
                            description: >-
                              The commit the demo was recorded at; empty when
                              the emit named none.
                            type: string
                          emittedAt:
                            type: string
                          liveArtifactIds:
                            description: >-
                              The artifact ids of the item that no later
                              artifact has replaced. A new demo replaces only
                              ids in this list.
                            items:
                              type: string
                            type: array
                          prNumber:
                            nullable: true
                            type: integer
                          record:
                            description: >-
                              The stored record; null when its bytes are missing
                              or do not parse.
                            oneOf:
                              - additionalProperties: false
                                properties:
                                  chapters:
                                    items:
                                      additionalProperties: false
                                      properties:
                                        bound:
                                          type: boolean
                                        checks:
                                          items:
                                            additionalProperties: false
                                            properties:
                                              passed:
                                                type: boolean
                                              text:
                                                maxLength: 500
                                                minLength: 1
                                                type: string
                                            required:
                                              - text
                                              - passed
                                            type: object
                                          maxItems: 100
                                          type: array
                                        clipArtifactId:
                                          maxLength: 64
                                          minLength: 1
                                          type: string
                                        criterionId:
                                          nullable: true
                                          pattern: ^[A-Za-z0-9_.:-]{1,64}$
                                          type: string
                                        end:
                                          exclusiveMinimum: true
                                          minimum: 0
                                          type: number
                                        narration:
                                          maxLength: 2000
                                          type: string
                                        start:
                                          minimum: 0
                                          type: number
                                        title:
                                          maxLength: 200
                                          minLength: 1
                                          type: string
                                      required:
                                        - criterionId
                                        - start
                                        - end
                                        - title
                                        - narration
                                        - checks
                                        - clipArtifactId
                                        - bound
                                      type: object
                                    maxItems: 200
                                    minItems: 1
                                    type: array
                                  schemaVersion:
                                    enum:
                                      - 1
                                    type: number
                                required:
                                  - schemaVersion
                                  - chapters
                                type: object
                              - additionalProperties: false
                                properties:
                                  chapters:
                                    items:
                                      additionalProperties: false
                                      properties:
                                        bound:
                                          type: boolean
                                        checks:
                                          items:
                                            additionalProperties: false
                                            properties:
                                              passed:
                                                type: boolean
                                              text:
                                                maxLength: 500
                                                minLength: 1
                                                type: string
                                            required:
                                              - text
                                              - passed
                                            type: object
                                          maxItems: 100
                                          type: array
                                        clipArtifactId:
                                          maxLength: 64
                                          minLength: 1
                                          type: string
                                        comparable:
                                          enum:
                                            - 'yes'
                                            - 'no'
                                            - not checked
                                          type: string
                                        criterionId:
                                          nullable: true
                                          pattern: ^[A-Za-z0-9_.:-]{1,64}$
                                          type: string
                                        difference:
                                          additionalProperties: false
                                          properties:
                                            check:
                                              minimum: 0
                                              type: integer
                                            region:
                                              additionalProperties: false
                                              properties:
                                                height:
                                                  exclusiveMinimum: true
                                                  minimum: 0
                                                  type: integer
                                                width:
                                                  exclusiveMinimum: true
                                                  minimum: 0
                                                  type: integer
                                                x:
                                                  minimum: 0
                                                  type: integer
                                                'y':
                                                  minimum: 0
                                                  type: integer
                                              required:
                                                - x
                                                - 'y'
                                                - width
                                                - height
                                              type: object
                                          required:
                                            - check
                                            - region
                                          type: object
                                        end:
                                          exclusiveMinimum: true
                                          minimum: 0
                                          type: number
                                        narration:
                                          maxLength: 2000
                                          type: string
                                        start:
                                          minimum: 0
                                          type: number
                                        stills:
                                          items:
                                            additionalProperties: false
                                            properties:
                                              check:
                                                minimum: 0
                                                type: integer
                                              sha256:
                                                pattern: ^[0-9a-f]{64}$
                                                type: string
                                            required:
                                              - check
                                              - sha256
                                            type: object
                                          maxItems: 100
                                          type: array
                                        title:
                                          maxLength: 200
                                          minLength: 1
                                          type: string
                                      required:
                                        - criterionId
                                        - start
                                        - end
                                        - title
                                        - narration
                                        - checks
                                        - clipArtifactId
                                        - bound
                                        - comparable
                                        - stills
                                      type: object
                                    maxItems: 200
                                    minItems: 1
                                    type: array
                                  schemaVersion:
                                    enum:
                                      - 2
                                    type: number
                                required:
                                  - schemaVersion
                                  - chapters
                                type: object
                              - additionalProperties: false
                                properties:
                                  chapters:
                                    items:
                                      additionalProperties: false
                                      properties:
                                        artifactId:
                                          maxLength: 64
                                          minLength: 1
                                          type: string
                                        bound:
                                          type: boolean
                                        checks:
                                          items:
                                            additionalProperties: false
                                            properties:
                                              passed:
                                                type: boolean
                                              text:
                                                maxLength: 500
                                                minLength: 1
                                                type: string
                                            required:
                                              - text
                                              - passed
                                            type: object
                                          maxItems: 100
                                          type: array
                                        comparable:
                                          enum:
                                            - 'yes'
                                            - 'no'
                                            - not checked
                                          type: string
                                        criterionId:
                                          nullable: true
                                          pattern: ^[A-Za-z0-9_.:-]{1,64}$
                                          type: string
                                        difference:
                                          additionalProperties: false
                                          properties:
                                            check:
                                              minimum: 0
                                              type: integer
                                            region:
                                              additionalProperties: false
                                              properties:
                                                height:
                                                  exclusiveMinimum: true
                                                  minimum: 0
                                                  type: integer
                                                width:
                                                  exclusiveMinimum: true
                                                  minimum: 0
                                                  type: integer
                                                x:
                                                  minimum: 0
                                                  type: integer
                                                'y':
                                                  minimum: 0
                                                  type: integer
                                              required:
                                                - x
                                                - 'y'
                                                - width
                                                - height
                                              type: object
                                          required:
                                            - check
                                            - region
                                          type: object
                                        end:
                                          exclusiveMinimum: true
                                          minimum: 0
                                          type: number
                                        narration:
                                          maxLength: 2000
                                          type: string
                                        range:
                                          properties:
                                            end:
                                              type: number
                                            start:
                                              minimum: 0
                                              type: number
                                          required:
                                            - start
                                            - end
                                          type: object
                                        start:
                                          minimum: 0
                                          type: number
                                        stills:
                                          items:
                                            additionalProperties: false
                                            properties:
                                              check:
                                                minimum: 0
                                                type: integer
                                              sha256:
                                                pattern: ^[0-9a-f]{64}$
                                                type: string
                                            required:
                                              - check
                                              - sha256
                                            type: object
                                          maxItems: 100
                                          type: array
                                        title:
                                          maxLength: 200
                                          minLength: 1
                                          type: string
                                      required:
                                        - criterionId
                                        - start
                                        - end
                                        - title
                                        - narration
                                        - checks
                                        - artifactId
                                        - range
                                        - bound
                                        - comparable
                                        - stills
                                      type: object
                                    maxItems: 200
                                    minItems: 1
                                    type: array
                                  schemaVersion:
                                    enum:
                                      - 3
                                    type: number
                                  test:
                                    maxLength: 500
                                    minLength: 1
                                    type: string
                                  video:
                                    anyOf:
                                      - additionalProperties: false
                                        properties:
                                          artifactId:
                                            maxLength: 64
                                            minLength: 1
                                            type: string
                                        required:
                                          - artifactId
                                        type: object
                                      - additionalProperties: false
                                        properties:
                                          bytes:
                                            minimum: 0
                                            type: integer
                                          omitted:
                                            enum:
                                              - size
                                            type: string
                                        required:
                                          - omitted
                                          - bytes
                                        type: object
                                required:
                                  - schemaVersion
                                  - video
                                  - chapters
                                type: object
                              - nullable: true
                          repository:
                            type: string
                        required:
                          - artifactId
                          - commitSha
                          - emittedAt
                          - repository
                          - prNumber
                          - record
                          - liveArtifactIds
                        type: object
                    required:
                      - demo
                    type: object
                required:
                  - data
                type: object
          description: The item's newest demo record, or null.
        '400':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                    required:
                      - code
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Invalid request parameters (validation failed).
        '401':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                    required:
                      - code
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Missing or invalid API key.
        '404':
          content:
            application/json:
              schema:
                properties:
                  error:
                    properties:
                      code:
                        type: string
                      message:
                        type: string
                    required:
                      - code
                      - message
                    type: object
                required:
                  - error
                type: object
          description: No such work item.
components:
  securitySchemes:
    AppId:
      description: Factory id the request is scoped to.
      in: header
      name: X-Outerlayer-App-Id
      type: apiKey
    BearerAuth:
      description: API key (sk_outerlayer_*)
      scheme: bearer
      type: http

````

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