---
title: "Read one revision of a saved request"
method: GET
path: "/v1/specs/{id}/revisions/{revision_id}"
---

# Read one revision of a saved request

`GET /v1/specs/{id}/revisions/{revision_id}`

## Request

- Base URL: `https://api.specstream.ai`
- URL: `https://api.specstream.ai/v1/specs/{id}/revisions/{revision_id}`
- Auth: API key in header `Authorization`

## Path parameters

- `id` string, required
- `revision_id` string, required

## Response `200`

Request revision

- object
  - `data` SpecRevision, required
    - `revision_id` string, required
    - `spec_id` string, required
    - `revision` integer, required
    - `parent_revision_id` string, nullable, required
    - `ast` QueryAst, required
      - `target_requirement` TargetRequirement
        - `contract` 'target-source-assertion.v1'
        - `entity_kind` 'place' | 'creator' | 'organization' | 'storefront_product' | 'app_listing' | 'job_posting' | 'scholarly_work' | 'tender' | 'grant' | 'software_repository' | 'software_package' | 'dataset' | 'clinical_trial' | 'regulatory_document' | 'vulnerability' | 'book' | 'podcast' | 'web_page' | 'knowledge_entity' | 'person', required
        - `text` string, required
        - `reading_policy_sha256` string, required
        - `max_candidates` integer
        - `max_passages` integer
        - `max_context_chars` integer
        - `max_source_chars` integer
        - `timeout_ms` integer
        - `evidence_meaning` 'interpreted_published_assertion'
        - `prior_knowledge_authority` false
        - `modifies_typed_predicates` false
      - `semantic_binding` SemanticBinding
        - `spec_version` 'semantic_binding.v1'
        - `catalog_sha256` string, required
        - `target_id` string, required
        - `footprint_id` string, nullable
      - `spec_version` 'query_ast.v1'
      - `entity_type` 'local_business' | 'creator' | 'organization' | 'storefront_product' | 'app_listing' | 'job_posting' | 'scholarly_work' | 'tender' | 'grant' | 'software_repository' | 'software_package' | 'dataset' | 'clinical_trial' | 'regulatory_document' | 'vulnerability' | 'book' | 'podcast' | 'web_page' | 'knowledge_entity' | 'person', required
      - `limit` QueryLimit, required
        - `max` integer
        - `inferred` boolean
      - `discovery` Discovery, required
        - `geography_scope` 'worldwide.v1', nullable
        - `term` string, required
        - `platforms` string[]
        - `searches` string[]
        - `role_phrases` string[]
        - `seed_identifiers` object
      - `geo` Geo
        - `kind` 'country' | 'locality' | 'admin1', required
        - `query_label` string, required
        - `country_code` string, nullable
        - `admin1_code` string, nullable, required
        - `locality` string, nullable, required
        - `postal_code` string, nullable, required
        - `status` 'qualified' | 'ambiguous' | 'unqualified', required
        - `source` 'gazetteer' | 'catalog' | 'alias' | 'well_formed', required
        - `geoname_id` integer, nullable
        - `near` Near: A distance from a point: "within 65 miles of 1417 E Fedora Ave, Fresno".
          - `point` string, required
          - `latitude` number, required
          - `longitude` number, required
          - `radius_km` number, required
      - `where` Predicate[], required
        - `field_id` string, required
        - `op` 'count_matches' | 'contains' | 'not_contains' | 'has_any' | 'has_all' | 'has_none' | 'before' | 'after' | 'on_or_before' | 'on_or_after' | 'gt' | 'lt' | 'ne' | 'not_in' | 'gte' | 'lte' | 'eq' | 'exists' | 'class_in' | 'in', required
        - `value` union, required
          - boolean
          - integer
          - number
          - string
          - string[]
          - CountMatches
            - `condition` union
              - …
            - `count` CountComparison, required
              - …
      - `match_expression` MatchExpression: Explicit logical scope; leaves remain ordinary source-verifiable predicates.
        - `op` 'all' | 'any' | 'not', required
        - `clauses` union[], required
          - union
            - Predicate
              - …
            - unknown
      - `output_fields` OutputField[]
        - `field_id` string, required
        - `required` boolean
      - `worded_conditions` WordedCondition[]
        - `condition_id` string, required
        - `words` string, required
        - `statement` string, required
        - `search_words` string
      - `worded_outputs` WordedOutput[]
        - `detail_id` string, required
        - `words` string, required
        - `description` string, required
        - `value_type` 'text' | 'number' | 'date' | 'url' | 'email' | 'phone' | 'yes_no'
        - `required` boolean
      - `sort` SortKey[], required
        - `field_id` string, required
        - `direction` 'asc' | 'desc', required
      - `locale` string, required
      - `inferred` InferredClause[], required
        - `field_id` string, required
        - `reason` string, required
      - `unsupported` UnsupportedClause[], required
        - `field_id` string, required
        - `op` 'count_matches' | 'contains' | 'not_contains' | 'has_any' | 'has_all' | 'has_none' | 'before' | 'after' | 'on_or_before' | 'on_or_after' | 'gt' | 'lt' | 'ne' | 'not_in' | 'gte' | 'lte' | 'eq' | 'exists' | 'class_in' | 'in', required
        - `value` union, required
          - boolean
          - integer
          - number
          - string
          - string[]
          - CountMatches
            - `condition` union
              - …
            - `count` CountComparison, required
              - …
        - `reason` string, required
    - `ast_hash` string, required
    - `name` string, required
    - `context` string, required
    - `created_at` string, date-time, required

## Other responses

- `default`: Error envelope

---

[API](https://skmtc.dev/specstream/apis/specstream-api.md) · [All operations](https://skmtc.dev/specstream/apis/specstream-api/llms.txt) · [OpenAPI document](https://skmtc.dev/specstream/apis/specstream-api/revisions/5a9f51143a13?raw)
