Everything an AI agent can do with the SurveyMonkey API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints36
API versionv3
Last updated23 June 2026
Orientation

How the SurveyMonkey API works.

The SurveyMonkey API is how an app or AI agent works with a SurveyMonkey account: building a survey and its questions, sending it out through a collector, reading the responses that come back, and managing the contacts it goes to. Access is granted through an OAuth access token, and that token carries scopes that set which areas a call can read or write, like viewing surveys versus changing them. SurveyMonkey can also push an event to a registered endpoint when something happens, such as a response being completed.

36Endpoints
7Capability groups
16Read
20Write
11Permissions
Authentication
SurveyMonkey authenticates calls with an OAuth 2.0 access token, sent as a Bearer token in the Authorization header. A public app runs users through the standard authorization-code flow; a private app for a single account can use a token issued directly to it. Tokens are currently long-lived and do not expire, though SurveyMonkey notes that can change.
Permissions
Each area of the API maps to a scope, like surveys_read to view surveys and surveys_write to change them, responses_read and the more sensitive responses_read_detail for full answer data, and webhooks_write to manage event subscriptions. An app requests its scopes when a user connects, and the token can do only what those scopes allow. Two scopes, create or modify surveys and create or modify responses, need SurveyMonkey's approval for a public app, and some scopes require the account to be on a paid plan.
Rate limits
Calls are capped at 120 per minute and a per-day ceiling that starts at 500 on some plans and rises with the plan. Each response carries X-Ratelimit-App-Global headers showing the remaining per-minute and per-day allowance and when each resets, with the daily count resetting at midnight GMT.
Data model
A survey holds ordered pages, each page holds questions, and a collector distributes the survey by weblink, email, SMS, or popup. Responses are returned per survey or per collector, with full per-question answer data behind the detail scope. Contacts and contact lists feed the people an email or SMS collector sends to.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to SurveyMonkey determines what it can reach. There is a route for making calls and a route for receiving events, and each is governed by the access token behind it and the scopes that token carries.

Ways to connect

REST API

The REST API takes JSON request bodies, returns JSON, and pages through lists with page and per_page, at https://api.surveymonkey.com/v3. A call authenticates with an OAuth access token sent as a Bearer token. Regional hosts exist for the EU and Canada (api.eu.surveymonkey.com, api.ca.surveymonkey.com) for accounts whose data is held in those regions.

Best forConnecting an app or AI agent to SurveyMonkey.
Governed byThe access token and the scopes it carries.
Docs ↗

Webhooks

SurveyMonkey POSTs a small notification to a registered HTTPS endpoint when a subscribed event occurs, such as a response being completed or a collector being created. The notification names the event type and the object that changed, but not its full data, so the receiver calls back to fetch the object. Webhooks are created and managed through the webhooks endpoints with the webhooks_write scope.

Best forReceiving SurveyMonkey events at an app or AI agent.
Governed byThe webhooks scope on the token that created the subscription.
Docs ↗
Authentication

OAuth 2.0 (public app)

A public app sends a user through the authorization-code flow to grant the scopes the app requests, then exchanges the returned code for an access token tied to that user's account. Two scopes, create or modify surveys and create or modify responses, require SurveyMonkey to approve the app first, and some scopes require the account to be on a paid plan.

TokenOAuth 2.0 Bearer access token
Best forApps connecting to many SurveyMonkey accounts.
Docs ↗

Private app token

An app built for a single SurveyMonkey account can be issued an access token directly, without running the full authorization flow for every connection. It is sent the same way, as a Bearer token, and is limited to the same scopes.

TokenOAuth 2.0 Bearer access token
Best forAn integration serving one account.
Docs ↗
Capability map

What an AI agent can do in SurveyMonkey.

The SurveyMonkey API is split into areas an agent can act on, like surveys, the pages and questions inside them, collectors that distribute a survey, the responses that come back, and the contacts a survey is sent to. Each area has its own methods, and a write can change a live survey, send invitations, or remove collected data.

Endpoint reference

Every SurveyMonkey API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Surveys

Methods for listing, creating, updating, and deleting surveys.7

Scope label: View Surveys.

Acts onsurvey
Permission (capability)surveys_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Surveys. This scope needs SurveyMonkey approval for a public app.

Acts onsurvey
Permission (capability)surveys_write
VersionAvailable since the API’s base version
Webhook eventsurvey_created
Rate limitStandard limits apply

Scope label: View Surveys.

Acts onsurvey
Permission (capability)surveys_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: View Surveys.

Acts onsurvey
Permission (capability)surveys_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Surveys.

Acts onsurvey
Permission (capability)surveys_write
VersionAvailable since the API’s base version
Webhook eventsurvey_updated
Rate limitStandard limits apply

Scope label: Create/Modify Surveys.

Acts onsurvey
Permission (capability)surveys_write
VersionAvailable since the API’s base version
Webhook eventsurvey_updated
Rate limitStandard limits apply

Scope label: Create/Modify Surveys. Irreversible.

Acts onsurvey
Permission (capability)surveys_write
VersionAvailable since the API’s base version
Webhook eventsurvey_deleted
Rate limitStandard limits apply

