Survey quota and qualification API
These routes use the external /api/v1/campaigns base, X-Api-Key, and a correctly signed ?enc= URL. They are intended for approved advertiser server integrations. The campaign, quota, qualification, and market IDs must come from the same advertiser workflow; treat them as opaque. The survey campaign API overview describes signing.
Quotas
| Method and path | Request | Success |
|---|---|---|
GET /{campaignId}/getcampaignquota | Signed URL. | 200 with campaignQuota array. |
POST /{campaignId}/campaignsquota | JSON name, num_respondents. | 201 with campaignQuota. |
POST /{campaignId}/clonecampaignsquota | JSON quotaId of a quota in this campaign. | 200 with cloned campaignQuota and its qualifications. |
GET /{campaignId}/campaignsquota/{campaignQuotaId} | Signed URL. | One quota. |
PUT /{campaignId}/campaignsquota/{campaignQuotaId} | JSON quota fields to update. | Updated quota. |
DELETE /{campaignId}/campaignsquota/{campaignQuotaId} | Signed URL. | Deletion result. |
num_respondents is the target completes for that quota. A newly created quota is attached to the campaign and returned with its generated ID. Read it back before building qualifications or supplier allocation. Cloning takes a quotaId in the body and requires that source quota to belong to the path campaign. Avoid copying target completes without reviewing the new study's actual design.
{"name":"US adults 25–34","num_respondents":100}
Qualifications
| Method and path | Request | Success |
|---|---|---|
GET /{campaignId}/campaignsquota/{campaignQuotaId}/getcampaignsqualifications | Signed URL. | 200 with campaignQualifications array. |
POST /{campaignId}/campaignsquota/{campaignQuotaId}/campaignsqualification | JSON question_id, pre_code_values. | Qualification and question snapshot. |
GET /{campaignId}/campaignsquota/{campaignQuotaId}/campaignsqualification/{campaignQualificationsId} | Signed URL. | One qualification. |
PUT /{campaignId}/campaignsquota/{campaignQuotaId}/campaignsqualification/{campaignQualificationsId} | JSON question_id, pre_code_values. | Updated qualification. |
DELETE /{campaignId}/campaignsquota/{campaignQuotaId}/campaignsqualification/{campaignQualificationsId} | Signed URL. | Deletion result. |
question_id must exist in the profiling catalog for the campaign's country-language and supported provider. pre_code_values selects accepted answer codes. First request the current catalog through POST /getProfilingQuestionsForTargeting, choose the question and answer codes for that locale, then create the qualification. An unknown question or missing country-language master data is rejected. Read the saved qualification and test respondents who should qualify and fail.
The legacy handlers return different response envelopes and, for some validation failures, a CallbackReply in an HTTP 200. Inspect Errors/ErrorCode as well as HTTP status; do not treat a network success as a successful quota write. Use separate credentials and ID stores for each advertiser, restrict who can call your integration, and never treat possession of a resource ID as authorization in your own system.