Survey screener and catalog API
All paths below are relative to /api/v1/campaigns and require the advertiser X-Api-Key and signed ?enc= query. These are external survey campaign routes, separate from offer campaign Custom S2S tracking.
Custom questions
| Method and path | Result |
|---|---|
GET /{campaignId}/getcustomquestions | 200 with customQuestions array. |
POST /{campaignId}/customquestion | 201 with a blank initialized question and its generated ID. |
GET /{campaignId}/customquestion/{customquestionId} | One question. |
PUT /{campaignId}/customquestion/{customquestionId} | Update text, type, order, and question controls. |
DELETE /{campaignId}/customquestion/{customquestionId} | Remove the question. |
GET /{campaignId}/getcustomquestionsforprofiling | Campaign custom questions formatted for profiling. |
Creating a custom question initializes a record; it does not populate the public question text from the create body. Use the returned ID with PUT to set display_text, question_type_id, and the applicable controls. A single-punch question can have answer options with value, sort_order, and control_state (cs_accept or cs_reject as appropriate). Test both an accepted and a rejected answer before fielding. The exact available types and controls should be read from the current dashboard rather than inferred from a copied question ID.
Answer options and catalogs
| Method and path | Request/response |
|---|---|
POST /cq/{customquestionId}/createoption | Initializes an answer option; returns the updated customQuestions record. |
PUT /cq/{customquestionId}/option/{option_id} | Updates one initialized option's text and controls. |
DELETE /cq/{customquestionId}/option/{option_id} | Removes one option. |
POST /listcountrylanguage | Returns country-language choices. |
POST /getProfilingQuestionsForTargeting | Returns profiling questions and answer codes for targeting. |
The create-option route initializes a default blank option with control_state: "cs_accept"; it does not read the desired answer text from the create request. Use its returned option_id with PUT, then fetch the question again and verify order and accept/reject behavior. Align the screener language with the campaign market and with the external survey's own eligibility rules. For nested resource security, see quota and qualification API.