Pages & Questions

Methods for the pages and questions that make up a survey's design.8

Scope label: View Surveys.

Acts onpage
Permission (capability)surveys_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Surveys.

Acts onpage
Permission (capability)surveys_write
VersionAvailable since the API’s base version
Webhook eventsurvey_updated
Rate limitStandard limits apply

Scope label: Create/Modify Surveys.

Acts onpage
Permission (capability)surveys_write
VersionAvailable since the API’s base version
Webhook eventsurvey_updated
Rate limitStandard limits apply

Scope label: Create/Modify Surveys.

Acts onpage
Permission (capability)surveys_write
VersionAvailable since the API’s base version
Webhook eventsurvey_updated
Rate limitStandard limits apply

Scope label: View Surveys.

Acts onquestion
Permission (capability)surveys_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Surveys.

Acts onquestion
Permission (capability)surveys_write
VersionAvailable since the API’s base version
Webhook eventsurvey_updated
Rate limitStandard limits apply

Scope label: Create/Modify Surveys.

Acts onquestion
Permission (capability)surveys_write
VersionAvailable since the API’s base version
Webhook eventsurvey_updated
Rate limitStandard limits apply

Scope label: Create/Modify Surveys.

Acts onquestion
Permission (capability)surveys_write
VersionAvailable since the API’s base version
Webhook eventsurvey_updated
Rate limitStandard limits apply

Collectors & Messages

Methods for the collectors that distribute a survey and the invite messages they send.6

Scope label: View Collectors.

Acts oncollector
Permission (capability)collectors_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Collectors.

Acts oncollector
Permission (capability)collectors_write
VersionAvailable since the API’s base version
Webhook eventcollector_created
Rate limitStandard limits apply

Scope label: View Collectors.

Acts oncollector
Permission (capability)collectors_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Collectors.

Acts onmessage
Permission (capability)collectors_write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Collectors. Sends real invitations to people.

Acts onmessage
Permission (capability)collectors_write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Collectors.

Acts onrecipient
Permission (capability)collectors_write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Responses

Methods for reading the responses collected by a survey or collector.5

Scope label: View Responses.

Acts onresponse
Permission (capability)responses_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: View Responses.

Acts onresponse
Permission (capability)responses_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: View Response Details. Returns full respondent answers.

Acts onresponse
Permission (capability)responses_read_detail
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: View Response Details. Returns full respondent answers.

Acts onresponse
Permission (capability)responses_read_detail
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: View Responses.

Acts onresponse
Permission (capability)responses_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Contacts & Lists

Methods for the contacts and contact lists a survey is sent to.5

Scope label: View Contacts.

Acts oncontact_list
Permission (capability)contacts_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Contacts.

Acts oncontact_list
Permission (capability)contacts_write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: View Contacts.

Acts oncontact
Permission (capability)contacts_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Contacts.

Acts oncontact
Permission (capability)contacts_write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Contacts.

Acts oncontact
Permission (capability)contacts_write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Webhooks

Methods for subscribing to and managing event notifications.4

Scope label: View Webhooks.

Acts onwebhook
Permission (capability)webhooks_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Webhooks.

Acts onwebhook
Permission (capability)webhooks_write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Webhooks.

Acts onwebhook
Permission (capability)webhooks_write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Scope label: Create/Modify Webhooks.

Acts onwebhook
Permission (capability)webhooks_write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Users

Methods for reading the authenticated user's account.1

Scope label: View User Details.

Acts onuser
Permission (capability)users_read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

SurveyMonkey can notify an app when something happens in an account, like a response being completed or a collector being created. It sends an event naming the object that changed, so an integration learns about activity without polling.

EventWhat it signalsTriggered by
response_completedA respondent finished and submitted a survey. This is the common signal to fetch and process a new complete response./v3/surveys/{id}/collectors
response_createdA respondent began a survey, before it is submitted./v3/surveys/{id}/collectors
response_updatedAn existing response's data changed./v3/surveys/{id}/collectors
response_disqualifiedA respondent was disqualified by the survey's logic or quota rules./v3/surveys/{id}/collectors
response_deletedA response was removed./v3/surveys/{id}/collectors
survey_createdA new survey was created in the account./v3/surveys
survey_updatedA survey's settings or structure changed./v3/surveys/{id}
/v3/surveys/{id}
survey_deletedA survey was removed./v3/surveys/{id}
collector_createdA new collector was created on a survey, distributing it by weblink, email, SMS, or popup./v3/surveys/{id}/collectors
collector_updatedA collector's configuration changed./v3/surveys/{id}/collectors
collector_deletedA collector was removed./v3/surveys/{id}/collectors
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

SurveyMonkey limits how often an app can call, with a per-minute ceiling and a separate daily ceiling that varies by plan, and returns the remaining allowance in response headers.

Request rate

SurveyMonkey meters requests by count, not by a per-method cost. An app is allowed 120 requests per minute and a separate daily cap that starts at 500 on some plans and is higher on others. Every response includes X-Ratelimit-App-Global-Minute-Remaining, X-Ratelimit-App-Global-Day-Remaining, and matching reset headers, so an integration can read its remaining allowance rather than guess. The daily allowance resets at midnight GMT. Going over returns an error, and SurveyMonkey enforces against apps that repeatedly exceed 150 percent of a limit.

