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

# Quick Search

> Execute a search and receive results immediately, without needing to poll a persistent Search object for completion.

The Quick Search endpoint runs a search synchronously and returns results directly in the response. A Search object is still created and counts toward your quota, but unlike Advanced Search you don't need to poll for results — they're returned immediately.

## Request body

<ParamField body="categories" type="array" required>
  Array of category IDs to include in the search results.
</ParamField>

<ParamField body="context" type="string">
  Additional context for the AI to tailor the search and reporting (for example, your organization or focus area). Maximum 1000 characters.
</ParamField>

<ParamField body="filter_prompt" type="string" required>
  A list of policy topics to search for, one per line. Longer, descriptive phrases work best. Maximum 5000 characters.
</ParamField>

<ParamField body="labels" type="object">
  A dictionary of string key-value pairs for your own record keeping. Use this to attach metadata to the search, such as the project or team it belongs to (for example, `{"project": "tax-reform", "team": "policy"}`).
</ParamField>

<ParamField body="is_test" type="boolean">
  Set to `true` to validate the request and return example data without running a source search. Required fields such as `categories`, `filter_prompt`, and `date_range` are still validated normally.
</ParamField>

<ParamField body="test_data" type="object">
  Custom dummy data to return when `is_test` is `true`. Quick Search only supports custom `search_results`; it does not support custom edited outputs.

  <Expandable title="Test data fields">
    <ParamField body="search_results" type="array">
      Array of search result objects to return instead of Parsagon's built-in example results.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="date_range" type="object" required>
  Time period to search within. Must cover no more than **72 hours (3 days)** — use either `start_date`/`end_date` or `duration_seconds` ≤ 259200.

  <Expandable title="Fixed range">
    <ParamField body="start_date" type="string">
      ISO 8601 datetime (UTC). The earliest supported value is 90 days before the time of the request.
    </ParamField>

    <ParamField body="end_date" type="string">
      ISO 8601 datetime (UTC).
    </ParamField>
  </Expandable>

  <Expandable title="Relative duration">
    <ParamField body="duration_seconds" type="number">
      Positive number of seconds before "now" to search within (maximum 259200).
    </ParamField>
  </Expandable>
</ParamField>

## Response

<ResponseField name="search_results" type="array">
  Array of search result objects.

  <Expandable title="Search result fields">
    <ResponseField name="url" type="string">
      URL of the source document.
    </ResponseField>

    <ResponseField name="title" type="string">
      Title of the document.
    </ResponseField>

    <ResponseField name="date" type="string">
      Date when Parsagon collected the document (ISO 8601, UTC). This may differ slightly from the original publication date.
    </ResponseField>

    <ResponseField name="text" type="string">
      Full text (or main body) of the document.
    </ResponseField>

    <ResponseField name="summary" type="string">
      AI-generated 1–2 sentence summary of the document.
    </ResponseField>

    <ResponseField name="type" type="string">
      Type of document. Either `"ARTICLE"` (press releases, announcements, generic articles, and similar content) or `"LAW"` (bills and legislation).
    </ResponseField>

    <ResponseField name="extra_data" type="object">
      For `"LAW"` documents, an object containing additional legislative metadata. May include `status`, `last_action`, and `last_action_date` — not all fields are present on every document. For non-`"LAW"` documents, this is usually empty.
    </ResponseField>

    <ResponseField name="search_topics" type="array">
      List of integers, each being the zero-based index of a line in `filter_prompt` that is relevant to this search result.
    </ResponseField>

    <ResponseField name="jurisdictions" type="array">
      List of jurisdictions that apply to this result.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="error" type="string | null">
  Error message if an error occurred; otherwise `null`.
</ResponseField>

<ResponseField name="is_test" type="boolean">
  Whether the Search was created in test mode.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://parsagon.io/api/events/v1/quick-search/" \
    -H "Authorization: Token YOUR_API_KEY_HERE" \
    -H "Content-Type: application/json" \
    -d '{
      "categories": [34],
      "context": "User is a medical association",
      "filter_prompt": "Healthcare policy and regulatory developments impacting health insurers and healthcare providers\nLegislation related to insurance mandates, consumer protections, and healthcare affordability",
      "date_range": {
        "start_date": "2026-02-02T08:00",
        "end_date": "2026-02-04T08:00"
      }
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json Example response theme={null}
  {
    "search_results": [
      {
        "url": "https://legislature.maine.gov/LawMakerWeb/summary.asp?ID=280101474",
        "title": "An Act to Lower Health Insurance Costs, Reduce Barriers to Health Care and Ensure Fair Prices for Health Care",
        "text": "Be it enacted by the People of the State of Maine as follows:...",
        "summary": "This act aims to lower health insurance costs, reduce barriers to health care, and ensure fair prices for health care services in Maine.",
        "date": "2026-02-03",
        "type": "LAW",
        "extra_data": {
          "last_action": "Committee on Health Coverage, Insurance and Financial Services suggested and ordered printed. The Bill was REFERRED to the Committee on HEALTH AND HUMAN SERVICES.",
          "last_action_date": "2/3/2026"
        },
        "search_topics": [0],
        "jurisdictions": ["US Maine"]
      }
    ],
    "error": null,
    "is_test": false
  }
  ```
</ResponseExample>

## Test mode

Use `is_test: true` to test your integration without running a source search. The endpoint still validates the request body the same way it does for a normal Quick Search request.

```json Example test request body theme={null}
{
  "categories": [34],
  "context": "User is a medical association",
  "filter_prompt": "Healthcare policy and regulatory developments",
  "date_range": {
    "duration_seconds": 86400
  },
  "is_test": true,
  "test_data": {
    "search_results": [
      {
        "url": "https://example.com/policy-update",
        "title": "Example policy update",
        "text": "Example source text for testing.",
        "summary": "Example summary returned in test mode.",
        "date": "2026-02-03",
        "type": "ARTICLE",
        "extra_data": {},
        "search_topics": [0],
        "jurisdictions": ["US Maine"]
      }
    ]
  }
}
```
