AuthorizationstringrequiredheaderRequired Bearer API key. Programmatic access to the World API needs a key; browsing nosible.world in a browser does not.
Example: Bearer nos_sk_...
Retrieve bounded semantic results grouped by date, with an optional live overlay for the newest slices.
Use date-grouped search to build a daily time series from one or more anchors over a window of up to 120 days. An anchor is a vector you send (vectors) or a plain-language text the server embeds for you (vector_texts): send up to 64 of either, and vector_aggregate sets how an event's similarities to several of them combine into its score. score_vectors and score_vector_texts add vectors that are only measured, never searched with: each matched event reports its similarity to each of them, so one request can score the same events for a topic and for a direction within it, such as "shortages are easing" and "shortages are worsening". Each event is a record in the requested view (lite unless view=full) with its group date and scores; groups summarise each day with denominators. include=["factor_columns_v1"] returns the events as columns instead of records. A window that includes days with no data is answered for the days it has, with the others in missing_dates. limit, offset, sort and facets do not apply to a grouped search: per_date_limit is its retrieval budget. The filters are the World Search filter syntax, set out on For all time.
filters keeps only the events that match it: the search, its total and its facets all count those events and no others. It is a JSON object, and an event must satisfy every key of it. A key is a field name, one of and, or and not, or one of the geographic shapes bbox and geo_radius. Search Schema (GET /api/v2.0/search/schema) lists every field with its type (string, number, boolean, date or string_set), its aliases (countries for country, orgs for entity_org, tickers for ticker) and the operators each type takes; fetch it rather than copying a list from here.
A field's condition takes one of three forms. A bare value is equality: {"sentiment": "negative"}. An array means any of its values: {"sentiment": ["positive", "neutral"]}. An object applies operators, and every operator in it must hold: {"total_coverage": {"gte": 50, "lt": 500}}. A condition is never null (to find events without a value, send {"missing": true}), and an operator object is never empty.
Strings are compared exactly on a string field, so write a value as the event carries it: {"gics_sector": "Energy"} matches and "energy" does not (the Ontology directory and a search's facets list the values). contains and prefix ignore case. A string_set field (entity_gpe, entity_loc, entity_org, entity_person, entity_product, ticker, isin, figi, lei, wiki_qid and the *_top3 classification fields) holds several values per event, and every operator on it ignores case and extra spaces. entity_any, also entities, is every entity_* field at once. V1.2's city, required_ontology_below_floor, entity_event, entity_fac, entity_language, entity_law, entity_norp and entity_work_of_art are not fields of V2.0: filtering on one is a 422.
A date is a string in YYYY-MM-DD form, such as "2026-09-30": in a condition on the date field (the event's archive date) and in the request's own date window ({"from", "to", "include_live"}). The window chooses which archive days are searched; filters then apply to those days, so a request can carry both. A timestamp, a date without its leading zeros ("2026-9-1") and any other form is a 422 validation_error.
World Search and date-grouped search answer a filter they cannot read with a 422 validation_error whose message names the path of the problem: an unknown field (with the closest known name), an operator the field's type does not take, a value of the wrong type, a null, an empty and, or or not, a between or bbox written backwards. Event Trend reads and checks the same syntax.
A complete filter
and, or, not and a range togetherobjectNegative events of the United States or the United Kingdom, without a listed company, reported by at least 50 documents. Keys beside each other are an and, and and, or and not nest to any depth.
Example: {"and": [{"sentiment": "negative"}, {"or": [{"country_iso": "US"}, {"country_iso": "GB"}]}, {"not": {"has_tickers": true}}, {"total_coverage": {"gte": 50}}]}
Operators
eqall typesEqual to the value. On a string_set field, the event has the value.
Example: {"country_iso": {"eq": "US"}}
neqstring, number, boolean, dateNot equal to the value. Events with no value match.
Example: {"gics_sector": {"neq": "Energy"}}
inall typesEqual to any of the values. On a string_set field, the event has at least one of them.
Example: {"language": {"in": ["en", "fr"]}}
not_inall typesEqual to none of the values. Events with no value match.
Example: {"entity_org": {"not_in": ["nvidia"]}}
allstring_setThe event has every one of the values.
Example: {"entity_org": {"all": ["nvidia", "openai"]}}
existsstring, number, booleantrue: the event has a value. false: it has none.
Example: {"gics_sector": {"exists": true}}
missingstring, number, booleantrue: the event has no value. false: it has one.
Example: {"gics_sector": {"missing": true}}
gt, gte, lt, ltenumber, dateGreater than, at least, less than, at most. The value is a number, or a date for a date field.
Example: {"total_coverage": {"gte": 50}}
betweennumber, date[low, high], both ends included. The low end may not be above the high end.
Example: {"date": {"between": ["2026-09-01", "2026-09-30"]}}
containsstring, string_setA value contains the text, ignoring case. The argument is a string or an array of strings, any of which may match. The entity fields hold millions of distinct names, and a field with more than 1,000,000 of them (entity_org, entity_person and others) refuses contains and prefix: use eq or in with a name that Find entities returns.
Example: {"title": {"contains": "oil"}}
prefixstring, string_setA value starts with the text, ignoring case. Refused on the same entity fields as contains.
Example: {"title": {"prefix": "oil"}}
Combining conditions
andfilter[]An array of filter objects, all of which must match.
Example: {"and": [{"sentiment": "negative"}, {"has_tickers": true}]}
orfilter[]An array of filter objects, at least one of which must match.
Example: {"or": [{"country_iso": "US"}, {"country_iso": "GB"}]}
notfilterOne filter object, which must not match. Events that lack the field match too.
Example: {"not": {"has_tickers": true}}
Geography
bboxnumber[4][west_lng, south_lat, east_lng, north_lat]: events whose own place (the lat and lng fields) is inside the box, its edges included. Longitudes run from -180 to 180 and latitudes from -90 to 90; west may not be east of east, or south above north, so a box across the 180th meridian is two boxes joined with or. Events with no place never match a bbox, so not {bbox} includes them. geo_bbox is accepted as the same key.
Example: {"bbox": [-10, 35, 30, 60]}
geo_radiusobject{lat, lng, km}: events whose own place is within km kilometres of the point, measured along the earth's surface. lat is from -90 to 90, lng from -180 to 180 and km above 0. radius is accepted as the same key and lon as lng. Events with no place never match.
Example: {"geo_radius": {"lat": 51.5, "lng": -0.1, "km": 50}}
These are the fields you can build against. Nested names use dot notation; optional sections are called out in their descriptions.
schemastringResponse schema name.
viewstringThe view the events are returned in: lite (the default) or full. See About records on Event details.
include_vectorbooleantrue when the request asked for the embedding with include_vector=true; absent otherwise.
revisionintegerRevision of the response format.
search_typestringsemantic.
group_bystringGrouping dimension: date.
vector_aggregatestringHow an event's similarities to several anchor vectors combine into its score: max, mean or softmax.
per_date_limitintegerCandidates retrieved per anchor vector and date.
min_scorenumberScore floor applied.
totalintegerMatched events across all dates.
candidate_eventsintegerCandidates scored across all dates.
response_event_limitintegerMost events one response may carry: 5,000 lite records or 1,000 full ones (fewer with many anchor vectors). Above it the request is a 422 grouped_response_too_large; shorten the window or raise min_score.
resolved_vectorsnumber[][] | nullThe anchor vectors embedded from vector_texts, to send as vectors in later requests; null when vectors were sent.
resolved_score_vectorsnumber[][] | nullThe same for score_vector_texts; null when none were sent.
eventsobject[]Matched events, flat, as records in the requested view with their per-result fields; join them to groups by date.
events[].event_idstringStable event identifier.
events[].versionstringEvent record version: "2.0-preview".
events[].eventobjectThe event in its original language: date, language, title, description and points.
events[].event.datedateWorld archive date of the event.
events[].event.languagestringISO 639-1 code of the event's original language.
events[].event.titlestringHeadline, in the original language.
events[].event.descriptionstringShort narrative, in the original language.
events[].event.pointsstring[]Key facts of the event, one sentence each.
events[].englishobjectThe event in English: title, description and points, translated when the original language is not English.
events[].coverageobjecttotal_coverage, total_netlocs, coverage_concentration_index, first_seen, last_seen and most_seen, as in Event details.
events[].locationsobject[]Places of the event, its own place first, then places named in it, as in Event details.
events[].signalsobjectSentiment, materiality, time horizon and forward-looking signals with their class probabilities, as in Event details.
events[].tickersobject[]Listed companies the event concerns, in the Event details format without why. Empty when has_tickers is false.
events[].has_tickersbooleanWhether tickers is non-empty.
events[].entitiesobjectNamed entities by NER type, {TYPE: [{name, mention_count, confidence}]}, as in Event details.
events[].sentimentsobjectEntity-level sentiment grouped by entity type. Each item has name, sentiment_label (positive, neutral or negative), and sentiment_score, the final Percentage Margin Z-score.
events[].ontologiesobject[]Classifications of the event, most probable first, as in Event details.
events[].oai_vectorstringOnly with include_vector=true: the event's 3,072-dimension embedding (text-embedding-3-large), comma-separated.
events[].datedateThe group (archive date) of the event.
events[].scorenumberAggregate score over the anchor vectors.
events[].vector_scoresnumber[]Cosine similarity to each anchor vector.
events[].score_vector_scoresnumber[]Cosine similarity to each score vector; empty without score vectors.
groupsobject[]One summary per date scanned.
groups[].datedateThe date.
groups[].matched_countintegerMatched events on the date.
groups[].candidate_countintegerCandidates scored on the date.
groups[].candidate_retrieval_hitsintegerCandidates the vector index returned for the date, before deduplication across anchor vectors.
groups[].truncatedbooleantrue when an anchor's candidate budget (per_date_limit) filled with its farthest candidate still at or above min_score, so events above min_score may have been left out: raise per_date_limit. false means no event of the date above min_score was left out (by the index's ranking).
groups[].eligibleobjectAll events on the date that pass the filters, matched or not: count, total_coverage, total_netlocs, total_materiality and total_sentiment_weight. Use them as denominators.
date_windowobjectfrom, to, include_live and archive_cutoff.
missing_datesdate[]Days of the window with no data, in date order, as Event Trends lists them; empty when the window has every day. They have no groups: they are not zero activity.
statsobjectTotals over the dates: dates requested and scanned, eligible, candidate and matched events, and truncated_dates and truncated, which count the dates where groups[].truncated is true.
timing_msobjectServer time in milliseconds.
invalid_json — The request body is not JSON. Every error body, 401 included, is {error, message, status}.api_key_required — No API key was sent. Send it as Authorization: Bearer <key> or the api-key header.invalid_api_key — The API key is invalid or has been revoked.access_denied — The requested archive date is outside the caller's World tier.validation_error — The request is well formed but the API cannot decode or validate it: an unknown body field or query parameter, a missing required parameter, a value of the wrong type, an empty and, or or not, a date that is not a calendar date (in the path, the query or the body), an unknown enum value or a reversed range. The message names the parameter and what is wrong.not_found — The requested date, entity, ticker, or event does not exist in the accessible index.cursor_expired — The cursor was minted against a replaced index build. Restart pagination from the first page.rate_limited — The request exceeded the endpoint or account rate limit. Respect Retry-After when supplied.backend_not_configured — The World backend is not configured for this deployment.api_key_auth_unavailable — API key authentication is temporarily unavailable; retry shortly.api_key_metering_unavailable — API key usage metering is temporarily unavailable, so the request was not served; wait for the Retry-After header (30 seconds) and retry.backend_error — The World backend could not be reached or did not return a valid response; retry shortly.backend_timeout — The World backend did not answer within 300 seconds; narrow the request (for example with a date window) or retry.grouped_response_too_large — The request exceeds the bounded grouped response budget; shorten the window or raise the score floor.grouped_search_busy — The grouped-search worker pool is full; retry after backoff.