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

# Get an artifact

> Read report metadata, provenance and its organization-gated in-app URL.

Requires `samples:read` and `results:read`. Credit-free. Supply an artifact UUID.

The response contains `id`, `org_id`, `title`, `description`, `sample_ids`,
`job_ids`, `author_type` (`user` or `agent`), `author_id`,
`entry_html_path` (`index.html`), `size_bytes`, `sha256`, `created_at` and
`url`. The URL is a relative in-app path such as `/artifacts/<uuid>` and
requires organization login. HTML and bundled asset bytes are not returned.

```python theme={"dark"}
artifact = client.artifacts.get(artifact_id)
print(artifact["description"], artifact["url"])
```

MCP `get_artifact` takes `artifact_id`. Missing artifacts and IDs belonging to
another organization return **404**. Responses are private and not cached.


## OpenAPI

````yaml GET /artifacts/{id}
openapi: 3.1.0
info:
  title: Strand AI Platform API
  version: v1
  description: >-
    REST surface for uploading WSIs, submitting Lattice inference jobs, and
    streaming results. All endpoints require an API key or Strand AI OAuth
    access token in the `Authorization: Bearer` header.
servers:
  - url: https://app.strandai.com/api/v1
    description: Production
security:
  - ApiKey: []
  - OAuth2: []
paths:
  /artifacts/{id}:
    get:
      summary: Get an artifact
      description: >-
        Metadata, provenance and org-gated in-app URL, not HTML or asset bytes.
        Credit-free. Requires samples:read and results:read. Responses are
        private, no-store; cross-org IDs return 404.
      operationId: getArtifact
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Artifact metadata
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Artifact'
        '401':
          description: Missing or invalid credential
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Insufficient scopes or organization access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Artifact not found in this organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - ApiKey: []
        - OAuth2:
            - samples:read
            - results:read
components:
  schemas:
    Artifact:
      type: object
      required:
        - id
        - org_id
        - title
        - description
        - sample_ids
        - job_ids
        - author_type
        - author_id
        - entry_html_path
        - size_bytes
        - sha256
        - created_at
        - url
      properties:
        id:
          type: string
          format: uuid
        org_id:
          type: string
          format: uuid
        title:
          type: string
        description:
          type: string
        sample_ids:
          type: array
          items:
            type: string
            format: uuid
        job_ids:
          type: array
          items:
            type: string
            format: uuid
        author_type:
          type: string
          enum:
            - user
            - agent
        author_id:
          type: string
        entry_html_path:
          type: string
          enum:
            - index.html
        size_bytes:
          type: integer
          minimum: 1
          maximum: 33554432
        sha256:
          type: string
          pattern: ^[a-f0-9]{64}$
        created_at:
          type: string
          format: date-time
        url:
          type: string
          description: Org-gated relative in-app URL /artifacts/{id}, not a public link.
    Error:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: string
        message:
          type: string
        reason:
          type: string
          nullable: true
        required:
          type: integer
          nullable: true
        retryAfterSeconds:
          type: integer
          nullable: true
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: sk-strand-XXXXXXXXXXXXXXXXXXXXXXXX
    OAuth2:
      type: oauth2
      description: >-
        Strand AI authorization-code flow with S256 PKCE, explicit organization
        consent, and RFC 8707 resource binding.
      flows:
        authorizationCode:
          authorizationUrl: https://auth.strandai.com/oauth2/auth
          tokenUrl: https://auth.strandai.com/oauth2/token
          scopes:
            samples:read: Read slide metadata and estimates
            samples:write: Upload and change slides
            jobs:read: Read run status
            jobs:write: Start, export, or cancel runs
            results:read: Read and download results
            credits:spend: Reserve and spend organization credits

````

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