Updates one existing survey response in the current organization. The request body is partial, so you can change the rating, the comment, or both without resending unchanged fields. The survey must already exist in the same organization. Use this for back-office corrections rather than new visitor submissions. Authenticate with an organization API key sent in `X-API-Key` or as a Bearer token and carrying the exact `surveys:write` scope. API-key access also requires the Automation & API module (`automation_api`). Authorized dashboard sessions remain supported where the route already permits them. The request is isolated to the authenticated organization. Resource and site/project identifiers must belong to that organization; out-of-scope identifiers are not disclosed. This back-office correction endpoint accepts a partial body containing `rating`, `comment`, or both. Ratings are stable integers from 1 through 3. Visitor submission is intentionally not performed through this operation. The unauthenticated `POST /api/surveys` visitor-token flow is a protocol route and is not part of the organization API-key contract. Retry behavior: Repeating the same request converges on the same resource state, but a retry may return a conflict or not-found response after the first request succeeds.
/api/surveys/{id}Organization API key supplied as Authorization: Bearer convor_sk_....
In: header
application/json
TypeScript Definitions
Use the request body type in TypeScript.
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
{
"id": "11111111-1111-4111-8111-111111111111",
"orgId": "55555555-5555-4555-8555-555555555555",
"conversationId": "22222222-2222-4222-8222-222222222222",
"visitorId": "33333333-3333-4333-8333-333333333333",
"rating": 2,
"comment": "Helpful, but the resolution took longer than expected.",
"createdAt": "2030-06-15T09:15:00.000Z",
"updatedAt": "2030-06-15T09:20:00.000Z",
"isActive": true
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}{
"error": {
"code": "string",
"message": "string",
"fields": {
"property1": "string",
"property2": "string"
},
"details": {},
"correlationId": "string"
}
}curl --request PATCH \
'https://api.convor.io/api/surveys/11111111-1111-4111-8111-111111111111' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer convor_sk_...' \
--header 'Content-Type: application/json' \
--data '{
"rating": 2,
"comment": "Helpful, but the resolution took longer than expected."
}'const response = await fetch("https://api.convor.io/api/surveys/11111111-1111-4111-8111-111111111111", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": "Bearer convor_sk_...",
"Content-Type": "application/json"
},
body: JSON.stringify({
"rating": 2,
"comment": "Helpful, but the resolution took longer than expected."
}),
});
const contentType = response.headers.get("content-type") ?? "";
const data = response.status === 204
? null
: contentType.includes("json")
? await response.json()
: contentType.startsWith("text/")
? await response.text()
: await response.blob();
if (!response.ok) {
const message = typeof data === "object" && data !== null
&& "error" in data && typeof data.error === "object"
&& data.error !== null && "message" in data.error
? String(data.error.message)
: "Convor API request failed (" + response.status + ")";
throw new Error(message);
}
console.log(data);Was this page helpful?
List surveys with filtering
Lists survey responses for the current organization with offset pagination. Results are ordered from newest to oldest. When `operatorId` is provided, only surveys for conversations assigned to that operator are returned. `limit` defaults to `20`, `offset` defaults to `0`, and page navigation metadata is returned in `pagination`. Authenticate with an organization API key sent in `X-API-Key` or as a Bearer token and carrying the exact `surveys:read` scope. API-key access also requires the Automation & API module (`automation_api`). Authorized dashboard sessions remain supported where the route already permits them. The request is isolated to the authenticated organization. Resource and site/project identifiers must belong to that organization; out-of-scope identifiers are not disclosed. Results are ordered newest first and use offset pagination. `limit` defaults to 20, `offset` defaults to 0, and `operatorId` filters through the conversation's assigned operator. Inactive responses can remain stored after a soft delete; clients should rely on the returned collection and pagination rather than inferring deletion semantics from identifiers. Retry behavior: This read-only operation is safe to retry.
Update CSAT configuration
Updates CSAT survey settings for the organization. Admin access is required. The body is partial, so omitted fields keep their current value or the default values from `GET /api/csat/config`. `ratingScale` is fixed at `5`, `surveyDelay` can be `0` to `60` minutes, and `triggerTiming` can be `after_close`, `after_handoff`, or `manual`. Access requires an active organization administrator session or an organization API key with the `csat:write` scope. API-key calls also require the automation API module. Data is isolated to the authenticated organization; identifiers from another organization or site are not disclosed.