---
title: "Track Copilot answers"
method: POST
path: "/v1/monitor/copilot"
---

# Track Copilot answers

`POST /v1/monitor/copilot`

## Request

- Base URL: `https://api.answerline.dev`
- URL: `https://api.answerline.dev/v1/monitor/copilot`
- Auth: HTTP bearer

Get structured output from Microsoft Copilot on your brand, your products or any other topic, in many regions

## Request body

- CopilotMonitorRequest
  - `prompt` string, required: Prompt submitted to Copilot
  - `country` string, required: Code of the country or region used to localize the response
  - `include` object: Flags that add extra output formats to the response (optional)
    - `html` boolean: Not available for Copilot, so `true` is refused with a validation error.
    - `markdown` boolean: Add a markdown version of the response to the result
    - `rawResponse` boolean: Return the answer as normalized stream events. For the engine's answer as received, use `include.rawWire`.
    - `rawWire` boolean: Return the engine's upstream answer as received in result.rawWire: the answer stream, or the provider's answer record, without the provider's billing data and account traces. Free. See https://answerline.dev/docs/output-formats#raw-wire
  - `state` string: State code for targeting below the country level (e.g., "CA"; "DC" included). Allowed only when country is "US". Served for Gemini; on a model that cannot place a state yet, a request that includes it is rejected as a validation error and is not charged.

## Response `200`

Copilot monitoring result (success)

- CopilotMonitorResponse
  - `success` boolean, required
  - `result` object, required: Data from Copilot's reply
    - `text` string: Text of Copilot's reply
    - `html` string, uri: Link to the response's complete HTML.
    - `sources` object[]: Sources the response cites
      - `position` number: Where the source sits in the response, as an index
      - `url` string: Link to the source
      - `label` string: Label shown for this source
      - `description` string: Text describing what the source contains
    - `citationPills` object[]: Citation pills that appear inline in the Copilot answer. Every element pairs one pill with one source: a pill backed by N sources (a chip made from consecutive citation events) yields N elements with the same `citationPillId`, each holding that source's own `label`, `url` and `domain`. Grouping by `citationPillId` rebuilds the pills. Not present in `result` if the answer has no pills.
      - `label` string, required: Title of this individual source, taken from the citation event (for instance `"Microsoft 365 Documentation"`, `"Productivity Best Practices"`). Never missing, but can be an empty string if the event carries no title — in that case identify the source by `domain` / `url`. Entries that share a `citationPillId` each have their own per-source label.
      - `citationPillId` integer, required: One-based number common to every entry that comes from one chip. Grouping on `citationPillId` rebuilds the chip as displayed; each entry's `label` is specific to its source, so it varies inside a chip.
      - `url` string, required: Link straight to the cited source.
      - `domain` string, required: Hostname taken from `url`, useful for grouping and display.
      - `description` string: Source snippet shown in the sources rail, if Copilot supplies one; otherwise omitted.
      - `position` integer, required: Index of this source within the sibling `result.sources` array, starting at 1.
    - `shoppingCards` object[]: Shopping/product cards parsed from the response (if any)
      - `type` string: Type of shopping card
      - `layout` string: Visual layout used for the shopping card
      - `products` object[]: List of product details
        - `product` object: Identifiers for the product
          - `id` string: Product's unique ID
          - `groupId` string: ID of the product group
          - `brandGroupId` string: ID of the brand group (optional)
        - `position` integer: Rank starting at 1, counted over every product in every shopping card of the response (one continuous sequence that does not restart for each card).
        - `offerId` string: Identifier unique to the offer
        - `url` string: URL of the product page
        - `name` string: Product name
        - `description` string: Product description
        - `images` object[]: Product images, each with a title and URL
          - `title` string: Image title
          - `url` string: Image URL
        - `specifications` object[]: Product attributes such as Color or Size
          - `displayName` string: Specification name
          - `values` string[]: Available values
        - `tags` string[]: Product tags
        - `price` object: Pricing details for the product
          - `amount` number: Price amount
          - `currency` string: Code of the currency, if given
          - `currencySymbol` string: Currency symbol
        - `seller` string: Seller name
        - `sellerLogoUrl` string: URL of the seller's logo
        - `brandName` string: Brand of the product
        - `rating` object: Rating details for the product
          - `value` number: Rating value
          - `count` integer: Rating count
        - `canTrackPrice` boolean: Indicates if price tracking is offered
    - `map` object[]: Map entries for businesses or places parsed from the response (if any)
      - `name` string: Business name
      - `position` integer: Rank in the results (1-indexed)
      - `placeId` string: Place ID on Google
      - `location` object: Business location
        - `address` string: Complete street address
        - `latitude` number: GPS latitude
        - `longitude` number: GPS longitude
      - `phoneNumber` string: Phone number for contact
      - `url` string, uri: URL of the business's website
      - `reviews` object[]: Aggregated review data from providers
        - `count` integer: Review count
        - `rating` number: Average rating
        - `providerName` string: Name of the review provider
        - `providerIconUrl` string: URL of the provider's icon
        - `url` string, uri: URL of the reviews page
      - `photos` object[]: Business photos
        - `url` string, uri: Photo URL
        - `altText` string: The photo's alt text
        - `providerName` string: Name of the photo provider
        - `providerUrl` string, uri: URL of the photo provider
      - `openState` string: Whether it is open or closed now
      - `category` string: Business category
      - `price` unknown
      - `layerLabel` string: Grouping label for the map layer
    - `searchQueries` string[]: Query fan-out: the web searches Copilot performed as it wrote the response. Returned automatically whenever there is at least one, at no extra cost.
    - `markdown` string: Copilot's reply as Markdown; returned only if include.markdown is true
    - `rawResponse` unknown[]: Unprocessed stream from the upstream provider, recorded while the request ran. Every item is a single chunk of the engine's raw response. The format varies by engine, is not documented and can change at any time without warning; use it to debug or to read data not yet exposed by the structured fields above.
      - unknown

## Other responses

- `400`: Bad Request - the request failed validation
- `401`: Unauthorized - authentication failed
- `403`: Forbidden - missing permissions or not enough balance
- `404`: Not Found - No such route
- `409`: Conflict - the resource is in a conflicting state
- `429`: Too Many Requests - the request went over a rate limit or concurrency limit, or the service dropped the request because it was overloaded (`SERVICE_OVERLOADED`); that case returns `Retry-After` without any limit headers
- `499`: Client Closed Request - the client cancelled the request
- `500`: Internal Server Error
- `502`: Bad Gateway - an upstream service failed

---

[API](https://skmtc.dev/answerline/apis/answerline-api.md) · [All operations](https://skmtc.dev/answerline/apis/answerline-api/llms.txt) · [OpenAPI document](https://skmtc.dev/answerline/apis/answerline-api/revisions/a9dc35794662?raw)
