---
title: "Read an immutable source observation."
method: GET
path: "/v1/observations/{id}"
tags: ["Catalog"]
---

# Read an immutable source observation.

`GET /v1/observations/{id}`

## Request

- Base URL: `https://api.sourcey.com`
- URL: `https://api.sourcey.com/v1/observations/{id}`
- Auth: one of:
  - none
  - HTTP bearer

## Path parameters

- `id` string, required

## Response `200`

Successful response.

- GetObservationResponse200
  - `api_contract` 'sourcey.catalog-api/v1', required
  - `artifact_sha256` string, required
  - `data` object, required
    - `capture` object
      - `artifact_scope` 'complete_document' | 'document_excerpt'
      - `availability` 'public' | 'private-receipt', required
      - `bytes` integer, required
      - `digest` string, required
      - `final_uri` string, uri
      - `media_type` string, required
      - `normalized_object` object
        - `bytes` integer, required
        - `digest` string, required
        - `media_type` 'text/plain; charset=utf-8', required
        - `normalizer_contract` 'sourcey.evidence-normalizer/v1alpha1', required
        - `normalizer_id` string, required
        - `toolchain_digest` string, required
        - `version` string, required
      - `redirect_chain` object[]
        - `from` string, uri, required
        - `status` union, required
          - 301
          - 302
          - 303
          - 307
          - 308
        - `to` string, uri, required
      - `requested_uri` string, uri
      - `source_content` object
        - `bytes` integer, required
        - `digest` string, required
        - `media_type` string, required
        - `normalized_bytes` integer, required
        - `normalized_digest` string, required
      - `source_standing` 'live-first-party' | 'archived-first-party' | 'live-third-party' | 'archived-third-party' | 'manual-first-party' | 'manual-third-party'
    - `method` object, required
      - `name` string, required: Capture adapter identifier. Known values are examples; new adapters may appear without changing the observation envelope.
      - `version` string, required
    - `no_capture_reason` 'dns-failure' | 'connect-timeout' | 'tls-failure' | 'access-denied' | 'policy-blocked' | 'empty-response' | 'extractor-error'
    - `observation_contract` 'sourcey.observation/v1alpha1', required
    - `observation_id` string, required
    - `outcome` 'supports-candidate' | 'contradicts-candidate' | 'unreachable' | 'error', required
    - `retrieved_at` string, date-time, required
    - `source_id` string, required
    - `source_uri` string, uri, required
  - `release_id` string, required

## Other responses

- `400`: Invalid request.
- `401`: HTTP 401 response.
- `403`: HTTP 403 response.
- `404`: Resource not found.
- `405`: HTTP 405 response.
- `429`: HTTP 429 response.
- `500`: HTTP 500 response.
- `503`: HTTP 503 response.

---

[API](https://skmtc.dev/sourcey/apis/sourcey-public-api.md) · [All operations](https://skmtc.dev/sourcey/apis/sourcey-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sourcey/apis/sourcey-public-api/revisions/437166b51fa5?raw)
