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

# Get a curated news feed

> Returns a curated, ranked news feed for a fixed topic — there is no query parameter, the topic path segment selects the feed. `results` are ordered by relevance (a semantic pass tuned to the topic, weighted toward fresher articles); `news` holds the same articles in strict reverse-chronological order. `images` includes article images when available.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/news/{topic}
openapi: 3.1.0
info:
  title: Andi AI Search API
  version: 1.7.0
  description: >-
    Web search and page-fetch API for people and AI agents. `GET`/`POST
    /api/v1/search` returns structured results with query operators, domain and
    date filtering, and multiple output formats. `GET /api/v1/fetch` retrieves
    and extracts a single page. `GET /api/v1/news/:topic` returns a curated,
    ranked news feed for one of 23 fixed topics — no query required. Search and
    fetch support `format=context`, which returns markdown suited to language
    models; the news endpoint returns JSON only. By default (`searchMode=auto`)
    the API sets the search effort per query — compute, models, and depth —
    automatically; the fixed modes (`low-cost`, `fast`, `balanced`, `deep`,
    `exhaustive`) pin an effort level when you want the same behavior on every
    call. Requests are billed on outcome-based pricing, reported per call in
    `metrics.cost_dollars`.
servers:
  - url: https://api.andiai.com
    description: Production
security:
  - apiKey: []
paths:
  /api/v1/news/{topic}:
    get:
      summary: Get a curated news feed
      description: >-
        Returns a curated, ranked news feed for a fixed topic — there is no
        query parameter, the topic path segment selects the feed. `results` are
        ordered by relevance (a semantic pass tuned to the topic, weighted
        toward fresher articles); `news` holds the same articles in strict
        reverse-chronological order. `images` includes article images when
        available.
      operationId: getNewsFeed
      parameters:
        - name: topic
          in: path
          required: true
          description: Topic slug selecting the feed.
          schema:
            type: string
            enum:
              - technology
              - business
              - finance
              - politics
              - sports
              - health
              - science
              - world
              - entertainment
              - us
              - europe
              - uk
              - asia
              - middle-east
              - africa
              - latin-america
              - australia
              - programming
              - startups
              - top
              - hn-frontpage
              - ai-news
              - tech-news
        - name: limit
          in: query
          required: false
          description: Number of results to return.
          schema:
            type: integer
            minimum: 1
            maximum: 50
            default: 20
        - name: noCache
          in: query
          required: false
          description: Bypass the cache and fetch a fresh feed.
          schema:
            type: boolean
            default: false
      responses:
        '200':
          description: Curated news feed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponse'
        '401':
          description: Unauthorized — missing or invalid API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Unauthorized
                message: Invalid API key
        '402':
          description: Insufficient credits — account balance depleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Insufficient Credits
                message: >-
                  Your account has insufficient credits. Please add credits to
                  continue.
        '404':
          description: >-
            Unknown topic. The response includes the full list of valid topic
            slugs.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - type: object
                    properties:
                      valid_topics:
                        type: array
                        description: Every valid topic slug.
                        items:
                          type: string
                    required:
                      - valid_topics
              example:
                error: Unknown topic
                message: No curated news feed exists for topic 'crypto'.
                valid_topics:
                  - technology
                  - business
                  - finance
                  - politics
                  - sports
                  - health
                  - science
                  - world
                  - entertainment
                  - us
                  - europe
                  - uk
                  - asia
                  - middle-east
                  - africa
                  - latin-america
                  - australia
                  - programming
                  - startups
                  - top
                  - hn-frontpage
                  - ai-news
                  - tech-news
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Too Many Requests
                message: Rate limit of N requests per second exceeded
        '503':
          description: The feed is temporarily unavailable. Retriable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Service unavailable
                message: >-
                  The 'world' news feed is temporarily unavailable. Retry
                  shortly.
