Skip to main content
GET
/
v1
/
surveys
/
{surveyId}
/
report
Get survey report
curl --request GET \
  --url https://api.doozy.live/v1/surveys/{surveyId}/report \
  --header 'x-api-key: <api-key>'
{
  "object": "survey_report",
  "id": "survey_abc123",
  "title": "Employee Satisfaction Survey",
  "mode": "survey",
  "response_type": "anonymous",
  "summary": {
    "total_deliveries": 250,
    "total_responses": 180,
    "response_rate": 72
  },
  "questions": [
    {
      "object": "survey_question_analytics",
      "id": "q_abc123",
      "text": "How satisfied are you with your onboarding experience?",
      "type": "scale_1_to_10",
      "total_responses": 120,
      "average_score": 7.8,
      "enps_score": 45,
      "enps_breakdown": {
        "promoters": 50,
        "passives": 40,
        "detractors": 30
      },
      "answer_breakdown": [
        {
          "answer": "8",
          "total_responses": 25,
          "percentage": 35.7
        }
      ],
      "comments": [
        {
          "comment": "Great experience overall!",
          "answered_at": "2026-01-16T14:30:00.000Z"
        }
      ]
    }
  ],
  "total_participants": 180,
  "has_more": false,
  "url": "/v1/surveys/survey_abc123/report",
  "next_cursor": "part_xyz789",
  "previous_cursor": "part_abc123",
  "participants": [
    {
      "object": "survey_participant",
      "id": "user_abc123",
      "email": "jane.doe@example.com",
      "display_name": "Jane Doe",
      "status": "responded",
      "received_at": "2026-01-15T10:30:00.000Z",
      "responded_at": "2026-01-16T14:30:00.000Z",
      "answers": [
        {
          "question_id": "q_abc123",
          "question_text": "How satisfied are you with your onboarding experience?",
          "question_type": "scale_1_to_10",
          "value": 8,
          "comment": "Great experience overall!"
        }
      ]
    }
  ],
  "warning": "Large dataset: consider using from_date/to_date filters for better performance"
}

Authorizations

x-api-key
string
header
required

API key for authentication. Generate keys in the Doozy dashboard.

Path Parameters

surveyId
string
required

The unique identifier of the survey

Minimum string length: 1
Example:

"survey_abc123"

Query Parameters

limit
integer
default:25

Maximum number of participants to return (1-100, default 25)

Required range: 1 <= x <= 100
Example:

25

starting_after
string

Cursor for pagination - the ID of the last participant from the previous page

Example:

"user_abc123"

ending_before
string

Cursor for pagination - the ID of the first participant from the next page (for backward pagination)

Example:

"user_xyz789"

from_date
string

Filter participants by received_at >= this date (ISO 8601 format)

Example:

"2026-01-01T00:00:00.000Z"

to_date
string

Filter participants by received_at <= this date (ISO 8601 format)

Example:

"2026-01-31T23:59:59.999Z"

participant_status
enum<string>
default:responded

Filter participants by status: 'responded' (default), 'not_responded', 'all', or 'none' (analytics only, skip participant list)

Available options:
all,
responded,
not_responded,
none
Example:

"responded"

include_comments
enum<string>
default:true

Include comments on questions in the report (default true)

Available options:
true,
false
Example:

"true"

Response

Survey report with analytics and participants

object
enum<string>
required

Object type identifier

Available options:
survey_report
Example:

"survey_report"

id
string
required

Survey ID

Example:

"survey_abc123"

title
string
required

Survey title

Example:

"Employee Satisfaction Survey"

mode
enum<string>
required

Survey mode

Available options:
poll,
survey
Example:

"survey"

response_type
enum<string>
required

How responses are collected

Available options:
anonymous,
user
Example:

"anonymous"

summary
object
required

Summary statistics for the report

questions
object[]
required

Per-question analytics (average scores, answer breakdowns, eNPS)

total_participants
integer
required

Total number of participants matching the filter (for pagination progress)

Example:

180

has_more
boolean
required

Whether there are more participants available beyond this page

Example:

false

url
string
required

The URL for accessing this report

Example:

"/v1/surveys/survey_abc123/report"

next_cursor
string | null
required

Cursor to fetch the next page of participants. Pass as starting_after in subsequent requests.

Example:

"part_xyz789"

previous_cursor
string | null
required

Cursor to fetch the previous page of participants. Pass as ending_before in subsequent requests.

Example:

"part_abc123"

participants
object[]

Paginated list of participants with their answers (based on participant_status)

warning
string

Warning message for large datasets without date filters

Example:

"Large dataset: consider using from_date/to_date filters for better performance"