Referencia

Referencia de la API

Versión
1.1.0
URL base
https://api.earlywave.ai/api/v1
Autenticación
Authorization: Bearer ew_live_…
Servidor MCP
https://api.earlywave.ai/mcp
OpenAPI
api.earlywave.ai/api/v1/openapi.jsonDescargar el JSON

Empieza por el inicio rápido; errores, ventana por minuto, cuota mensual y paginación se explican en Errors, limits and paging.

En esta página

Read your feeds, articles, folders, saved items and monitors, and the trends EarlyWave detects across every source it reads.

Authentication. Send your key in the Authorization header: Authorization: Bearer ew_live_…. Create keys in EarlyWave › Settings › API & MCP. A key carries scopes: rest for this API, mcp for the MCP server.

Rate limit and monthly quota. Two counters per account, shared by every key, REST and MCP together: a fixed one-minute window and a calendar-month quota (UTC). Pro: 60 requests a minute and 10,000 a month; Max: 300 a minute and 50,000 a month. Every response carries X-RateLimit-* (minute) and X-Quota-* (month) headers; over either limit you get 429 with error.type = "rate_limit" and a Retry-After header — error.code says which counter refused: rate_limit_exceeded for the minute, quota_exceeded for the month (it resets on the 1st).

Errors. Always {"error": {"type", "code", "message"}}. type is one of invalid_request (400), authentication (401), permission (403), not_found (404), rate_limit (429), server (500).

Paging. Lists take limit (1–100, default 20) and offset, and answer has_more.

Same data over MCP. Each operation is also an MCP tool (x-mcp-tool) on https://api.earlywave.ai/mcp.

Stories detected across every source EarlyWave reads.

GET/trends

List trends

Stories EarlyWave detects across every source it reads, strongest signal first. Filter by category, stage, the country a story is about, the country of its publishers, reach, or how recently it started.

Herramienta MCP list_trends

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/trends?country=FR&since_hours=24&limit=5" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

queryDónde querystringmax 200 charsWords the trend title contains.
categoryDónde querystringmax 300 charsComma-separated: ai, tech, business, economy, crypto, cyber, geopolitics, politics, energy, climate, health, science, space, society, sports, cinema, people, music, world.
stageDónde querystringmax 100 charsComma-separated: emerging, accelerating, breakout.
countryDónde querystringmax 2 charsCountry the story is about, ISO alpha-2 (e.g. "FR").
publisher_countryDónde querystringmax 2 charsCountry with at least 2 sources covering it, ISO alpha-2.
reachDónde querystringmax 100 charsComma-separated: local, national, international, global.
since_hoursDónde queryinteger1–720Only stories that started within this many hours (1–720).
sortDónde query"signal" | "recent" | "sources"Por defecto signalsignal (default), recent (last activity) or sources.
limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).
offsetDónde queryinteger0–5000Por defecto 0Results to skip, for paging (at most 5000).

Respuesta

200 application/json · TrendList

trendsTrend[]
trends[].idinteger
trends[].titlestring
trends[].urlstringThe trend page on earlywave.ai.
trends[].statusstring
trends[].stagestringemerging | accelerating | breakout
trends[].categorystring
trends[].reachstring | nulllocal | national | international | global (null = not computed yet).
trends[].subject_countriesstring[]Countries the story is about (alpha-2).
trends[].publisher_countriesstring[]Countries with at least 2 publishing sources (alpha-2).
trends[].item_countintegerArticles.
trends[].source_countintegerDistinct sources (domains).
trends[].signal_scorenumber
trends[].velocity_1hnumberArticles in the last hour.
trends[].velocity_24hnumberArticles in the last 24 hours.
trends[].started_atdate-timeStory start: earliest trusted article.
trends[].earliest_item_atdate-time | null
trends[].first_seen_atdate-timeWhen EarlyWave grouped the story.
trends[].last_activity_atdate-time
totalinteger
limitintegerPage size used.
offsetintegerResults skipped.
has_morebooleanTrue when another page exists (call again with offset + limit).

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.
GET/trends/{trend_id}

Get a trend

A trend with its summary, countries, languages, entities, keywords and its 10 latest articles.

