Monitor Copilot Responses
curl --request POST \
--url https://api.cloro.dev/v1/monitor/copilot \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "What are the best laptops for programming?",
"country": "US",
"include": {
"html": false,
"markdown": false,
"rawResponse": false
},
"state": "CA"
}
'import requests
url = "https://api.cloro.dev/v1/monitor/copilot"
payload = {
"prompt": "What are the best laptops for programming?",
"country": "US",
"include": {
"html": False,
"markdown": False,
"rawResponse": False
},
"state": "CA"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'What are the best laptops for programming?',
country: 'US',
include: {html: false, markdown: false, rawResponse: false},
state: 'CA'
})
};
fetch('https://api.cloro.dev/v1/monitor/copilot', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cloro.dev/v1/monitor/copilot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => 'What are the best laptops for programming?',
'country' => 'US',
'include' => [
'html' => false,
'markdown' => false,
'rawResponse' => false
],
'state' => 'CA'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.cloro.dev/v1/monitor/copilot"
payload := strings.NewReader("{\n \"prompt\": \"What are the best laptops for programming?\",\n \"country\": \"US\",\n \"include\": {\n \"html\": false,\n \"markdown\": false,\n \"rawResponse\": false\n },\n \"state\": \"CA\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.cloro.dev/v1/monitor/copilot")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"What are the best laptops for programming?\",\n \"country\": \"US\",\n \"include\": {\n \"html\": false,\n \"markdown\": false,\n \"rawResponse\": false\n },\n \"state\": \"CA\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloro.dev/v1/monitor/copilot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"What are the best laptops for programming?\",\n \"country\": \"US\",\n \"include\": {\n \"html\": false,\n \"markdown\": false,\n \"rawResponse\": false\n },\n \"state\": \"CA\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"result": {
"text": "As an AI assistant, I can help you find great laptops for programming...",
"html": "https://storage.cloro.dev/results/c45a5081-808d-4ed3-9c86-e4baf16c8ab8/page-1.html",
"sources": [
{
"position": 1,
"url": "https://docs.microsoft.com/",
"label": "Microsoft Docs",
"description": "Official development documentation"
}
],
"citationPills": [
{
"label": "Microsoft 365 Documentation",
"citationPillId": 1,
"url": "https://docs.microsoft.com/",
"domain": "docs.microsoft.com",
"description": "Official development documentation",
"position": 1
},
{
"label": "VS Code on GitHub",
"citationPillId": 1,
"url": "https://github.com/microsoft/vscode",
"domain": "github.com",
"description": "Visual Studio Code repository",
"position": 2
}
],
"shoppingCards": [
{
"type": "shoppingProducts",
"layout": "Carousel",
"products": [
{
"product": {
"id": "<string>",
"groupId": "<string>",
"brandGroupId": "<string>"
},
"position": 1,
"offerId": "<string>",
"url": "<string>",
"name": "<string>",
"description": "<string>",
"images": [
{
"title": "<string>",
"url": "<string>"
}
],
"specifications": [
{
"displayName": "<string>",
"values": [
"<string>"
]
}
],
"tags": [
"<string>"
],
"price": {
"amount": 123,
"currency": "<string>",
"currencySymbol": "<string>"
},
"seller": "<string>",
"sellerLogoUrl": "<string>",
"brandName": "<string>",
"rating": {
"value": 123,
"count": 123
},
"canTrackPrice": true
}
]
}
],
"map": [
{
"name": "WonderWorks Pigeon Forge",
"position": 1,
"placeId": "ChIJEYpTsk__W4gR2sQLGzOjE3o",
"location": {
"address": "100 Music Rd, Pigeon Forge, TN 37863",
"latitude": 35.823257,
"longitude": -83.5787498
},
"phoneNumber": "(865) 868-1800",
"url": "http://www.wonderworksonline.com/pigeon-forge/",
"reviews": [
{
"count": 10625,
"rating": 4.3,
"providerName": "Google",
"providerIconUrl": null,
"url": "https://maps.google.com/?cid=8796553937077126362"
}
],
"photos": [
{
"url": "https://lh3.googleusercontent.com/gps-cs-s/example",
"altText": null,
"providerName": null,
"providerUrl": "https://maps.google.com"
}
],
"openState": "Open · Closes 9 PM",
"category": "Amusement park",
"price": null,
"layerLabel": "Theme Parks"
}
],
"searchQueries": [
"best laptops for programming 2025",
"developer laptop reviews"
],
"markdown": "As an AI assistant, I can help you find great laptops for programming...",
"rawResponse": [
"<unknown>"
]
}
}{
"success": false,
"error": "Request validation failed",
"details": [
{
"field": "prompt",
"message": "Prompt cannot be empty"
}
]
}{
"error": {
"code": "MISSING_API_KEY",
"message": "Missing or invalid API key",
"timestamp": "2025-01-15T12:00:00.000Z"
}
}{
"error": {
"code": "INSUFFICIENT_PERMISSIONS",
"message": "Insufficient permissions",
"details": {
"requiredScopes": [
"read:monitor",
"write:monitor"
]
},
"timestamp": "2025-01-15T12:00:00.000Z"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Route not found",
"details": {
"id": "/v1/invalid-endpoint"
},
"timestamp": "2025-01-15T12:00:00.000Z"
}
}{
"error": {
"code": "RESOURCE_CONFLICT",
"message": "Resource conflict",
"timestamp": "2025-01-15T12:00:00.000Z"
}
}{
"error": {
"code": "CONCURRENT_LIMIT_EXCEEDED",
"message": "Concurrent limit exceeded",
"details": {
"limit": 10
},
"timestamp": "2025-01-15T12:00:00.000Z"
}
}{
"success": false,
"error": "Request was canceled"
}{
"success": false,
"error": "Maximum retries exceeded"
}{
"error": {
"code": "EXTERNAL_SERVICE_ERROR",
"message": "External service error: OpenAI",
"details": {
"service": "OpenAI"
},
"timestamp": "2025-01-15T12:00:00.000Z"
}
}Copilot
Extract Microsoft Copilot
Extract structured data from Microsoft Copilot about your brand, products, or any topic across various regions
POST
/
v1
/
monitor
/
copilot
Monitor Copilot Responses
curl --request POST \
--url https://api.cloro.dev/v1/monitor/copilot \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"prompt": "What are the best laptops for programming?",
"country": "US",
"include": {
"html": false,
"markdown": false,
"rawResponse": false
},
"state": "CA"
}
'import requests
url = "https://api.cloro.dev/v1/monitor/copilot"
payload = {
"prompt": "What are the best laptops for programming?",
"country": "US",
"include": {
"html": False,
"markdown": False,
"rawResponse": False
},
"state": "CA"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'What are the best laptops for programming?',
country: 'US',
include: {html: false, markdown: false, rawResponse: false},
state: 'CA'
})
};
fetch('https://api.cloro.dev/v1/monitor/copilot', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cloro.dev/v1/monitor/copilot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'prompt' => 'What are the best laptops for programming?',
'country' => 'US',
'include' => [
'html' => false,
'markdown' => false,
'rawResponse' => false
],
'state' => 'CA'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.cloro.dev/v1/monitor/copilot"
payload := strings.NewReader("{\n \"prompt\": \"What are the best laptops for programming?\",\n \"country\": \"US\",\n \"include\": {\n \"html\": false,\n \"markdown\": false,\n \"rawResponse\": false\n },\n \"state\": \"CA\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.cloro.dev/v1/monitor/copilot")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"What are the best laptops for programming?\",\n \"country\": \"US\",\n \"include\": {\n \"html\": false,\n \"markdown\": false,\n \"rawResponse\": false\n },\n \"state\": \"CA\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloro.dev/v1/monitor/copilot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"What are the best laptops for programming?\",\n \"country\": \"US\",\n \"include\": {\n \"html\": false,\n \"markdown\": false,\n \"rawResponse\": false\n },\n \"state\": \"CA\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"result": {
"text": "As an AI assistant, I can help you find great laptops for programming...",
"html": "https://storage.cloro.dev/results/c45a5081-808d-4ed3-9c86-e4baf16c8ab8/page-1.html",
"sources": [
{
"position": 1,
"url": "https://docs.microsoft.com/",
"label": "Microsoft Docs",
"description": "Official development documentation"
}
],
"citationPills": [
{
"label": "Microsoft 365 Documentation",
"citationPillId": 1,
"url": "https://docs.microsoft.com/",
"domain": "docs.microsoft.com",
"description": "Official development documentation",
"position": 1
},
{
"label": "VS Code on GitHub",
"citationPillId": 1,
"url": "https://github.com/microsoft/vscode",
"domain": "github.com",
"description": "Visual Studio Code repository",
"position": 2
}
],
"shoppingCards": [
{
"type": "shoppingProducts",
"layout": "Carousel",
"products": [
{
"product": {
"id": "<string>",
"groupId": "<string>",
"brandGroupId": "<string>"
},
"position": 1,
"offerId": "<string>",
"url": "<string>",
"name": "<string>",
"description": "<string>",
"images": [
{
"title": "<string>",
"url": "<string>"
}
],
"specifications": [
{
"displayName": "<string>",
"values": [
"<string>"
]
}
],
"tags": [
"<string>"
],
"price": {
"amount": 123,
"currency": "<string>",
"currencySymbol": "<string>"
},
"seller": "<string>",
"sellerLogoUrl": "<string>",
"brandName": "<string>",
"rating": {
"value": 123,
"count": 123
},
"canTrackPrice": true
}
]
}
],
"map": [
{
"name": "WonderWorks Pigeon Forge",
"position": 1,
"placeId": "ChIJEYpTsk__W4gR2sQLGzOjE3o",
"location": {
"address": "100 Music Rd, Pigeon Forge, TN 37863",
"latitude": 35.823257,
"longitude": -83.5787498
},
"phoneNumber": "(865) 868-1800",
"url": "http://www.wonderworksonline.com/pigeon-forge/",
"reviews": [
{
"count": 10625,
"rating": 4.3,
"providerName": "Google",
"providerIconUrl": null,
"url": "https://maps.google.com/?cid=8796553937077126362"
}
],
"photos": [
{
"url": "https://lh3.googleusercontent.com/gps-cs-s/example",
"altText": null,
"providerName": null,
"providerUrl": "https://maps.google.com"
}
],
"openState": "Open · Closes 9 PM",
"category": "Amusement park",
"price": null,
"layerLabel": "Theme Parks"
}
],
"searchQueries": [
"best laptops for programming 2025",
"developer laptop reviews"
],
"markdown": "As an AI assistant, I can help you find great laptops for programming...",
"rawResponse": [
"<unknown>"
]
}
}{
"success": false,
"error": "Request validation failed",
"details": [
{
"field": "prompt",
"message": "Prompt cannot be empty"
}
]
}{
"error": {
"code": "MISSING_API_KEY",
"message": "Missing or invalid API key",
"timestamp": "2025-01-15T12:00:00.000Z"
}
}{
"error": {
"code": "INSUFFICIENT_PERMISSIONS",
"message": "Insufficient permissions",
"details": {
"requiredScopes": [
"read:monitor",
"write:monitor"
]
},
"timestamp": "2025-01-15T12:00:00.000Z"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Route not found",
"details": {
"id": "/v1/invalid-endpoint"
},
"timestamp": "2025-01-15T12:00:00.000Z"
}
}{
"error": {
"code": "RESOURCE_CONFLICT",
"message": "Resource conflict",
"timestamp": "2025-01-15T12:00:00.000Z"
}
}{
"error": {
"code": "CONCURRENT_LIMIT_EXCEEDED",
"message": "Concurrent limit exceeded",
"details": {
"limit": 10
},
"timestamp": "2025-01-15T12:00:00.000Z"
}
}{
"success": false,
"error": "Request was canceled"
}{
"success": false,
"error": "Maximum retries exceeded"
}{
"error": {
"code": "EXTERNAL_SERVICE_ERROR",
"message": "External service error: OpenAI",
"details": {
"service": "OpenAI"
},
"timestamp": "2025-01-15T12:00:00.000Z"
}
}Overview
The Microsoft Copilot endpoint extracts structured data from Microsoft Copilot with shopping cards for product tracking. Useful for development tools, Microsoft ecosystem research, and enterprise-focused queries.Web search enabledThis endpoint uses Copilot’s default interface, which always performs web searches for all requests to provide real-time information with source citations.
Request parameters
Uses common parameters. Endpoint-specific options:include.markdown(boolean): Include markdown-formatted response. Defaults tofalseinclude.rawResponse(boolean): Include raw streaming response events. Defaults tofalse
Response objects
The response includes the following sections. See each subpage for the full schema and examples.| Section | Description |
|---|---|
| Sources | Source citations referenced in the response |
| Shopping cards | Product cards with pricing, ratings, and seller info |
| Map entries | Business and place information with reviews and photos |
Response schema
Includes common response fields plus:| Field | Type | Description |
|---|---|---|
result.sources | array | Array of sources referenced in the response |
result.shoppingCards | array | Array of shopping card objects with product information (automatically included when available) |
result.map | array | Array of map entry objects with business/place information (automatically included when available) |
result.searchQueries | array | Array of query fan-out — the web search queries Copilot ran while generating the response (automatically included when at least one is available, no surcharge) |
result.markdown | string | Response formatted in Markdown (included when include.markdown is true) |
result.rawResponse | array | Array of Copilot’s streamed response events (included when include.rawResponse is true) |
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Request parameters for monitoring Copilot responses
The prompt to send to Copilot
Required string length:
1 - 10000Example:
"What are the best laptops for programming?"
Country/region code for localized response
Example:
"US"
Optional flags for including additional response formats
Show child attributes
Show child attributes
State code for sub-country geo-targeting (e.g., "CA"). Only valid with country "US".
Required string length:
2Pattern:
^[A-Z]{2}$Example:
"CA"
Was this page helpful?
⌘I