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

# List Articles

> Retrieve a paginated list of AI-classified articles with filters and optional enrichment modules

## Description

Returns a paginated list of articles. Every article includes base fields by default. Use the `include` parameter to request additional enrichment modules like sentiment, entities, or market impact.

## Headers

<ParamField header="X-API-Key" type="string" required>
  Your Rushed API key

  Format: `rsh_live_xxxxxxxxxxxx`
</ParamField>

## Query Parameters

<ParamField query="include" type="string">
  Comma-separated enrichment modules. Options: `sentiment`, `market_impact`, `entities`, `translations`, `scoring`, `classification`, `meta`

  Example: `sentiment,entities`
</ParamField>

<ParamField query="primarySector" type="string">
  Filter by primary sector code

  Options: `FIN`, `TEC`, `SAU`, `ENE`, `MAT`, `IND`, `CON`, `IMO`, `AGR`, `TRA`, `COM`, `SER`, `GOV`, `ESP`, `CRY`, `FIP`, `CIE`, `DEF`, `CUL`, `EDU`, `AMB`, `SOC`, `TUR`
</ParamField>

<ParamField query="primaryTopic" type="string">
  Filter by primary topic code

  Options: `M&A`, `IPO`, `RES`, `DIV`, `REG`, `POL`, `MAC`, `ESG`, `INO`, `CRI`, `EXE`, `TRB`, `INT`, `JUR`, `EXP`, `PAR`, `DEB`, `TRF`, `CPT`, `INF`, `CLI`, `SEG`, `SAP`, `ELE`, `TRI`, `CIB`, `EDI`
</ParamField>

<ParamField query="urgencyLevel" type="string">
  Filter by urgency: `CRITICAL`, `HIGH`, `MEDIUM`, `LOW`
</ParamField>

<ParamField query="contentType" type="string">
  Filter by content type: `BREAKING`, `REPORT`, `ANALYSIS`, `INTERVIEW`, `NEWS`, `PRESS`, `RUMOR`
</ParamField>

<ParamField query="isBreaking" type="boolean">
  Filter for breaking news only
</ParamField>

<ParamField query="language" type="string">
  Filter by language: `pt`, `en`, `es`
</ParamField>

<ParamField query="source" type="string">
  Filter by source domain (comma-separated). Example: `reuters.com,bloomberg.com`
</ParamField>

<ParamField query="publishedAfter" type="string">
  ISO 8601 datetime. Only articles published after this date.
</ParamField>

<ParamField query="publishedBefore" type="string">
  ISO 8601 datetime. Only articles published before this date.
</ParamField>

<ParamField query="q" type="string">
  Full-text search across title, subtitle, and summary
</ParamField>

<ParamField query="sort" type="string" default="publishedAt">
  Sort order:

  * `publishedAt` — most recent first (default)
  * `baseScore` — highest quality score first
  * `urgencyLevel` — most urgent first (CRITICAL > HIGH > MEDIUM > LOW)
  * `relevance` — composite of score + recency. Best for feeds that need both quality and freshness. A score-60 article from 1h ago ranks higher than a score-80 article from 2 days ago.
</ParamField>

<ParamField query="limit" type="integer" default="20">
  Results per page (1–100)
</ParamField>

<ParamField query="offset" type="integer" default="0">
  Number of results to skip
</ParamField>

## Response

<ResponseField name="success" type="boolean" required>
  Always `true` on success
</ResponseField>

<ResponseField name="data" type="array" required>
  Array of article objects

  <Expandable title="Article object">
    <ResponseField name="id" type="string">UUID</ResponseField>
    <ResponseField name="sourceUrl" type="string">Original article URL</ResponseField>
    <ResponseField name="sourceName" type="string">Source name (e.g., Reuters)</ResponseField>
    <ResponseField name="title" type="string">Article title</ResponseField>
    <ResponseField name="subtitle" type="string">Article subtitle</ResponseField>
    <ResponseField name="summary" type="string">AI-generated summary</ResponseField>
    <ResponseField name="publishedAt" type="string">ISO 8601 publication date</ResponseField>
    <ResponseField name="primarySector" type="string">Primary sector code</ResponseField>
    <ResponseField name="primaryTopic" type="string">Primary topic code</ResponseField>
    <ResponseField name="contentType" type="string">Content type (BREAKING, NEWS, etc.)</ResponseField>
    <ResponseField name="urgencyLevel" type="string">CRITICAL, HIGH, MEDIUM, LOW</ResponseField>
    <ResponseField name="isBreaking" type="boolean">Whether this is breaking news</ResponseField>
    <ResponseField name="imageUrl" type="string">Article image URL</ResponseField>
    <ResponseField name="language" type="string">Article language (pt, en, es)</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="pagination" type="object" required>
  <Expandable title="Pagination">
    <ResponseField name="limit" type="integer">Requested limit</ResponseField>
    <ResponseField name="offset" type="integer">Current offset</ResponseField>
    <ResponseField name="total" type="integer">Total matching articles</ResponseField>
    <ResponseField name="hasMore" type="boolean">More results available</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://worker.rushed.com.br/api/articles?primarySector=FIN&urgencyLevel=HIGH&include=sentiment&limit=5" \
    -H "X-API-Key: rsh_live_xxxxxxxxxxxx"
  ```

  ```javascript Node.js theme={null}
  const res = await fetch(
    'https://worker.rushed.com.br/api/articles?primarySector=FIN&include=sentiment&limit=5',
    { headers: { 'X-API-Key': 'rsh_live_xxxxxxxxxxxx' } }
  );
  const { data, pagination } = await res.json();
  ```

  ```python Python theme={null}
  import requests

  res = requests.get(
      'https://worker.rushed.com.br/api/articles',
      params={'primarySector': 'FIN', 'include': 'sentiment', 'limit': 5},
      headers={'X-API-Key': 'rsh_live_xxxxxxxxxxxx'}
  )
  articles = res.json()['data']
  ```
</RequestExample>

<ResponseExample>
  ```json 200 — Success theme={null}
  {
    "success": true,
    "data": [
      {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "sourceUrl": "https://reuters.com/business/petrobras-dividend",
        "sourceName": "Reuters",
        "title": "Petrobras announces record dividend payout of R$72B",
        "subtitle": "State oil company surprises market with largest-ever distribution",
        "summary": "Petrobras declared its largest-ever dividend distribution of R$72 billion, exceeding analyst expectations by 40%.",
        "publishedAt": "2026-03-28T14:30:00Z",
        "primarySector": "FIN",
        "primaryTopic": "DIV",
        "contentType": "BREAKING",
        "urgencyLevel": "HIGH",
        "isBreaking": true,
        "imageUrl": "https://reuters.com/images/petrobras.jpg",
        "language": "en",
        "sentimentScore": 0.82,
        "sentimentLabel": "MUITO_POSITIVO",
        "sentimentConfidence": 0.91
      }
    ],
    "pagination": {
      "limit": 5,
      "offset": 0,
      "total": 347,
      "hasMore": true
    }
  }
  ```

  ```json 401 — Unauthorized theme={null}
  {
    "success": false,
    "error": "Invalid or missing API key. Get your key at https://dash.therushed.com.br/api-keys",
    "statusCode": 401
  }
  ```

  ```json 429 — Rate Limited theme={null}
  {
    "success": false,
    "error": "Rate limit exceeded. Try again in 32 seconds.",
    "statusCode": 429
  }
  ```
</ResponseExample>