Pagination

List endpoints are page-based. A request sets page (default 1) and per_page (default 50, up to 1000), and the response returns total, page, per_page, and a links object with self, first, prev, next, and last URLs to walk through the pages.

Request size

A list page returns up to 1000 items, the maximum value of per_page. On a Basic plan, a survey returns at most the 25 most recent responses, and asking for more returns an error pointing to the required upgrade.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
4001000-1017 (bad request)The request was malformed or a parameter was invalid, like a missing required field or an unrecognized option.Read the error name and message, fix the request, and resend. The call is not retryable as-is.
4011010-1018 (authentication)The access token is missing, invalid, expired, or was revoked by the user.Re-run the OAuth flow to obtain a fresh token, then retry.
4031020-1024 (permission)The token lacks the scope for this call, or the account's plan does not permit it.Request the needed scope when connecting, or confirm the account is on a plan that allows the action.
4041030-1032 (not found)The requested survey, collector, response, or other resource does not exist or is not visible to this token.Verify the id and that the token's account owns or was shared the resource.
4091050-1053 (conflict)The request conflicts with the resource's current state, like a duplicate or an operation not allowed in that state.Re-fetch the resource, reconcile the state, and retry.
4291040-1042 (rate limited)The per-minute or per-day request limit was exceeded.Read the X-Ratelimit-App-Global headers, wait for the reset, and retry with backoff.
5001060-1063 (server error)An error on SurveyMonkey's side. It is rare.Retry with backoff, and contact SurveyMonkey support if it persists.
Versioning & freshness

Version history.

SurveyMonkey runs one current version of its API, identified in the path, and ships dated changes through its developer changelog rather than minting new version numbers.

Version history

What changed, and when

Latest versionv3
v3Current version
Current API version

SurveyMonkey runs one current major version, v3, identified in the request path. Rather than minting new version numbers, SurveyMonkey ships additive changes and notes them in its developer documentation and changelog. An integration tracks that changelog instead of pinning a dated version.

What changed
  • Single current major version, identified as v3 in the path.
  • Regional API hosts for the EU and Canada for data held in those regions.
  • OAuth 2.0 access tokens, currently long-lived.

There is one current version; track the changelog for additive changes.

SurveyMonkey API changelog ↗
Questions

SurveyMonkey API, answered.

How does authentication work?+
SurveyMonkey uses OAuth 2.0. A public app sends a user to SurveyMonkey to authorize the requested scopes, receives a short-lived code, and exchanges it for an access token. That token is then sent as a Bearer token in the Authorization header on every call. A private app built for one account can be issued a token directly. Tokens are currently long-lived and do not expire, but SurveyMonkey notes that may change, so an app should handle a revoked or invalid token.
What do scopes control, and why do some need approval?+
Each scope grants access to one area, such as surveys_read to view surveys, surveys_write to create or change them, responses_read_detail for full answer data, contacts_write for contacts, and webhooks_write for event subscriptions. An app only gets the scopes it requests and the user approves. Two scopes, create or modify surveys and create or modify responses, require SurveyMonkey to approve the app before a public app can request them, and some scopes need the connected account to be on a paid plan.
How do I read survey responses?+
Responses can be listed per survey or per collector. A summary list needs responses_read, while the full per-question answer data, returned by the bulk and details endpoints, needs the separate responses_read_detail scope. Bulk endpoints return many full responses in one call, which is the efficient way to pull answer data for analysis.
What are the rate limits?+
An app is limited to 120 requests per minute and a daily cap that starts at 500 on some plans and is higher on others. Every response carries X-Ratelimit-App-Global headers giving the remaining per-minute and per-day counts and their reset times, with the daily count resetting at midnight GMT. Going over returns an error, and repeated abuse past 150 percent of a limit is enforced against.
How do webhooks work?+
An app creates a webhook with webhooks_write, naming the event types to subscribe to, like response_completed or collector_created, and the object type to filter on, either survey or collector. When a matching event occurs, SurveyMonkey sends a small notification to the registered URL identifying the object that changed. The notification does not contain the response data itself, so the app calls back to fetch the full object.
Does the response limit differ by plan?+
Yes. On a Basic plan a survey returns at most the 25 most recent responses, and a request for more returns an error pointing to the upgrade needed. Higher plans return the full set. Some scopes also require the connected account to be on a paid plan to be used at all.
Related

More forms API guides for agents

What is Bollard AI?

Control what every AI agent can do in SurveyMonkey.

Bollard AI sits between a team's AI agents and SurveyMonkey. Grant each agent exactly the access it needs, read or write, area by area, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared SurveyMonkey token.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
SurveyMonkey
Feedback Agent
Read responses ResourceOffReadFull use
Send survey invites ActionOffReadFull use
Surveys ResourceOffReadFull use
Contacts ResourceOffReadFull use
Per-agent access, set in Bollard AI, not in SurveyMonkey