/projects/{id}
Partial by contract: a null or absent field leaves the stored value alone, so a caller can send one field without echoing back a whole project it may not hold every part of.
The cost of that contract: a null cannot clear a value. Send "" to clear a string; numeric fields have no clear, only a new value.
A rejected update writes nothing — the method is transactional, so whatever had already been assigned to the entity rolls back. ensureRedirectIds also runs on update: it fills only ids that are null, which heals a project created before the test callbacks existed without ever reissuing one that already exists (reissuing would break a live survey configuration).
https://dashboard.a2bsample.com/api/developer/playground/client/projects/{projectId}AuthorizationandX-Api-Tokenas headers./projects/{id}https://dashboard.a2bsample.com/api/developer/playground/client/projects/{projectId}missing projectId
Send a request to see the response.
Example request
Request
Headers4
AuthorizationstringrequiredThe secret half. A client token starts clt_ — the four-character prefix says which table to resolve it in, so the row it matches is the caller. A vnd_… token on this prefix is a 403, not a 404.
X-Api-TokenstringrequiredThe identity half — this client's own 40-hex apiToken, the value GET /api/developer/me echoes back. Compared in constant time against the bearer token's own row, so a bearer token lifted on its own is not enough to call the playground.
Content-TypestringrequiredRequest media type.
AcceptstringoptionalResponse media type.
Path parameters1
projectIdstring<uuid>requiredProject identifier. Ownership-checked in the service, never trusted from the URL.
Body20
projectNamestringrequiredRequired on create and non-blank. Unique system-wide, not per client — a clash is a 409.
parentProjectIdstring<uuid>optionalstudyTypeintegeroptionalcountryIdstring<uuid>optionalMust exist, or 400 Unknown countryId: ….
languageIdstring<uuid>optionalMust exist.
currencyIdstring<uuid>optionalMust exist. Defaults to United States Dollar.
cpcnumberoptionalThe client's own rate per complete.
surveyLinkstringoptionalsurveyTestLinkstringoptionalRequired if status is 2 (Testing). Checked last, against the values just assigned rather than against the request, so it catches both moving a project into Testing with no test link and clearing the test link of a project already sitting in Testing.
reqCompleteintegeroptionalloiintegeroptionalirintegeroptionalstatusintegeroptionaldevicestringoptional1 Monitor, 2 Smartphone, 3 Tablet. Blank means any.
notesstringoptionalprojectBriefstringoptionaltargetAgeMinintegeroptionaltargetAgeMaxintegeroptionaltargetGenderstringoptionalSend "" to lift the restriction.
targetZipCodesstringoptionalRequest body
Responses
The project as it now stands.
successboolean- Whether the call succeeded.
messagestringprojectobject- A project as its owning client sees it.
vendorCpiis absent from this record entirely, not present-and-nulled — a field that is never populated is one nobody has to remember to null on a new code path.