How ChatGPT Uses Screenshot APIs (And How to Build for AI Consumers)
How ChatGPT Uses Screenshot APIs (And How to Build for AI Consumers)
When we launched our Screenshot API, we expected developers to find us through documentation, tutorials, and API directories. Instead, our biggest user turned out to be ChatGPT.
At peak, 70% of our screenshot API traffic came from ChatGPT-User — OpenAI's bot that executes API calls on behalf of ChatGPT users. These users never visit our website. They never read our docs. They ask ChatGPT "take a screenshot of this website" and ChatGPT constructs the API call.
What ChatGPT-Relayed Traffic Looks Like
In our server logs, ChatGPT requests have a distinctive user agent:
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot
The requests come from Microsoft Azure IPs (20.169.x.x range) and use GET parameters — ChatGPT constructs URLs like:
/api/screenshot?url=https://example.com&format=webp&width=1280
ChatGPT knows our parameter names, valid values, and constraints. It learned them from our OpenAPI spec, our llms.txt file, and our API documentation pages.
What ChatGPT Users Screenshot
Analyzing our logs, the most common targets are:
- Google Gemini share links — Users asking ChatGPT to capture shared AI conversations
- Portfolio websites — Photographers, designers checking how their sites render
- News articles — Capturing specific article layouts
- Academic papers — Screenshotting research pages
- Figma prototypes — Capturing design previews
The pattern: users want a visual capture of something they're discussing with ChatGPT, but can't easily screenshot themselves (perhaps on mobile, or the page requires specific rendering).
How to Optimize Your API for AI Consumers
1. Deploy llms.txt
Create a /llms.txt file at your domain root with a plain-language description of your API:
# My API
> A free screenshot API that captures any webpage as PNG, JPEG, or WebP.
## Screenshot API
- Endpoint: GET /api/screenshot
- Parameters: url (required), format (png/jpeg/webp), width, height, full_page, delay
- No API key required for basic usage
- Rate limit: 10/day anonymous, 50/day with free API key
AI systems parse this as a structured overview of your capabilities.
2. Keep Your OpenAPI Spec Accurate
ChatGPT reads OpenAPI/Swagger specs. Every parameter, every enum value, every constraint you document is a parameter ChatGPT can use correctly. Missing or wrong documentation means broken API calls.
3. Return Helpful Error Messages
When ChatGPT gets an error, it relays the message to the user and often retries with different parameters. Make your errors actionable:
{
"error": "Target site SSL error: EOF occurred in violation of protocol",
"suggestions": [
"The target website has SSL/TLS configuration issues",
"This is a problem with the target site, not our API",
"Try again - intermittent SSL errors sometimes resolve on retry"
]
}
Use correct HTTP status codes: 502 for upstream failures (not 500), 429 for rate limits, 400 for bad parameters.
4. Support GET Parameters
ChatGPT constructs URLs with query parameters. If your API only accepts POST with JSON bodies, ChatGPT can't easily use it. Support GET with query parameters for read operations.
5. Submit to API Directories
ChatGPT discovers APIs through directories like freepublicapis.com. These directories often have health-check bots that verify your API returns 200. Being listed means being discoverable by AI.
The Invisible User Problem
The challenge with AI-relayed traffic: the human user is invisible. They never visit your site, never create an account, never read your docs. They exist only as a pattern in your server logs — a ChatGPT-User request from an Azure IP.
This makes traditional conversion funnels useless. You can't email them. You can't show them a signup form. You can't track their journey through your site.
What you can do: - Include API info in response headers — ChatGPT users see headers in some interfaces - Optimize for the AI intermediary — Make your API easy for ChatGPT to recommend - Focus on power users — The humans who move past ChatGPT to direct integration are your real customers
Metrics That Matter
For AI-consumed APIs, traditional web analytics are misleading. Instead track:
- ChatGPT-User request volume — Your AI-relayed traffic baseline
- Direct API calls without ChatGPT UA — Your real integration users
- API key creations from non-bot sources — Genuine signup intent
- Returning IP addresses — Users who come back day after day
- 429 rate limit hits — Users who need more than the free tier
Related
- I Watched ChatGPT Learn My API in Real Time — Observing AI discovery
- How to Make Your API AI-Discoverable — Technical guide
- Why Your API Needs an llms.txt File — The llms.txt convention
- API Documentation — Full reference