# Google AI Mode Search (POST)

> Google AI Mode Search (POST) 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).

Sends a prompt or query to Google AI Mode via POST and returns structured AI-generated answers with reference links and session context.

## Facts

- Endpoint: POST https://agents.openwebninja.com/google-ai-mode/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-post-69308376
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_4Fp4ZY3X-jbQ1behQB0Xk

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-post-69308376 -d '<json body>'
```

Example prompt: Use Google AI Mode to answer this for me: what are the best practices for securing a Node.js REST API? I'm searching from London, England, United Kingdom.

## When to prefer this

Choose this POST variant over the GET variant when your prompt is long (to avoid URL length limits), when you need to pass complex parameters like attachments or advanced search options, or when you want structured AI Mode results with citation links rather than plain web search results. Prefer this over AI Overviews when you need a full AI Mode conversational answer rather than a quick overview snippet, and over ChatGPT/Gemini chat endpoints when you specifically want Google's AI Mode search results with web citations.

## Known failure modes

- Invalid or missing prompt field returns a validation error
- Combining 'url' parameter with 'prompt' or 'location' returns a parameter conflict error
- Unsupported location value causes location resolution failure
- Long prompts that exceed internal limits may be truncated or return an error
- Expired or invalid session tokens break multi-turn continuity
- Rate limiting or credit exhaustion returns a 402 or quota error
- Invalid country/language codes may default silently or return errors

## How this service works

Send a prompt/query and get structured results and reference links from Google AI Mode. POST variant of the AI Mode endpoint - accepts the same parameters in a JSON request body, with no URL length limit (recommended for long prompts).

## Output

Returns a JSON object containing the AI-generated answer (structured results and/or raw HTML), a session token for follow-up queries, the echoed input parameters, a unique request ID, and a status field. The answer includes reference links to source pages as cited by Google AI Mode.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "prompt"
 ],
 "properties": {
  "gl": {
   "type": "string",
   "default": "us",
   "example": "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",
   "example": "en",
   "description": "The language to use for the search (Google's hl parameter). 2-letter country code, see ISO 639-1 alpha-2."
  },
  "tbs": {
   "type": "string",
   "nullable": true,
   "description": "This parameter defines advanced search parameters that aren't available using regular query parameters (to be searched)."
  },
  "url": {
   "type": "string",
   "nullable": true,
   "description": "A full Google AI Mode URL to fetch instead of a prompt, e.g. https://www.google.com/search?q=coffee&udm=50. Must be a Google /search URL (google.com or a Google country domain) with udm=50 and a non-empty q. The page is loaded as is, so other Google parameters in it (e.g. uule) apply, and its own gl and hl take precedence over the gl and hl parameters. Cannot be combined with prompt, session_token, location, uule or attachments. A url request is charged 2 request credits."
  },
  "uule": {
   "type": "string",
   "nullable": true,
   "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."
  },
  "query": {
   "type": "string"
  },
  "prompt": {
   "type": "string",
   "example": "How to make a pizza step by step?",
   "description": "AI Mode prompt."
  },
  "location": {
   "type": "string",
   "nullable": true,
   "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": "array",
   "items": {
    "type": "string"
   },
   "example": [
    "https://pdfobject.com/pdf/sample.pdf"
   ],
   "nullable": true,
   "description": "Optional list of document URLs (PDF) to attach to the prompt, as plain URL strings. Up to 5 files, 10 MB each. Images are not supported. Attaching one or more documents is charged a fla
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "data": {
   "type": "object",
   "properties": {
    "raw_html": {
     "type": "string",
     "description": "Raw HTML, returned instead of the parsed results (the only data field) when return_raw_html=true. With prompt: the AI Mode answer fragment as streamed by Google. With url: the full rendered AI Mode page with the sources panel expanded."
    },
    "session_token": {
     "type": "string",
     "description": "Token used to maintain session context for follow-up interactions"
    }
   }
  },
  "status": {
   "type": "string",
   "description": "The status of the API response"
  },
  "parameters": {
   "type": "object",
   "properties": {
    "gl": {
     "type": "string",
     "description": "Geolocation/country code used for localization"
    },
    "hl": {
     "type": "string",
     "description": "Language code used for localization"
    },
    "url": {
     "type": "string",
     "description": "The AI Mode URL as received (only for url requests)"
    },
    "uule": {
     "type": "string",
     "nullable": true,
     "description": "Google uule location string as received (only when explicitly passed)."
    },
    "prompt": {
     "type": "string",
     "description": "The input prompt provided by the user"
    },
    "location": {
     "type": "string",
     "nullable": true,
     "description": "Search origin location as received (only when explicitly passed)."
    },
    "return_raw_html": {
     "type": "boolean",
     "description": "Present (true) when return_raw_html=true was passed"
    }
   }
  },
  "request_id": {
   "type": "string",
   "description": "A unique identifier for the API request"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/agents-openwebninja-com-google-ai-mode-search-post-69308376/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)
