# Google AI Mode Search

> Google AI Mode Search is a paid API for AI agents from agents.openwebninja.com, paid per call via MPP, price unknown, status unknown (last checked 2026-10-14).

Send a natural language prompt to Google's AI Mode and receive a structured, multi-part AI-generated answer with cited reference links.

## Facts

- Endpoint: GET https://agents.openwebninja.com/realtime-web-search/ai-mode?utm_source=zero.xyz
- Price: price unknown
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-14
- Activations on Zero: 0
- Provider: agents.openwebninja.com
- Website: https://agents.openwebninja.com
- Canonical page: https://www.zero.xyz/c/agents-openwebninja-com-google-ai-mode-search-ed58a1fa
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_d6a6LF1XliW-FFYDJyUWG

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability agents-openwebninja-com-google-ai-mode-search-ed58a1fa
```

Example prompt: Use Google AI Mode to search for 'best ways to reduce home energy bills in winter' and give me the structured answer with all cited reference links, searching from New York, United States.

## When to prefer this

Choose this endpoint when you need a synthesized, AI-generated answer grounded in real-time web data with explicit reference links — especially for factual, how-to, or research queries where citing sources matters. Prefer it over a plain web search endpoint when you want pre-structured reply fragments (paragraphs, lists, headings) rather than raw search result snippets. Also prefer it for multi-turn conversational search sessions or when you need to attach a PDF document for document-aware AI answers.

## Known failure modes

- Missing required 'prompt' parameter returns a 400 validation error
- Combining 'location' and 'uule' simultaneously is not allowed and returns an error
- Invalid country code (gl) or language code (hl) may yield unexpected locale results
- PDF attachment URLs that are inaccessible or exceed 10 MB per file will fail to attach
- Upstream Google AI Mode unavailability may return a 5xx error from the proxy
- Expired or invalid session_token breaks conversation continuity
- Prompts that Google AI Mode declines to answer may return empty reply_parts

## How this service works

Send a prompt/query and get structured results and reference links from Google's AI Mode.

## Output

Returns a structured object containing sequenced reply fragments (paragraphs, headings, ordered/unordered lists, and images) that compose the AI Mode answer, plus an array of reference links (each with title, URL, source, and optional publication date), and an optional session token for continuing the conversation in a follow-up request.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "prompt"
 ],
 "properties": {
  "gl": {
   "type": "string",
   "default": "us",
   "description": "The country / region for which to make the query. 2-letter country code, see ISO 3166-1 alpha-2."
  },
  "hl": {
   "type": "string",
   "default": "en",
   "description": "The language to use for the search (Google's hl parameter). 2-letter country code, see ISO 639-1 alpha-2."
  },
  "uule": {
   "type": "string",
   "description": "Google's own encoded location string (e.g. w+CAIQICIgU2VhdHRsZSxXYXNoaW5ndG9uLFVuaXRlZCBTdGF0ZXM=), passed to Google as is. Use it instead of location when you already generate uule values. Cannot be combined with location."
  },
  "prompt": {
   "type": "string",
   "example": "How to make a pizza step by step?",
   "description": "AI Mode prompt."
  },
  "location": {
   "type": "string",
   "description": "Where the AI Mode search originates from, for location-dependent prompts such as local businesses, weather or events. Recommended to specify at city level to simulate a real user's search (e.g. London, England, United Kingdom). See https://openwebninja.s3.us-east-1.amazonaws.com/locations.json for the list of supported locations. Cannot be combined with uule."
  },
  "attachments": {
   "type": "string",
   "description": "Optional JSON array of document URLs (PDF) to attach to the prompt, passed as a string, e.g. [\"https://example.com/file.pdf\"]. Up to 5 files, 10 MB each. Images are not supported. Attaching one or more documents is charged a flat 1 extra request credit. For multiple or long URLs use the POST method (no URL length limit)."
  },
  "session_token": {
   "type": "string",
   "description": "Specify a session token from previous AI Mode response to continue the chat from the same point (preserving history in context for continuous conversation)."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "status",
  "request_id",
  "parameters",
  "data"
 ],
 "properties": {
  "data": {
   "type": "object",
   "required": [
    "reply_parts",
    "reference_links"
   ],
   "properties": {
    "reply_parts": {
     "type": "array",
     "items": {
      "type": "object",
      "required": [
       "type"
      ],
      "properties": {
       "list": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "text": {
           "type": "string",
           "description": "Item body text."
          },
          "title": {
           "type": "string",
           "nullable": true,
           "description": "Bold label preceding the item text, when present."
          }
         }
        },
        "nullable": true,
        "description": "Items of a list fragment."
       },
       "text": {
        "type": "string",
        "nullable": true,
        "description": "Text content of paragraph/heading fragments."
       },
       "type": {
        "type": "string",
        "description": "Fragment kind. Values: paragraph, heading, list, images."
       },
       "images": {
        "type": "array",
        "items": {
         "type": "object",
         "required": [
          "url"
         ],
         "properties": {
          "url": {
           "type": "string",
           "description": "Image URL."
          },
          "label": {
           "type": "string",
           "nullable": true,
           "description": "Image alt text / caption."
          },
          "width": {
           "type": "integer",
           "nullable": true,
           "description": "Image width in pixels."
          },
          "height": {
           "type": "integer",
           "nullable": true,
           "description": "Image height in pixels."
          }
         }
        },
        "nullable": true,
        "description": "Images carried by an images fragment."
       },
       "ordered": {
        "type": "boolean",
        "nullable": true,
        "description": "Whether a list fragment is ordered (numbered)."
       }
      }
     },
     "description": "Sequenced fragments composing the AI Mode reply (paragraphs, headings, lists, images)."
    },
    "session_token": {
     "type": "string",
     "nullable": true,
     "description": "Token to pass back as session_token on a follow-up request to continue this conversation. Null when the upstream did not surface one."
    },
    "
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-openwebninja-com-google-ai-mode-search-ed58a1fa/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agents.openwebninja.com](https://www.zero.xyz/host/agents.openwebninja.com/llms.txt)
