openapi: 3.1.0 info: title: SurveyMonkey API v3 description: >- SurveyMonkey REST API v3 covering users, groups, workgroups, surveys, survey structure (pages/questions), responses and analytics, collectors, and contacts. Authenticated via OAuth 2.0 access tokens passed as Bearer tokens. version: "3.0.0" contact: name: SurveyMonkey API documentation url: https://api.surveymonkey.com/v3/docs servers: - url: https://api.surveymonkey.com/v3 description: Production security: - oauth2: [] tags: - name: Users - name: Groups - name: Workgroups - name: Surveys - name: Survey Structure - name: Responses - name: Collectors - name: Contacts paths: /users/me: get: tags: [Users] summary: Get current user operationId: getCurrentUser responses: '200': description: Current user details content: application/json: schema: $ref: '#/components/schemas/User' /users/{user_id}/workgroups: parameters: - in: path name: user_id required: true schema: type: string get: tags: [Users] summary: List a user's workgroups operationId: listUserWorkgroups responses: '200': description: Workgroups content: application/json: schema: $ref: '#/components/schemas/Collection' /users/{user_id}/shared: parameters: - in: path name: user_id required: true schema: type: string get: tags: [Users] summary: List resources shared with a user operationId: listUserShared responses: '200': description: Shared resources content: application/json: schema: $ref: '#/components/schemas/Collection' /groups: get: tags: [Groups] summary: List groups/teams operationId: listGroups responses: '200': description: Groups content: application/json: schema: $ref: '#/components/schemas/Collection' /groups/{group_id}: parameters: - in: path name: group_id required: true schema: type: string get: tags: [Groups] summary: Get group details operationId: getGroup responses: '200': description: Group details content: application/json: schema: $ref: '#/components/schemas/Group' /groups/{group_id}/members: parameters: - in: path name: group_id required: true schema: type: string get: tags: [Groups] summary: List group members operationId: listGroupMembers responses: '200': description: Members content: application/json: schema: $ref: '#/components/schemas/Collection' /groups/{group_id}/members/{member_id}: parameters: - in: path name: group_id required: true schema: type: string - in: path name: member_id required: true schema: type: string get: tags: [Groups] summary: Get member details operationId: getGroupMember responses: '200': description: Member details content: application/json: schema: $ref: '#/components/schemas/Member' patch: tags: [Groups] summary: Update member operationId: updateGroupMember requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Member' responses: '200': description: Updated member content: application/json: schema: $ref: '#/components/schemas/Member' /workgroups: get: tags: [Workgroups] summary: List workgroups operationId: listWorkgroups responses: '200': description: Workgroups content: application/json: schema: $ref: '#/components/schemas/Collection' post: tags: [Workgroups] summary: Create workgroup operationId: createWorkgroup requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Workgroup' responses: '201': description: Workgroup created content: application/json: schema: $ref: '#/components/schemas/Workgroup' /workgroups/{workgroup_id}: parameters: - in: path name: workgroup_id required: true schema: type: string get: tags: [Workgroups] summary: Get workgroup details operationId: getWorkgroup responses: '200': description: Workgroup details content: application/json: schema: $ref: '#/components/schemas/Workgroup' patch: tags: [Workgroups] summary: Update workgroup operationId: updateWorkgroup requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Workgroup' responses: '200': description: Updated workgroup content: application/json: schema: $ref: '#/components/schemas/Workgroup' /surveys: get: tags: [Surveys] summary: List surveys operationId: listSurveys responses: '200': description: Surveys content: application/json: schema: $ref: '#/components/schemas/Collection' post: tags: [Surveys] summary: Create survey operationId: createSurvey requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Survey' responses: '201': description: Survey created content: application/json: schema: $ref: '#/components/schemas/Survey' /surveys/{id}: parameters: - in: path name: id required: true schema: type: string get: tags: [Surveys] summary: Get survey details operationId: getSurvey responses: '200': description: Survey details content: application/json: schema: $ref: '#/components/schemas/Survey' /surveys/search: get: tags: [Surveys] summary: Search surveys operationId: searchSurveys parameters: - in: query name: title schema: type: string responses: '200': description: Survey search results content: application/json: schema: $ref: '#/components/schemas/Collection' /surveys/{survey_id}/pages: parameters: - in: path name: survey_id required: true schema: type: string get: tags: [Survey Structure] summary: List survey pages operationId: listSurveyPages responses: '200': description: Pages content: application/json: schema: $ref: '#/components/schemas/Collection' /surveys/{survey_id}/pages/{page_id}: parameters: - in: path name: survey_id required: true schema: type: string - in: path name: page_id required: true schema: type: string get: tags: [Survey Structure] summary: Get page details operationId: getSurveyPage responses: '200': description: Page details content: application/json: schema: $ref: '#/components/schemas/Page' /surveys/{survey_id}/pages/{page_id}/questions: parameters: - in: path name: survey_id required: true schema: type: string - in: path name: page_id required: true schema: type: string get: tags: [Survey Structure] summary: List questions on a page operationId: listSurveyQuestions responses: '200': description: Questions content: application/json: schema: $ref: '#/components/schemas/Collection' /surveys/{survey_id}/pages/{page_id}/questions/{question_id}: parameters: - in: path name: survey_id required: true schema: type: string - in: path name: page_id required: true schema: type: string - in: path name: question_id required: true schema: type: string get: tags: [Survey Structure] summary: Get question details operationId: getSurveyQuestion responses: '200': description: Question details content: application/json: schema: $ref: '#/components/schemas/Question' /surveys/{survey_id}/responses: parameters: - in: path name: survey_id required: true schema: type: string get: tags: [Responses] summary: List survey responses operationId: listSurveyResponses responses: '200': description: Responses content: application/json: schema: $ref: '#/components/schemas/Collection' /surveys/{survey_id}/responses/bulk: parameters: - in: path name: survey_id required: true schema: type: string get: tags: [Responses] summary: Retrieve bulk responses operationId: listSurveyResponsesBulk responses: '200': description: Bulk responses content: application/json: schema: $ref: '#/components/schemas/Collection' /surveys/{survey_id}/rollups: parameters: - in: path name: survey_id required: true schema: type: string get: tags: [Responses] summary: Response counts (rollups) operationId: getSurveyRollups responses: '200': description: Rollups /surveys/{survey_id}/trends: parameters: - in: path name: survey_id required: true schema: type: string get: tags: [Responses] summary: Response trends operationId: getSurveyTrends responses: '200': description: Trends /surveys/{survey_id}/collectors: parameters: - in: path name: survey_id required: true schema: type: string get: tags: [Collectors] summary: List collectors for a survey operationId: listSurveyCollectors responses: '200': description: Collectors content: application/json: schema: $ref: '#/components/schemas/Collection' /collectors/{collector_id}/messages/{message_id}/send: parameters: - in: path name: collector_id required: true schema: type: string - in: path name: message_id required: true schema: type: string post: tags: [Collectors] summary: Send a collector invitation message operationId: sendCollectorMessage responses: '202': description: Send requested /collectors/{collector_id}/recipients: parameters: - in: path name: collector_id required: true schema: type: string get: tags: [Collectors] summary: List collector recipients operationId: listCollectorRecipients responses: '200': description: Recipients content: application/json: schema: $ref: '#/components/schemas/Collection' /contact_lists: get: tags: [Contacts] summary: List contact lists operationId: listContactLists responses: '200': description: Contact lists content: application/json: schema: $ref: '#/components/schemas/Collection' /contact_lists/{contact_list_id}/contacts: parameters: - in: path name: contact_list_id required: true schema: type: string get: tags: [Contacts] summary: List contacts within a contact list operationId: listContactsInList responses: '200': description: Contacts content: application/json: schema: $ref: '#/components/schemas/Collection' /contact_lists/{contact_list_id}/contacts/bulk: parameters: - in: path name: contact_list_id required: true schema: type: string post: tags: [Contacts] summary: Bulk add contacts to a list operationId: bulkAddContacts requestBody: required: true content: application/json: schema: type: object properties: contacts: type: array items: $ref: '#/components/schemas/Contact' responses: '201': description: Bulk add result components: securitySchemes: oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://api.surveymonkey.com/oauth/authorize tokenUrl: https://api.surveymonkey.com/oauth/token scopes: "surveys_read": Read surveys "surveys_write": Create and modify surveys "responses_read": Read responses "responses_write": Create and modify responses "contacts_read": Read contacts "contacts_write": Modify contacts "users_read": Read user data schemas: Collection: type: object properties: data: type: array items: type: object additionalProperties: true per_page: type: integer page: type: integer total: type: integer links: type: object additionalProperties: type: string User: type: object properties: id: type: string username: type: string first_name: type: string last_name: type: string email: type: string account_type: type: string Group: type: object properties: id: type: string name: type: string member_count: type: integer Member: type: object properties: id: type: string email: type: string role: type: string status: type: string Workgroup: type: object properties: id: type: string name: type: string description: type: string Survey: type: object properties: id: type: string title: type: string nickname: type: string language: type: string question_count: type: integer page_count: type: integer response_count: type: integer date_created: type: string format: date-time date_modified: type: string format: date-time href: type: string format: uri Page: type: object properties: id: type: string title: type: string description: type: string position: type: integer question_count: type: integer Question: type: object properties: id: type: string position: type: integer family: type: string subtype: type: string headings: type: array items: type: object properties: heading: type: string Contact: type: object properties: id: type: string first_name: type: string last_name: type: string email: type: string