Skip to main content
GET
List of countries
Returns the ISO 3166-1 alpha-2 country codes supported by the monitoring API, optionally filtered to one AI provider.

Request parameters

Available model values:
  • aimode
  • aioverview
  • chatgpt
  • copilot
  • gemini
  • google
  • grok
  • perplexity

Example usage

Basic request

Filter by model

Caching

The country list rarely changes, so fetch it when your application starts and cache it for 24 hours or more. Use the cached model-filtered list to populate your country picker and to validate input before a monitor request goes out, and keep a fallback in case the endpoint is briefly unavailable.

Common questions

Which countries are supported?

cloro supports country-level targeting for nearly all countries. The docs don’t publish a static country list or total count because coverage varies by provider and changes over time — GET /v1/countries is the source of truth. To confirm a specific country, call the endpoint (with model=<provider> for the provider you plan to use) and check whether its ISO 3166-1 alpha-2 code appears in the response. See the request examples above.

My request is rejected with a “model not available in country” 400 even though the code is a valid ISO country. Why?

Two lists are at play, and they are not the same:
  • The country parameter accepts any ISO 3166-1 alpha-2 code at the schema level, so a code like CZ passes basic validation.
  • Each AI provider has its own availability list — the subset of those ISO codes cloro can actually route to for that model. When the code passes schema validation but is not in the model’s availability list, the monitor endpoint rejects the request with a 400 whose details include a “model not available in country” message.
Call GET /v1/countries?model=<provider> and confirm the code is in the response before sending a monitor request. If it is present and the request still fails, see Why is ChatGPT (or Copilot) suddenly failing for a specific country? — some providers intermittently require login in specific regions, which blocks the anonymous session cloro uses.

How do I target multiple countries or run a “global” query?

country takes a single ISO 3166-1 alpha-2 code. There is no wildcard, “global”, or multi-country value. To cover several markets, send one request per country and merge the results client-side — use async tasks or batch tasks to fan out.

Can I target specific cities or states?

US state-level targeting is available on ChatGPT, Copilot, Perplexity, Gemini, and Grok via the state parameter. Use the States endpoint to get the full list of supported codes. The Google Search and AI Mode endpoints support city-level geo-targeting via the location parameter, which accepts Google canonical location names. Google Search covers AI Overview too, since AI Overview is requested through it with include.aioverview. What’s supported:
  • ✅ Country-level targeting using ISO 3166-1 alpha-2 codes (e.g., US, GB, JP) on all endpoints
  • ✅ State-level targeting via state parameter (e.g., CA, NY, TX) on ChatGPT, Copilot, Perplexity, Gemini, and Grok (US only for now)
  • ✅ City-level targeting via location parameter (e.g., New York,New York,United States) on Google Search (including AI Overview) and AI Mode
What’s not supported:
  • ❌ City-level targeting on Google News — it accepts country only, not location / uule
  • ❌ State-level targeting on Google Search or AI Mode (use location / uule instead)
  • ❌ State-level targeting outside the US
  • ❌ Metro/region targeting
  • ❌ Zip/postal code targeting
  • ❌ Latitude/longitude coordinates

Why are my geo-targeted requests returning unexpected results?

  • Invalid country codes: use ISO 3166-1 alpha-2 codes (two-letter format).
  • Non-canonical location strings: location is not validated against Google’s geotargets list. A string that isn’t a canonical name is accepted and encoded as-is rather than rejected, and Google falls back to broader targeting — typically country level. You get a 200 with country-level results, not an error, so verify the exact canonical name (City,Region,Country) before assuming city targeting applied.
  • Provider limitations: coverage varies by provider and region.
  • Prompt language mismatch: English prompts in non-English countries may affect result quality.

How does geo-targeting work?

The country parameter routes your request through servers in or near the target region. What geo-targeting affects:
  • Search results and web sources
  • Local business information
  • Regional product availability (shopping cards)
  • Language and cultural context
  • Time zones and date formats
What geo-targeting doesn’t affect:
  • API pricing (same cost regardless of country)
  • Response format or structure
  • Available features or endpoints

Authorizations

Authorization
string
header
required

cloro API key as a bearer token. One key grants every endpoint in this spec; per-key scopes are not available, so a client cannot request a narrower permission. Keys are created, rotated, and revoked in the dashboard.

Query Parameters

model
enum<string>

Filter countries available for a specific model

Available options:
aimode,
aioverview,
chatgpt,
copilot,
gemini,
google,
grok,
perplexity

Response

List of supported country codes

Example: