openapi: 3.0.3 info: title: Survicate Data Export Personal Data Respondents API description: 'The Survicate Data Export API (v2) allows retrieval of survey data collected in your Survicate account. It exposes resources for surveys, responses, respondents, and personal data management to integrate feedback into databases, CRMs, and custom solutions. ' version: '2' contact: name: Survicate Developer Documentation url: https://developers.survicate.com/data-export/ termsOfService: https://survicate.com/terms/ license: name: Proprietary url: https://survicate.com/terms/ servers: - url: https://data.survicate.com description: Survicate Data Export API base URL security: - BasicAuth: [] tags: - name: Respondents description: Operations related to survey respondents paths: /v2/respondents/{respondentId}/attributes: get: operationId: listRespondentAttributes summary: List respondent attributes description: Returns all attributes (traits) associated with a specific respondent. tags: - Respondents parameters: - $ref: '#/components/parameters/respondentId' responses: '200': description: Respondent attributes content: application/json: schema: $ref: '#/components/schemas/RespondentAttributes' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' /v2/respondents/{respondentId}/responses: get: operationId: listRespondentResponses summary: List respondent responses description: Returns all survey responses submitted by a specific respondent. tags: - Respondents parameters: - $ref: '#/components/parameters/respondentId' - name: page in: query description: Page number for pagination required: false schema: type: integer default: 1 minimum: 1 - name: per_page in: query description: Number of responses per page required: false schema: type: integer default: 20 maximum: 100 responses: '200': description: A list of respondent responses content: application/json: schema: $ref: '#/components/schemas/ResponseList' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' components: schemas: Response: type: object properties: id: type: string description: Unique identifier for the response survey_id: type: string description: Identifier of the survey this response belongs to respondent_id: type: string description: Identifier of the respondent who submitted this response completed_at: type: string format: date-time description: Date and time when the response was completed answers: type: array description: Answers submitted for each question items: $ref: '#/components/schemas/Answer' Pagination: type: object properties: page: type: integer description: Current page number per_page: type: integer description: Number of items per page total: type: integer description: Total number of items total_pages: type: integer description: Total number of pages RespondentAttributes: type: object properties: respondent_id: type: string description: Unique identifier for the respondent attributes: type: object additionalProperties: true description: Key-value pairs of respondent traits/attributes example: email: user@example.com name: Jane Doe plan: pro user_id: '12345' ResponseList: type: object allOf: - $ref: '#/components/schemas/Pagination' properties: data: type: array items: $ref: '#/components/schemas/Response' Answer: type: object properties: question_id: type: string description: Identifier of the question being answered value: oneOf: - type: string - type: number - type: array items: type: string description: The answer value (string for text, number for ratings/NPS, array for multi-select) answer_ids: type: array description: IDs of selected answer options (for closed-ended questions) items: type: string Error: type: object properties: message: type: string description: A human-readable error message code: type: string description: An error code identifier parameters: respondentId: name: respondentId in: path required: true description: The unique identifier of the respondent schema: type: string responses: Unauthorized: description: Authentication failed or API key is missing content: application/json: schema: $ref: '#/components/schemas/Error' TooManyRequests: description: 'Rate limit exceeded. Survicate allows up to 5 concurrent requests and up to 1000 requests per minute per workspace. ' content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource was not found content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: BasicAuth: type: http scheme: basic description: 'Use your Survicate API key as the value for Basic authentication. The API key can be found in the Survicate panel under Surveys Settings > Access Keys. Format: `Basic {{apiKey}}` '