Herramienta MCP get_trend

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/trends/48213" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

trend_idobligatorioDónde pathinteger> 0Trend ID.

Respuesta

200 application/json · TrendDetail

idinteger
titlestring
urlstringThe trend page on earlywave.ai.
statusstring
stagestringemerging | accelerating | breakout
categorystring
reachstring | nulllocal | national | international | global (null = not computed yet).
subject_countriesstring[]Countries the story is about (alpha-2).
publisher_countriesstring[]Countries with at least 2 publishing sources (alpha-2).
item_countintegerArticles.
source_countintegerDistinct sources (domains).
signal_scorenumber
velocity_1hnumberArticles in the last hour.
velocity_24hnumberArticles in the last 24 hours.
started_atdate-timeStory start: earliest trusted article.
earliest_item_atdate-time | null
first_seen_atdate-timeWhen EarlyWave grouped the story.
last_activity_atdate-time
summarystring | null
regionsstring[]
publisher_languagesstring[]
top_entitiesany
top_keywordsany
sourcesobject[]The 10 most recently attached articles; all of them: /trends/{trend_id}/articles.
sources[].idinteger
sources[].titlestring
sources[].urlstring
sources[].publisheddate-time | null

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 404Not found (or not yours).
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.
GET/trends/{trend_id}/articles

List a trend's articles

Every article of a trend with its source (title, site, country), newest or oldest first.

Herramienta MCP get_trend_articles

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/trends/48213/articles?sort=oldest&limit=5" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

trend_idobligatorioDónde pathinteger> 0Trend ID.
sortDónde query"latest" | "oldest"Por defecto latestlatest (default) or oldest first.
limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).
offsetDónde queryinteger0–5000Por defecto 0Results to skip, for paging (at most 5000).

Respuesta

200 application/json · TrendArticleList

trend_idinteger
articlesTrendArticle[]
articles[].idinteger
articles[].titlestring
articles[].urlstring
articles[].previewstringSummary or description, up to 500 characters.
articles[].image_urlstring | null
articles[].authorstring | null
articles[].publisheddate-time | null
articles[].feed_idinteger
articles[].languagestring | null
articles[].sourceobject
totalinteger
limitintegerPage size used.
offsetintegerResults skipped.
has_morebooleanTrue when another page exists (call again with offset + limit).

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 404Not found (or not yours).
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.
GET/trends/{trend_id}/coverage

Get where a trend is covered

Publisher countries and languages of a trend (sources = distinct sites) and its last 7 days hour by hour.

Herramienta MCP get_trend_coverage

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/trends/48213/coverage" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

trend_idobligatorioDónde pathinteger> 0Trend ID.

Respuesta

200 application/json · TrendCoverage

trend_idinteger
total_articlesinteger
total_sourcesinteger
first_article_atdate-time | null
peak_atdate-time | null
countriesobject[]Every publisher country, most sources first.
countries[].countrystringPublisher country, alpha-2.
countries[].sourcesinteger
countries[].articlesinteger
countries[].first_article_atdate-time
countries[].peak_hourdate-time
languagesobject[]
languages[].languagestring
languages[].sourcesinteger
languages[].articlesinteger
seriesobjectThe last 7 days, hour by hour (168 buckets).
series.startdate-timeStart of the first hourly bucket.
series.step_minutesinteger
series.articlesinteger[]
series.sourcesinteger[]Distinct sources publishing in the hour.
series.new_sourcesinteger[]Sources seen for the first time in the story in the hour.

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 404Not found (or not yours).
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.

Monitors

Your monitors and what they found.

GET/monitors

List your monitors

Your monitors (archived ones excluded), with their counts and next check.

Herramienta MCP list_monitors

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/monitors" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

Sin parámetros.

Respuesta

200 application/json · MonitorList

monitorsMonitor[]
monitors[].idstring
monitors[].namestring
monitors[].formstring
monitors[].statusstring
monitors[].iconstring | null
monitors[].results_countinteger
monitors[].articles_countinteger
monitors[].last_check_atdate-time | null
monitors[].next_check_atdate-time | null
monitors[].last_result_atdate-time | null
monitors[].created_atdate-time
monitors[].updated_atdate-time
monitors[].conversation_refstring | null
monitors[].cadenceany
monitors[].delivery_modestring
monitors[].calm_sincedate-time | null
totalinteger

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.
GET/monitors/{monitor_id}/results