components:
  schemas:
    SearchResponse:
      type: object
      properties:
        results_type:
          type: string
          description: >-
            The type of results returned (e.g., `Search`, `News`, `Weather`,
            `Calculator`). Determines which optional response sections are
            present.
        answer:
          type: string
          description: >-
            A generated answer for the query. May be an empty string when no
            direct answer is available.
        type:
          type: string
          description: Same as `results_type`. Indicates the category of results.
        title:
          type: string
          description: A title summarizing the search results.
        results:
          type: array
          description: Array of search results.
          items:
            $ref: '#/components/schemas/SearchResult'
        metrics:
          $ref: '#/components/schemas/Metrics'
          description: Search performance metrics. Always included in the response.
        correctedQuery:
          type: string
          description: >-
            Spell-corrected query. Present when a misspelling in the original
            query is detected and corrected — any mode can return it; deep and
            exhaustive modes run the strongest spell correction.
        related_searches:
          type: array
          description: Related search suggestions. Present on some queries.
          items:
            type: string
        topics:
          type: array
          description: Related topics. Present on some queries.
          items:
            type: string
        videos:
          type: array
          description: Video results. Present when the query triggers a video intent.
          items:
            $ref: '#/components/schemas/SearchResult'
        images:
          type: array
          description: Image results. Present when the query triggers an image intent.
          items:
            $ref: '#/components/schemas/ImageResult'
        news:
          type: array
          description: News results. Present when the query triggers a news intent.
          items:
            $ref: '#/components/schemas/SearchResult'
        places:
          type: array
          description: Place/business results. Present for location-related queries.
          items:
            $ref: '#/components/schemas/SearchResult'
        profiles:
          type: array
          description: Profile results. Present for people-related queries.
          items:
            $ref: '#/components/schemas/SearchResult'
        social:
          type: array
          description: Social media results. Present for social-related queries.
          items:
            $ref: '#/components/schemas/SearchResult'
        academic:
          type: array
          description: Academic results. Present for scholarly queries.
          items:
            $ref: '#/components/schemas/SearchResult'
        weather:
          $ref: '#/components/schemas/WeatherResult'
          description: Weather data. Present when the query triggers a weather intent.
        calculation:
          $ref: '#/components/schemas/CalculationResult'
          description: >-
            Calculation result. Present when the query triggers a calculation
            intent.
      required:
        - results_type
        - answer
        - type
        - title
        - results
        - metrics
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error type or message.
        message:
          type: string
          description: Detailed error description.
      required:
        - error
        - message
    SearchResult:
      type: object
      properties:
        title:
          type: string
          description: Page title.
        link:
          type: string
          format: uri
          description: Page URL.
        desc:
          type: string
          description: Page description or summary.
        source:
          type: string
          description: Domain name of the result.
        type:
          type: string
          description: Result type. Only included when `metadata=full`.
          enum:
            - website
            - blog
            - news
            - video
            - image
            - place
            - profile
            - social
            - academic
            - calculation
            - weather
            - computation
            - instant answer
        date:
          type: string
          description: Publication date of the content, when available.
        image:
          type: string
          format: uri
          description: >-
            Preview image URL, when available. Only included when
            `metadata=full`.
        snippet:
          type: string
          description: >-
            Query-relevant text excerpt from the page. Distinct from `desc`,
            which is the general page description.
        answer:
          type: string
          description: Inline answer for instant answer results.
        extracts:
          type: array
          items:
            type: string
          description: >-
            Text extracts from the page, when available. Only included when
            `extracts=true`.
        contentType:
          type: string
          description: Content type of the page. Only included when `metadata=full`.
        reader:
          type: object
          description: >-
            Reader data with extracted page content. Only included when
            `metadata=full`.
        contentSafety:
          type: object
          description: Safety classification. Only included when `metadata=full`.
          properties:
            rating:
              type: string
              enum:
                - safe
                - unsafe
                - unknown
              description: Content safety rating.
            safeSearchApplied:
              type: boolean
              description: Whether safe-search filtering was applied to this result.
        bang:
          type: string
          description: >-
            Bang shortcut for the result domain. Only included when
            `metadata=full`.
      required:
        - title
        - link
        - desc
        - source
    Metrics:
      type: object
      description: Search performance metrics. Always included in the response.
      properties:
        query:
          type: string
          description: The query as processed.
        intent:
          type: string
          description: The detected or forced search intent.
        timestamp:
          type: string
          description: Timestamp of the search request.
        duration:
          type: number
          description: Total request duration in milliseconds.
        queries_executed:
          type: integer
          description: Number of search queries executed.
        api_requests_count:
          type: integer
          description: Number of API requests made during the search.
        results_returned:
          type: integer
          description: Number of results returned in this response.
        total_results_found:
          type: integer
          description: Total number of results found across all sources.
        cached:
          type: boolean
          description: >-
            Whether the response was served from cache. Only present on cache
            hits.
        cache_age_seconds:
          type: integer
          description: Age of the cached response in seconds. Only present on cache hits.
        cost_dollars:
          type: number
          description: >-
            Amount charged to your account for this request in USD, after any
            discounts. Pricing is outcome-based — each request is charged for
            the work performed and the content delivered, whether the effort was
            set automatically (`auto`) or pinned with a fixed mode.
        effort:
          type: string
          enum:
            - low
            - medium
            - high
            - max
          description: >-
            Resolved effort tier for this request — the tier `auto` mode
            selected, or the one pinned via `searchMode`/`effort`.
        response_time_ms:
          type: integer
          description: Total server response time in milliseconds.
    ImageResult:
      type: object
      properties:
        title:
          type: string
          description: Image title or alt text.
        link:
          type: string
          format: uri
          description: URL of the page containing the image.
        image:
          type: string
          format: uri
          description: Direct URL of the full-size image.
        source:
          type: string
          description: Domain name of the image source.
        type:
          type: string
          description: Always `image`.
          enum:
            - image
        thumbnail:
          type: string
          format: uri
          description: Thumbnail URL.
        width:
          type: string
          description: Image width in pixels (as a string).
        height:
          type: string
          description: Image height in pixels (as a string).
      required:
        - title
        - link
        - image
        - source
        - type
    WeatherResult:
      type: object
      properties:
        location:
          type: object
          description: Location details.
          properties:
            name:
              type: string
              description: Location name.
            country:
              type: string
              description: Country name or code.
            coordinates:
              type: object
              properties:
                latitude:
                  type: number
                longitude:
                  type: number
        temperature:
          type: number
          description: Current temperature.
        feelsLike:
          type: number
          description: Feels-like temperature.
        units:
          type: string
          description: 'Unit system: `metric` or `imperial`.'
          enum:
            - metric
            - imperial
        description:
          type: string
          description: Weather condition description.
        humidity:
          type: number
          description: Humidity percentage.
        windSpeed:
          type: number
          description: Wind speed.
        windDirection:
          type: number
          description: Wind direction in degrees.
        pressure:
          type: number
          description: Atmospheric pressure.
        icon:
          type: string
          description: Weather icon identifier.
        cloudiness:
          type: number
          description: Cloud cover percentage.
        visibility:
          type: number
          description: Visibility distance.
        timestamp:
          type: string
          description: Timestamp of the weather data.
      required:
        - location
        - temperature
        - units
        - description
    CalculationResult:
      type: object
      properties:
        expression:
          type: string
          description: The mathematical expression.
        result:
          type: string
          description: The calculated result.
      required:
        - expression
        - result
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: API key from the [API Console](https://console.andiai.com).

````