---
title: "One observation with its artifacts and rule results"
method: GET
path: "/v1/page-observations/{observationId}"
tags: ["PageObservations"]
---

# One observation with its artifacts and rule results

`GET /v1/page-observations/{observationId}`

## Request

- Base URL: `https://api.ironfang.com/audit`
- URL: `https://api.ironfang.com/audit/v1/page-observations/{observationId}`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Returns an observation belonging to the authenticated organisation, including its captured artifact metadata and deterministic rule results.

## Path parameters

- `observationId` string, uuid, required

## Response `200`

Retained observation metadata

- PageObservation
  - `artifacts` Artifact[]
    - `audit_id` string, required
    - `byte_length` integer, required
    - `created_at` string, date-time, required
    - `derived_from_sha256` string
    - `expires_at` string, date-time
    - `hosted_state` 'available' | 'expiring' | 'deleted'
    - `id` string, required
    - `media_type` string, required
    - `name` string, required
    - `object_key` string, required
    - `organisation_id` string, required
    - `page_observation_id` string
    - `sha256` string, required
    - `transformation` string
    - `type` string, required
  - `audit_id` string, required
  - `canonical_url` string
  - `capture_status` 'captured' | 'error', required
  - `captured_at` string, date-time
  - `change_classification` 'NEW' | 'MOVED' | 'CHANGED' | 'UNCHANGED'
  - `compliance_state` 'PASS' | 'WARNING' | 'FAIL' | 'ERROR'
  - `created_at` string, date-time, required
  - `error` string
  - `final_url` string
  - `http_status` integer
  - `id` string, required
  - `merkle_proof` MerkleStep[]
    - `hash` string, required
    - `side` 'left' | 'right', required
  - `metadata` CaptureMetadata, required
    - `browser` string, required
    - `browser_version` string, required
    - `build_id` string, required
    - `capture_truncated` boolean, required
    - `colour_scheme` string, required
    - `device_scale_factor` number, required
    - `dns_answers` string[], nullable, required
    - `duration_ms` integer, required
    - `locale` string, required
    - `region` string, required
    - `remote_port` integer
    - `response_headers` object, nullable, required
    - `settle_ms` integer, required
    - `settle_outcome` string, required
    - `timezone` string, required
    - `tls_certificate_sha256` string
    - `tls_cipher` string
    - `tls_issuer` string
    - `tls_protocol` string
    - `tls_subject` string
    - `tls_valid_from` string
    - `tls_valid_to` string
    - `transformations` string[], nullable, required
    - `user_agent` string, required
    - `viewport_height` integer, required
    - `viewport_width` integer, required
    - `worker_id` string, required
  - `observed_remote_ip` string
  - `page_hash` string
  - `page_id` string, required
  - `previous_observation_id` string
  - `redirect_chain` Redirect[], nullable, required
    - `status_code` integer, required
    - `url` string, required
  - `requested_url` string, required
  - `rule_results` RuleResult[]
    - `audit_id` string, required
    - `evaluated_at` string, date-time, required
    - `evidence_excerpt` string
    - `expected` string
    - `id` string, required
    - `observed` string
    - `page_observation_id` string, required
    - `rule_id` string, required: The exact rule revision this result was evaluated against.
    - `rule_lineage_id` string, required: The rule across every revision of it. Match a finding on this rather than reading a rule's whole revision history to see whether a result is its own.
    - `rule_name` string, required
    - `rule_version` integer, required
    - `severity` 'info' | 'warning' | 'failure' | 'critical', required
    - `status` 'pass' | 'fail' | 'warning' | 'not_applicable' | 'error', required
  - `text_changed` boolean, required
  - `textual_change_score` number, required
  - `title` string
  - `visual_change_score` number, required
  - `visual_changed` boolean, required

## Other responses

- `400`: Problem response
- `404`: Not found

---

[API](https://skmtc.dev/ironfang/apis/ironfang-audit-api.md) · [All operations](https://skmtc.dev/ironfang/apis/ironfang-audit-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ironfang/apis/ironfang-audit-api/revisions/7430deff2cbd?raw)
