GET /v1/news
The main news feed endpoint — filter by ticker, event type, or both, and page through results with a cursor.
Returns a page of news articles, newest first. This is the core endpoint of the API.
Request
GET /v1/news
Authorization: Bearer <key>
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit |
number | 10 |
Articles per page. Clamped to a maximum of 50. |
cursor |
string | — | Opaque cursor from a previous response’s pagination.next_cursor. Omit for the first page. |
event_type / event_types |
string | — | Filter to one event category. Accepts a slug (legal-action) or the raw label (Legal Action). |
ticker / tickers |
string | — | Filter to one or more tickers. Comma-separated for multiple (AAPL,MSFT), case-insensitive. |
event_type and ticker filters can be combined — e.g. event_type=corporate-earnings&ticker=AAPL returns only AAPL earnings news.
curl "https://newsapi.insighthread.com/api/v1/news?limit=10" \
-H "Authorization: Bearer ik_test_xxxxxxxxxxxxxxxx"curl "https://newsapi.insighthread.com/api/v1/news?ticker=AAPL&limit=5" \
-H "Authorization: Bearer ik_test_xxxxxxxxxxxxxxxx"curl "https://newsapi.insighthread.com/api/v1/news?event_type=legal-action" \
-H "Authorization: Bearer ik_test_xxxxxxxxxxxxxxxx"curl "https://newsapi.insighthread.com/api/v1/news?tickers=AAPL,MSFT,TSLA" \
-H "Authorization: Bearer ik_test_xxxxxxxxxxxxxxxx"Response
200 OK
{
"count": 2,
"pagination": {
"next_cursor": "eyJwdWJsaXNoZWRfYXQiOi4uLn0",
"has_more": true
},
"data": [
{
"id": 48213,
"ticker": "AAPL",
"company_name": "Apple Inc.",
"event_types": ["Corporate Earnings"],
"headline": "AAPL beats Q4 earnings expectations",
"summary": "AAPL reported Q4 revenue of $X.X billion, beating analyst consensus by 5%. Adjusted EPS came in at $1.20 vs. $1.05 estimate.",
"published_at": "2026-08-20T14:32:00.000Z",
"source": { "name": "Reuters", "url": "https://example.com/article" },
"impact": { "direction": "positive", "confidence": 87, "signal_strength": 5 },
"market": { "price": 231.45, "change": 3.12, "change_percentage": 1.37 }
}
]
}
Fields
| Field | Type | Description |
|---|---|---|
count |
number | Number of articles in this page. |
pagination.next_cursor |
string | null | Pass as cursor to fetch the next page. null when there’s no more data. |
pagination.has_more |
boolean | Whether another page exists. |
data[].id |
number | Article ID. |
data[].ticker |
string | null | Primary ticker the article is about. |
data[].company_name |
string | null | Company name. |
data[].event_types |
string[] | One or more event category labels. |
data[].headline |
string | Article headline. |
data[].summary |
string | null | Plain-text summary (Markdown emphasis stripped). |
data[].published_at |
string (ISO 8601) | Publish timestamp. |
data[].source.name |
string | null | Publisher name. |
data[].source.url |
string | null | Link to the original article. |
data[].impact.direction |
"positive" | "negative" | "neutral" |
Sentiment direction. |
data[].impact.confidence |
number | 0–100 confidence score. |
data[].impact.signal_strength |
number | 1–5 bars derived from confidence — a quick-glance strength indicator. |
data[].market.price |
number | null | Price at time of publish. |
data[].market.change |
number | null | Absolute price change. |
data[].market.change_percentage |
number | null | Percentage price change. |
Pagination
Use pagination.next_cursor from a response as the cursor on your next request to continue from where you left off:
curl "https://newsapi.insighthread.com/api/v1/news?limit=10&cursor=eyJwdWJsaXNoZWRfYXQiOi4uLn0" \
-H "Authorization: Bearer ik_test_xxxxxxxxxxxxxxxx"
Stop paging once pagination.has_more is false.
Test vs. live keys
With a test key (ik_test_...), this endpoint returns deterministic sample data — 5 fixed tickers (AAPL, MSFT, GOOGL, TSLA, NVDA) with realistic articles — and honors all the same filters and pagination, so client code behaves identically once you switch to a live key. Test responses include an X-Key-Type: test header.
Errors
| Type | Status | Cause |
|---|---|---|
unauthorized |
401 | Missing or invalid API key. |
invalid_request |
400 | event_type doesn’t match any known category — response includes valid_event_types. |
server_error |
502 | Upstream data fetch failed. |
See Errors for the full shape.