Get a monitor's results

What a monitor found over the last days (newest first), with its sources and the current answers to its questions.

Herramienta MCP get_monitor_results

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/monitors/0b7c6a52-4c1e-4e0b-9a51-2f8d3c1e7a90/results?days=7" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

monitor_idobligatorioDónde pathstringmax 64 charsMonitor ID (from list_monitors / GET /monitors).
daysDónde queryinteger1–90Por defecto 30Period in days (1–90, default 30).
queryDónde querystringmax 120 charsOnly results containing this text.
limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).

Respuesta

200 application/json · MonitorResults

monitorMonitor
monitor.idstring
monitor.namestring
monitor.formstring
monitor.statusstring
monitor.iconstring | null
monitor.results_countinteger
monitor.articles_countinteger
monitor.last_check_atdate-time | null
monitor.next_check_atdate-time | null
monitor.last_result_atdate-time | null
monitor.created_atdate-time
monitor.updated_atdate-time
monitor.conversation_refstring | null
monitor.cadenceany
monitor.delivery_modestring
monitor.calm_sincedate-time | null
period_daysinteger
totalinteger
limitinteger
has_moreboolean
resultsMonitorResult[]
results[].idstring
results[].kindstring
results[].typestring | null
results[].titlestring
results[].summarystring | null
results[].event_datedate-time | null
results[].fieldsmap
results[].confidencenumber | null
results[].cluster_idinteger | null
results[].sources_countinteger
results[].first_seen_atdate-time
results[].updated_atdate-time
results[].hidden_atdate-time | null
results[].feedbackstring | null
results[].sourcesobject[]
answersobject[]
answers[].questionstring
answers[].answerstring | null
answers[].changed_atdate-time | null

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 404Not found (or not yours).
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.

Feeds

Your subscriptions and the feed catalogue.

GET/feeds

List your subscribed feeds

Lists the RSS feeds the account is subscribed to, optionally filtered by a keyword (title, description, address) or a domain.

Herramienta MCP find_feeds

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/feeds?domain=lemonde.fr" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

queryDónde querystringmax 500 charsKeyword matched against title, description and feed address.
domainDónde querystringmax 200 charsDomain the feed address contains, e.g. "lemonde.fr".
limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).
offsetDónde queryinteger0–5000Por defecto 0Results to skip, for paging (at most 5000).

Respuesta

200 application/json · FeedList

feedsFeed[]
feeds[].idinteger
feeds[].titlestring
feeds[].feed_urlstring
feeds[].website_urlstring | null
feeds[].descriptionstring
feeds[].languagestring | null
feeds[].countrystring | nullPublisher country, ISO 3166-1 alpha-2.
feeds[].subscribersinteger | null
feeds[].items_countinteger | null
feeds[].latest_fetchdate-time | null
totalinteger
limitintegerPage size used.
offsetintegerResults skipped.
has_morebooleanTrue when another page exists (call again with offset + limit).

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.
GET/feeds/discover

Search the feed catalogue

Searches every feed EarlyWave reads (not only your subscriptions), most-followed first.

Herramienta MCP discover_feeds

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/feeds/discover?query=climate&country=FR" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

queryobligatorioDónde querystringmax 500 charsKeyword (at least 2 characters) matched against the title, the description and the publisher's domain.
languageDónde querystringmax 10 charsFeed language code, e.g. "fr".
countryDónde querystringmax 3 charsPublisher country, ISO alpha-2 ("FR") or alpha-3 ("FRA").
limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).
offsetDónde queryinteger0–5000Por defecto 0Results to skip, for paging (at most 5000).

Respuesta

200 application/json · FeedDiscoveryList

querystring
feedsFeed[]
feeds[].idinteger
feeds[].titlestring
feeds[].feed_urlstring
feeds[].website_urlstring | null
feeds[].descriptionstring
feeds[].languagestring | null
feeds[].countrystring | nullPublisher country, ISO 3166-1 alpha-2.
feeds[].subscribersinteger | null
feeds[].items_countinteger | null
feeds[].latest_fetchdate-time | null
limitintegerPage size used.
offsetintegerResults skipped.
has_morebooleanTrue when another page exists (call again with offset + limit).

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.
GET/feeds/{feed_id}

