---
title: "Get a response"
method: GET
path: "/v1/sites/{site_id}/responses/{response_id}"
tags: ["Responses"]
---

# Get a response

`GET /v1/sites/{site_id}/responses/{response_id}`

## Request

- Base URL: `https://api.getsitecontrol.com`
- URL: `https://api.getsitecontrol.com/v1/sites/{site_id}/responses/{response_id}`
- Auth: HTTP bearer

One form response by id, with the same fields as in `list_widget_responses`. Call it when you hold a response id, e.g. from a `response.created` event. A response awaiting double opt-in or an e-mail check is not found until it is confirmed.

## Path parameters

- `site_id` integer, required
- `response_id` integer, required: Response id from `list_responses` or `list_widget_responses`, or `data.response.id` of a `response.created` event subscription payload

## Response `200`

Successful Response

- WidgetResponse
  - `id` integer, required
  - `number` string, nullable: Response number, when the widget numbers its responses
  - `widget_id` integer, required
  - `created_at` string, date-time, required: When the response was sent
  - `contact_id` integer, nullable: Set asynchronously; may be null on a fresh response
  - `fields` object, required: Answers by field name, in the order of the widget's current form. Options removed from the form since the response are left out.
  - `params` object, required: Visitor parameters as set on the site: arbitrary JSON that may hold personal data
  - `page_url` string, nullable: Page the response was sent from, with its query string, which may hold e-mails or tokens
  - `query` object, required: Query parameters of page_url, the last value of a repeated key; may hold e-mails or tokens
  - `referrer` string, nullable: Previous page of the visit on the site, not the external source; with its query string
  - `source` string, nullable: Page the visit came from, as the browser reported it on the visit's first page: usually another site, with its query string; null for a direct visit
  - `geo` ResponseGeo, required
    - `country` string, nullable
    - `country_code` string, nullable
    - `region` string, nullable
    - `city` string, nullable
  - `utm` ResponseUtm, required
    - `source` string, nullable
    - `medium` string, nullable
    - `campaign` string, nullable
    - `term` string, nullable
    - `content` string, nullable
  - `device` ResponseDevice, required
    - `platform` string, nullable
    - `os` string, nullable
    - `browser` string, nullable
  - `platform` ResponsePlatform, required
    - `type` string, nullable: The site's e-commerce platform, e.g. shopify; null elsewhere
    - `customer_id` string, nullable: The platform's id of a signed-in customer
    - `order_id` string, nullable: The platform's order id, on an order status page
  - `warnings` string[], required: Empty unless the response could not be read; wording is not stable, do not parse

## Other responses

- `400`: Unsupported GSC-Version
- `401`: Missing or invalid API key or access token
- `403`: Access denied
- `404`: `response_not_found`: no such response on the site, it is deleted or not confirmed yet. A response being completed may give it briefly; retry the request
- `422`: Validation failed
- `429`: `rate_limited`: the key, account or heavy bucket is spent; this operation spends the heavy bucket shared with statistics and other heavy calls
- `503`: Temporarily unavailable; retry later

---

[API](https://skmtc.dev/getsitecontrol/apis/getsitecontrol-public-api.md) - [All operations](https://skmtc.dev/getsitecontrol/apis/getsitecontrol-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getsitecontrol/apis/getsitecontrol-public-api/revisions/084fcad80e75?raw)
