---
title: "List the saved requests you can open"
method: GET
path: "/v1/specs"
---

# List the saved requests you can open

`GET /v1/specs`

## Request

- Base URL: `https://api.specstream.ai`
- URL: `https://api.specstream.ai/v1/specs`
- Auth: API key in header `Authorization`

## Query parameters

- `limit` integer
- `cursor` string
- `project_id` string
- `archived` boolean

## Response `200`

Saved requests

- object
  - `data` SpecPage, required
    - `specs` SavedSpec[], required
      - `spec_id` string, required
      - `project_id` string, nullable, required
      - `account_id` string, nullable, required
      - `head_revision_id` string, required
      - `revision` 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".
              - …
          - `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
              - …
          - `match_expression` MatchExpression: Explicit logical scope; leaves remain ordinary source-verifiable predicates.
            - `op` 'all' | 'any' | 'not', required
            - `clauses` union[], required
              - …
          - `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
              - …
            - `reason` string, required
        - `ast_hash` string, required
        - `name` string, required
        - `context` string, required
        - `created_at` string, date-time, required
      - `archived` boolean, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
    - `next_cursor` string, nullable

## 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)
