---
title: "Full-text search over the corpus"
method: GET
path: "/api/v1/search"
tags: ["search"]
---

# Full-text search over the corpus

`GET /api/v1/search`

## Request

- Base URL: `https://horizon.alchemylab.sh`
- URL: `https://horizon.alchemylab.sh/api/v1/search`
- Auth: HTTP bearer

Full-depth search (the free tier returns only a 3-item teaser). Near-duplicate stories are collapsed to one representative per cluster by default.

## Query parameters

- `q` string
- `source` 'hackernews' | 'reddit' | 'twitter' | 'bluesky' | 'rss' | 'arxiv' | 'huggingface' | 'lobsters' | 'modelscope'
- `topic` 'models' | 'tools' | 'use-cases' | 'regulation' | 'research' | 'funding' | 'opinion' | 'tutorial'
- `region` 'china' | 'korea' | 'japan' | 'eu'
- `from` string, date
- `to` string, date
- `limit` integer
- `offset` integer
- `collapse` boolean
- `tier` 'primary' | 'expert' | 'media' | 'community'
- `publisher` string

## Response `200`

Matching items, most-trending first.

- object
  - `items` ContentItem[]
    - `id` string, uuid, required
    - `source` 'hackernews' | 'reddit' | 'twitter' | 'bluesky' | 'rss' | 'arxiv' | 'huggingface' | 'lobsters' | 'modelscope', required
    - `url` string, nullable
    - `title` string, required
    - `body` string, nullable
    - `author` string, nullable
    - `publishedAt` string, date-time, required
    - `relevanceScore` number, nullable: 0–1 AI-relevance score.
    - `trendingScore` number, nullable
    - `topics` string[]
    - `clusterSize` integer: How many near-duplicate stories this representative stands for.
    - `corroboration` object: How independently this story is corroborated across its cluster — a provenance signal, never a truth verdict.
      - `level` 'primary' | 'corroborated' | 'reported' | 'unverified'
      - `publishers` integer: Distinct independent publisher hosts in the cluster.
      - `tiers` object: Distinct publishers per credibility tier.
        - `primary` integer
        - `expert` integer
        - `media` integer
        - `community` integer
      - `label` string: Short, glanceable summary.
  - `pagination` object
    - `limit` integer
    - `offset` integer
    - `total` integer
  - `attribution` string

## Other responses

- `401`: Error
- `429`: Error

---

[API](https://skmtc.dev/alchemylab/apis/horizon-api.md) · [All operations](https://skmtc.dev/alchemylab/apis/horizon-api/llms.txt) · [OpenAPI document](https://skmtc.dev/alchemylab/apis/horizon-api/revisions/936cb3804026?raw)
