For a date range

Retrieve bounded semantic results grouped by date, with an optional live overlay for the newest slices.

Explanation

Use this endpoint when a semantic definition must be evaluated independently across dates. Request the factor projection and set date.include_live=true when the newest active slices should be included.

POST/api/search

Request

Authorizations

Bearer
Authorizationstringrequiredheader

Required Bearer API key. Programmatic access to the World API needs a key; browsing nosible.world in a browser does not.

Example: Bearer nos_sk_...

Body

application/json
group_byenumrequiredbody

Grouping dimension; currently date.

Example: date

vectorsnumber[][]requiredbody

One or more anchor embeddings. Each production vector must contain exactly 3,072 floating-point values.

Example: [[0.0, 0.0, ...]] (3,072 values)

dateobjectrequiredbody

Inclusive date window. Set include_live=true to include newest active slices.

Example: {"from":"2026-09-15","to":"2026-09-17","include_live":true}

filtersobjectbody

The World Search filter DSL.

Example: {"language":"en"}

includestring[]requiredbody

Projection selector; include factor for the grouped factor response.

Example: ["factor"]

per_date_limitintegerbody

Candidate retrieval budget for each date; defaults to 1000.

Example: 1000

min_scorenumberbody

Inclusive semantic score floor; defaults to 0.2.

Example: 0.35

Response

Response body

application/json

These are the fields you can build against. Nested names use dot notation; optional sections are called out in their descriptions.

schemastring

Stable grouped semantic search response contract identifier.

Example: nosible_world_factor_search_v1

group_bystring

Grouping dimension; currently date.

Example: date

eventsobject[]

Flat matched event rows; join them to groups by date.

Example: [{ date, event_id, score, vector_scores, sentiment }]

groupsobject[]

One summary per scanned date, including matches, candidates, truncation, and eligible denominators.

Example: [{ date, matched_count, candidate_count, truncated, eligible }]

date_windowobject

Requested window, live-slice decision, and archive cutoff.

Example: { "from": "2026-09-15", "to": "2026-09-17", "include_live": true, "archive_cutoff": "2026-09-15" }

statsobject

Aggregate date, candidate, match, and truncation counters.

Example: { "dates_requested": 3, "dates_scanned": 3, "matched_events": 412, "truncated": true }

Responses and errors

HTTP
200Request succeeded. The body is shown in the response example.
400invalid_request — The grouped request is invalid or omits required date, vector, or projection fields.
401api_key_required — No API key was sent. Send it as Authorization: Bearer <key> or the api-key header.
401invalid_api_key — The API key is invalid or has been revoked.
403access_denied — The requested archive date is outside the caller's World tier.
422validation_error — A body field has the wrong type or form, such as a limit sent as a string; the message names it.
404not_found — The requested date, entity, ticker, or event does not exist in the accessible index.
410cursor_expired — The cursor was minted against a replaced index build. Restart pagination from the first page.
429rate_limited — The request exceeded the endpoint or account rate limit. Respect Retry-After when supplied.
501backend_not_configured — The World backend is not configured for this deployment.
503api_key_auth_unavailable — API key authentication is temporarily unavailable; retry shortly.
503api_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.
502backend_error — The World backend could not be reached or did not return a valid response; retry shortly.
504backend_timeout — The World backend did not answer within 300 seconds; narrow the request (for example with a date window) or retry.
422grouped_response_too_large — The request exceeds the bounded grouped response budget; shorten the window or raise the score floor.
422archive_date_gap — The window includes days the archive has no data for; the message names them and the days either side. Missing days are never shown as zero activity: choose a window that avoids them.
503grouped_search_busy — The grouped-search worker pool is full; retry after backoff.