## List surveys **get** `/v2/surveys` Returns all surveys configured in your Featurebase organization. ### Query Parameters - `limit` - Number of items to return (1-100, default 10) - `cursor` - Cursor for pagination - `type` - Filter by survey page type (text, link, rating, multiple-choice) - `isActive` - Filter by active status ### Response Format Returns a list object with: - `object` - Always "list" - `data` - Array of survey objects - `nextCursor` - Cursor for next page (null if no more results) ### Survey Object Each survey includes: - `id` - Unique identifier - `title` - Survey title - `description` - Survey description - `isActive` - Whether the survey is active - `responseCount` - Number of responses received - `targeting` - Targeting configuration (segments, URLs, CSS selectors) - `pages` - Array of survey pages/questions - `createdAt` - ISO 8601 timestamp when created - `updatedAt` - ISO 8601 timestamp when last updated ### Query Parameters - `cursor: optional string` An opaque cursor for pagination. Use the nextCursor value from a previous response to fetch the next page. - `isActive: optional boolean` Filter by active status - `limit: optional number` A limit on the number of objects to be returned, between 1 and 100. - `type: optional "text" or "link" or "rating" or "multiple-choice"` Filter by survey page type - `"text"` - `"link"` - `"rating"` - `"multiple-choice"` ### Header Parameters - `"Featurebase-Version": optional "2026-01-01.nova" or "2025-12-12.clover"` - `"2026-01-01.nova"` - `"2025-12-12.clover"` ### Returns - `data: array of Survey` Array of surveys - `id: string` Unique identifier - `createdAt: string` ISO 8601 timestamp when created - `isActive: boolean` Whether the survey is active - `object: "survey"` Object type identifier - `"survey"` - `organization: string` Organization ID - `pages: array of object { id, title, type, 13 more }` Survey pages - `id: string` Page ID - `title: string` Page title - `type: "text" or "link" or "rating" or "multiple-choice"` Page type - `"text"` - `"link"` - `"rating"` - `"multiple-choice"` - `allowSelectMultiple: optional boolean` Allow multiple selections - `choices: optional array of object { id, choice }` Available choices - `id: string` Choice ID - `choice: optional string` Choice text - `defaultAction: optional SurveyNextAction` Action to take if condition matches - `type: "page" or "end" or "next"` Type of next action - `"page"` - `"end"` - `"next"` - `pageId: optional string` Page ID to navigate to - `description: optional string` Page description - `highLabel: optional string` Label for high rating - `linkButtonText: optional string` Button text for link - `linkRedirectUrl: optional string` URL to redirect to - `linkTarget: optional "_blank" or "_self" or "_parent" or "_top"` Link target - `"_blank"` - `"_self"` - `"_parent"` - `"_top"` - `logic: optional array of object { comparator, next, value, id }` Conditional logic rules - `comparator: string` Comparison operator - `next: SurveyNextAction` Action to take if condition matches - `value: string or number or array of string` Value to compare against - `string` - `number` - `array of string` - `id: optional string` Logic rule ID - `lowLabel: optional string` Label for low rating - `placeholder: optional string` Placeholder for text input - `scale: optional number` Rating scale - `subType: optional "number" or "emoji" or "generic" or 2 more` Sub-type for rating/multiple-choice - `"number"` - `"emoji"` - `"generic"` - `"featurebase-posts"` - `"nps"` - `responseCount: number` Number of responses - `title: string` Survey title - `updatedAt: string` ISO 8601 timestamp when last updated - `description: optional string` Survey description - `targeting: optional object { css, loginRequired, segmentIds, url }` Targeting configuration - `css: optional array of object { value }` CSS selector targeting rules - `value: string` CSS selector - `loginRequired: optional boolean` Whether login is required - `segmentIds: optional array of string` Segment IDs to target - `url: optional array of object { matchType, value, id }` URL targeting rules - `matchType: "exact" or "contains" or "regex"` Type of URL matching - `"exact"` - `"contains"` - `"regex"` - `value: string` URL pattern to match - `id: optional string` Rule ID - `nextCursor: string` Cursor for fetching the next page (cursor-based pagination) - `object: "list"` Object type identifier - `"list"` ### Example ```http curl https://do.featurebase.app/v2/surveys \ -H "Authorization: Bearer $FEATUREBASE_API_KEY" ``` #### Response ```json { "data": [ { "id": "6743752ca81ae59d25cf834b", "createdAt": "2024-11-24T18:49:16.755Z", "isActive": true, "object": "survey", "organization": "5febde12dc56d60012d47db6", "pages": [ { "id": "6743752ca81ae59d25cf834c", "title": "How happy are you with our product?", "type": "rating", "allowSelectMultiple": false, "choices": [ { "id": "66dc54128b989696d050008b", "choice": "Very satisfied" } ], "defaultAction": { "type": "page", "pageId": "6743754dd8bf964ec2562cda" }, "description": "We really want to hear from you.", "highLabel": "It's awesome!", "linkButtonText": "Visit our website", "linkRedirectUrl": "https://example.com", "linkTarget": "_blank", "logic": [ { "comparator": "less than", "next": { "type": "page", "pageId": "6743754dd8bf964ec2562cda" }, "value": 4, "id": "6743755fd8bf964ec2562cdb" } ], "lowLabel": "Could be improved", "placeholder": "Type your answer here", "scale": 5, "subType": "emoji" } ], "responseCount": 85, "title": "Get feedback for Feedback module", "updatedAt": "2025-04-10T08:58:51.148Z", "description": "Measure what we can improve", "targeting": { "css": [ { "value": ".feedback-button" } ], "loginRequired": false, "segmentIds": [ "6636438b7fcdc515999042eb" ], "url": [ { "matchType": "contains", "value": "/dashboard/posts", "id": "674375cfd8bf964ec2562cdc" } ] } } ], "nextCursor": null, "object": "list" } ```