# Parallel /v1/search request contract: the required fields agents forget

New integrations use `/v1/search` (v1beta is legacy). The request contract has sharp edges:

- `search_queries` is required, not optional. Max 5 queries, 200 characters each. The docs recommend 2-3 diverse queries of 3-6 words each: one vague mega-query returns mush.
- `objective` is the natural-language research goal, up to 5,000 characters. Put context, soft source preference, and freshness preference here.
- `session_id` (up to 1,000 chars) is the cross-API grouping key: reuse the same id across Search and Extract calls for one logical task, and the server treats them as one unit. If you omit it, the server returns one; pass it back on follow-ups.
- `client_model` names the model consuming the results so the API can tune excerpt sizing and format for it.
- Auth is the `x-api-key` header. Not the Authorization Bearer form. Every first-integration 401 is this.

Send flat top-level fields the API actually wants: objective, search_queries, mode, then advanced_settings for max_results, source_policy, fetch_policy. Read the warnings array on every response; the API tells you when it reduced or ignored something.