Get one of your feeds

Details of a feed you are subscribed to, with its 24-hour and 7-day article counts.

Herramienta MCP get_feed

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/feeds/1207" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

feed_idobligatorioDónde pathinteger> 0Feed ID.

Respuesta

200 application/json · FeedDetail

idinteger
titlestring
feed_urlstring
website_urlstring | null
descriptionstring
languagestring | null
countrystring | nullPublisher country, ISO 3166-1 alpha-2.
subscribersinteger | null
items_countinteger | null
latest_fetchdate-time | null
feed_brokenboolean
items_count_24hinteger | null
items_count_7dinteger | null

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 404Not found (or not yours).
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.
GET/feeds/{feed_id}/items

List a feed's articles

Articles of one of your feeds, newest first.

Herramienta MCP get_feed_items

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/feeds/1207/items" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

feed_idobligatorioDónde pathinteger> 0Feed ID.
limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).
offsetDónde queryinteger0–5000Por defecto 0Results to skip, for paging (at most 5000).

Respuesta

200 application/json · FeedItemList

feed_idinteger
itemsArticleSummary[]
items[].idinteger
items[].titlestring
items[].urlstring
items[].previewstringSummary or description, up to 500 characters.
items[].image_urlstring | null
items[].authorstring | null
items[].publisheddate-time | null
items[].feed_idinteger
limitintegerPage size used.
offsetintegerResults skipped.
has_morebooleanTrue when another page exists (call again with offset + limit).

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 404Not found (or not yours).
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.

Folders

Your feed folders and their articles.

GET/categories

List your folders

Your feed folders, with the number of feeds in each.

Herramienta MCP list_categories

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/categories" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

Sin parámetros.

Respuesta

200 application/json · FolderList

categoriesFolder[]
categories[].idinteger
categories[].namestring
categories[].feed_countinteger
categories[].is_frozenboolean
totalinteger

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.
GET/categories/{category_id}/items

List a folder's articles

Articles from the feeds of one of your folders, newest first.

Herramienta MCP get_category_items

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/categories/12/items" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

category_idobligatorioDónde pathinteger> 0Folder ID.
limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).
offsetDónde queryinteger0–5000Por defecto 0Results to skip, for paging (at most 5000).

Respuesta

200 application/json · FolderItemList

categoryobject
category.idinteger
category.namestring
itemsArticleSummary[]
items[].idinteger
items[].titlestring
items[].urlstring
items[].previewstringSummary or description, up to 500 characters.
items[].image_urlstring | null
items[].authorstring | null
items[].publisheddate-time | null
items[].feed_idinteger
totalinteger
limitintegerPage size used.
offsetintegerResults skipped.
has_morebooleanTrue when another page exists (call again with offset + limit).

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 404Not found (or not yours).
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.
GET/items

List all your articles

Articles from all your feeds, newest first.

Herramienta MCP get_all_items

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/items" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).
offsetDónde queryinteger0–5000Por defecto 0Results to skip, for paging (at most 5000).

Respuesta

200 application/json · ItemList

itemsArticleSummary[]
items[].idinteger
items[].titlestring
items[].urlstring
items[].previewstringSummary or description, up to 500 characters.
items[].image_urlstring | null
items[].authorstring | null
items[].publisheddate-time | null
items[].feed_idinteger
totalinteger
limitintegerPage size used.
offsetintegerResults skipped.
has_morebooleanTrue when another page exists (call again with offset + limit).

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.

Articles

Articles of your feeds.

GET/articles/search

Search your articles

Articles of your feeds whose title, description, summary or keywords contain the query, newest first.

Herramienta MCP search_articles

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/articles/search?query=election" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

queryobligatorioDónde querystringmax 500 charsText to search for.
limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).
offsetDónde queryinteger0–5000Por defecto 0Results to skip, for paging (at most 5000).

Respuesta

200 application/json · ArticleSearchList

