AuthorizationstringheaderRequired Bearer API key. Programmatic access to the World API needs a key; browsing nosible.world in a browser does not.
Example: Bearer nos_sk_...
Search the dated event archive with metadata, lexical, semantic, or hybrid retrieval.
Use global World Search when the question spans dates and you need metadata, lexical, semantic, or hybrid retrieval over event records. Keep the date window explicit in production so results are reproducible.
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.
totalintegerEvents in the result set, the same on every page (limit and offset only choose the slice). Metadata and lexical search: every matching event. Semantic and hybrid search: every event that passes the filters and window and has a cosine similarity of at least 0.20 to the query, in every semantic_filter_mode, when the window and filters admit at most 500,000 archive events; above that, those among the semantic_candidates nearest to the query (5,000 unless sent).
total_exactbooleantrue when total counts every match: every event the window and filters admit was scored. false when the window and filters admit more than 500,000 archive events and the vector index returned its whole candidate budget, so more events above the similarity floor may exist beyond it: narrow the window or filters to count them all, or send a larger semantic_candidates to count further.
total_capped_atintegerOnly when total_exact is false: the candidate budget that capped total.
countintegerEvents in this page.
limitintegerPage size applied.
offsetintegerEvents skipped.
eventsobject[]The events, as lite records unless view=full (About records on Event details lists both). A full record adds provenance, availability, triples, each ticker's why and v2_preview_success.
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[]._scorenumberOverall retrieval score.
events[]._lexical_scorenumberLexical component of the score (lexical and hybrid search).
events[]._semantic_scorenumberCosine similarity to the query (semantic and hybrid search); at least 0.20.
events[]._retrievalstringRetrieval path that found the event.
events[]._search_datedateArchive date the record was read from.
facetsobjectCounts for the fields requested in facets, over the events total counts; empty when none were requested.
query_took_msintegerTotal time in milliseconds.
embedding_msintegerTime spent embedding the query.
search_msintegerTime spent searching.
date_windowobjectfrom, to, include_live and archive_cutoff of the search.
missing_datesdate[]Days of the window with no data, in date order, as Event Trends lists them; empty when the window has every day. The search covers the days the archive has.
search_typestringRetrieval mode used.
errorsobject[]Non-fatal stage errors; empty when none.
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.