How is Copilot captured?
A real stealth-browser session loads the Copilot UI as a guest, submits your prompt, waits for the answer to finish streaming, and normalizes the result, browser render, by default and today.
surfaces: ["copilot"]Copilot fronts Bing’s retrieval stack with a consumer answer UI, and there is no public API that returns what that UI shows. We capture it browser-first: the rendered Copilot answer with its citations inline, as one canonical Envelope.
curl -sS -X POST "https://api.aisearchapi.dev/v1/search" \
-H "Authorization: Bearer $AISEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "best project management software",
"surfaces": ["copilot"],
"regions": [{ "country": "US" }, { "country": "DE" }]
}'
# → 202 { "jobId": "…", "children": ["….copilot.…"] }
# then poll GET /v1/jobs/:childId, or add ?mode=sync for an inline EnvelopeOne canonical Envelope, the same four sections every surface returns, with the fields Copilot actually populates. Field names below are the contract, not a summary.
answer.text · answer.markdown · answer.blocksThe Copilot answer as rendered, normalized to the same block structure as every other surface.
answer.markdown (inline citations)Copilot’s inline citations and reference links come through in the answer markdown, ready for your own citation and brand extraction.
provenanceloginState (guest today), surfacePresent, triggerState and requested-vs-effective region, every capture self-describes.
provenance.modelObserved model label with a confidence score, never silently equated with a verified model id.
html (opt-in proof-of-page)Set include.html:true and the Envelope carries a top-level html URL — a proof-of-page snapshot of the rendered Copilot answer, fetchable at GET /v1/artifacts/{key}. Off by default.
{
"job": {
"id": "job_4b6a913f.copilot.US",
"surface": "copilot",
"status": "completed",
"warnings": []
},
"provenance": {
"loginState": "logged_out",
"webSearch": { "enabled": true, "known": true },
"surfacePresent": true,
"region": { "requested": "US", "effective": "US" }
},
"answer": {
"text": "For project management: Asana, Linear, Jira…",
"markdown": "For project management: **Asana**, **Linear** [linear.app], Jira…",
"blocks": [ { "type": "paragraph", "text": "…" } ]
}
}Captured live from the real Copilot UI.
Phase-2 surfaces are roadmap, not product. Requesting one returns an honest 422 today. The full picture is on the coverage page.
A real stealth-browser session loads the Copilot UI as a guest, submits your prompt, waits for the answer to finish streaming, and normalizes the result, browser render, by default and today.
The consumer answer surface, the ranking, citations and presentation your customers actually see, is only observable by rendering the UI, which is what we shipped first.
Five credits per successful capture, all Envelope fields included, charged only on success. 500 free credits on sign-up.
Any ISO-3166-1 alpha-2 country, optionally narrowed by state, city or language, as structured regions objects (up to 10 per request), one child capture per region, with requested-vs-effective geo recorded in provenance.
The capture completes truthfully: surfacePresent false, a surface_absent warning, zero credits charged. We never coerce an empty surface into a fake result.
500 free credits, charged only on success, and the same Envelope for every other surface when you add them.