querystring
articlesArticleSummary[]
articles[].idinteger
articles[].titlestring
articles[].urlstring
articles[].previewstringSummary or description, up to 500 characters.
articles[].image_urlstring | null
articles[].authorstring | null
articles[].publisheddate-time | null
articles[].feed_idinteger
limitintegerPage size used.
offsetintegerResults skipped.
has_morebooleanTrue when another page exists (call again with offset + limit).

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.
GET/articles/{article_id}

Get an article

One article from your feeds, with its text (up to 10,000 characters), summary and keywords.

Herramienta MCP get_article

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/articles/9917305" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

article_idobligatorioDónde pathinteger> 0Article ID.

Respuesta

200 application/json · Article

idinteger
titlestring
urlstring
previewstring
contentstringArticle text, up to 10,000 characters.
keywordsstring | null
image_urlstring | null
authorstring | null
languagestring | null
publisheddate-time | null
feed_idinteger

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 404Not found (or not yours).
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.

Saved

Articles, pages and searches you saved.

GET/saved

List your saved items

Articles, pages and searches you saved, newest first.

Herramienta MCP list_saved

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/saved?type=article" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

typeDónde query"article" | "url" | "search"article, url or search; all when omitted.
limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).
offsetDónde queryinteger0–5000Por defecto 0Results to skip, for paging (at most 5000).

Respuesta

200 application/json · SavedList

typestring
savedSavedEntry[]
saved[].type"article" | "url" | "search"
saved[].idinteger
saved[].source_idinteger | null
saved[].titlestring
saved[].urlstring | null
saved[].previewstring
saved[].saved_atdate-time
limitintegerPage size used.
offsetintegerResults skipped.
has_morebooleanTrue when another page exists (call again with offset + limit).

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.

Discover

Recent articles and keywords across every source.

GET/discover

Search all recent articles

Recent articles from every source EarlyWave reads (not only your feeds), by keywords or latest first.

Herramienta MCP discover_items

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/discover?query=chips,export&hours_back=24" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

queryDónde querystringmax 500 charsComma-separated keywords; latest articles when omitted.
languageDónde querystringmax 10 charsArticle language code, e.g. "en".
hours_backDónde queryinteger1–168Por defecto 24Look-back window in hours (1–168, default 24).
limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).
offsetDónde queryinteger0–5000Por defecto 0Results to skip, for paging (at most 5000).

Respuesta

200 application/json · DiscoverItemList

querystring | null
languagestring | null
hours_backinteger
itemsDiscoverItem[]
items[].idinteger
items[].titlestring
items[].urlstring | null
items[].previewstring
items[].image_urlstring | null
items[].authorstring | null
items[].languagestring | null
items[].publisheddate-time | null
items[].feedobject | null
items[].match_sourcestring | nullWhere the query matched (keywords, title, description); null without a query.
totalinteger
limitintegerPage size used.
offsetintegerResults skipped.
has_morebooleanTrue when another page exists (call again with offset + limit).

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.
GET/discover/keywords

Top keywords

The most frequent keywords, entities, themes or places in recent articles.

Herramienta MCP discover_top_keywords

Ejemplo

curl
curl "https://api.earlywave.ai/api/v1/discover/keywords?type=entities" \
  -H "Authorization: Bearer $EARLYWAVE_API_KEY"

Parámetros

typeDónde query"main_keywords" | "entities" | "themes" | "locations" | "all"Por defecto allmain_keywords, entities, themes, locations or all (default).
hours_backDónde queryinteger1–168Por defecto 24Look-back window in hours (1–168, default 24).
limitDónde queryinteger1–100Por defecto 20Results per page (1–100, default 20).

Respuesta

200 application/json · KeywordList

hours_backinteger
typestring
keywordsobject[]
keywords[].keywordstring
keywords[].countinteger
keywords[].typesstring[]
totalinteger

Errores

  • 400Invalid parameters.
  • 401Missing, unknown or revoked key.
  • 403The key lacks the rest scope, or the account does not include API access.
  • 429Rate limit exceeded (rate_limit_exceeded, the minute window) or monthly quota exceeded (quota_exceeded, resets on the 1st); Retry-After says when.