/projects

Scoped by clientId in the query, so the total is this client's total. Whatever clientId a caller might put on the filter is overwritten with their own — there is no parameter for it, and the service rebuilds the filter rather than trusting it.

GEThttps://dashboard.a2bsample.com/api/developer/playground/client/projects
RequiresAuthorizationandX-Api-Tokenas headers.
Client
Client·Projects·GET/projects
GEThttps://dashboard.a2bsample.com/api/developer/playground/client/projects
Response

Send a request to see the response.

Example request

Request
curl --request GET \  --url 'https://dashboard.a2bsample.com/api/developer/playground/client/projects?pageNo=1&maxPerPage=25' \  --header 'Authorization: Bearer $A2B_BEARER_TOKEN' \  --header 'X-Api-Token: $A2B_API_TOKEN' \  --header 'Accept: application/json'

Request

Headers3

Authorizationstringrequired

The 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.

example: Bearer clt_4c8ea1f52d6b8e0c4a919f1c4e2a7b3d
X-Api-Tokenstringrequired

The 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.

example: 3c7a1b905e424d189f637a2c5e1b8d40b1d9f4e6
Acceptstringoptional

Response media type.

default: application/json

Query parameters6

pageNointegeroptional

Page number, 1-based. A null or non-positive value means the first page.

default: 1example: 1
maxPerPageintegeroptional

Rows per page. Nothing is rejected for being out of range — a null or non-positive size means the default and an oversized one is clamped. The clamp is never silent: the listing still answers with the real total. (max 200)

default: 25example: 25
projectNamestringoptional

Name contains — substring match.

statusintegeroptional

ProjectStatus code.

1234567
countryIdstring<uuid>optional

Target country.

parentProjectIdstring<uuid>optional

Only children of this study.

Responses

200OK

Matching projects plus the pageable total.

successboolean
Whether the call succeeded.
projectsarray<object>
totalinteger
Example response
{  "success": true,  "projects": [    {      "id": "9f1c4e2a-7b3d-4c8e-a1f5-2d6b8e0c4a91",      "pId": 1042,      "parentProjectId": "5f1c8a3e-9d21-4c77-92f0-1b3a4d6e8c00",      "projectName": "Q3 Brand Tracker",      "studyType": 1,      "status": 3,      "statusLabel": "Running",      "countryId": "b1d9f4e6-2a80-4c35-97e1-6f3b0d8a5c72",      "countryName": "United States",      "languageId": "5f1c8a3e-9d21-4c77-92f0-1b3a4d6e8c00",      "languageName": "English",      "currencyId": "2d6b8e0c-4a91-4e2a-9f1c-7b3d4c8ea1f5",      "currencyName": "United States Dollar",      "cpc": 4.5,      "surveyLink": "https://survey.example.com/s/9f1c4e2a",      "surveyTestLink": "https://survey.example.com/s/9f1c4e2a?test=1",      "reqComplete": 500,      "loi": 12,      "ir": 35,      "device": "1,2",      "notes": "string",      "projectBrief": "string",      "targetAgeMin": 0,      "targetAgeMax": 0,      "targetGender": "MALE",      "targetZipCodes": "string",      "completeRedirectId": "c1a4e2a7-b3d4-4c8e-a1f5-2d6b8e0c4a91",      "disqualifyRedirectId": "d2a4e2a7-b3d4-4c8e-a1f5-2d6b8e0c4a91",      "terminateRedirectId": "t3a4e2a7-b3d4-4c8e-a1f5-2d6b8e0c4a91",      "quotaFullRedirectId": "q4a4e2a7-b3d4-4c8e-a1f5-2d6b8e0c4a91",      "testCompleteRedirectId": "5f1c8a3e-9d21-4c77-92f0-1b3a4d6e8c00",      "testDisqualifyRedirectId": "5f1c8a3e-9d21-4c77-92f0-1b3a4d6e8c00",      "testTerminateRedirectId": "5f1c8a3e-9d21-4c77-92f0-1b3a4d6e8c00",      "testQuotaFullRedirectId": "5f1c8a3e-9d21-4c77-92f0-1b3a4d6e8c00",      "createdAt": "2026-08-24T14:32:07",      "updatedAt": "2026-08-25T09:11:40"    }  ],  "total": 42}