Changelog
API and documentation changes for publisher integrations.
2026-10-15
- Integration check in the portal — every app has a new Integration check tab: a step list from setup to the first complete, built from your live traffic (first request, lists with surveys, first participant, first complete), with warnings for lists that no participant opens, empty lists and failed requests, each with a fix. The dashboard shows the status of every app.
- Test links and example request — the Integration check creates signed test returns (complete and screen-out) to open in your own browser and a copy-ready request with your App ID.
- Troubleshooting & FAQ — new page: Troubleshooting & FAQ. No API change.
2026-09-23
- Faster, bounded surveys response —
POST /api/v1/publishers/surveysnow answers within about 5 seconds in every case. When survey matching does not finish in time, the response is HTTP 200 withhasSurveys: false, emptysurveys/partlySurveysandwarnings: [{ "code": "matching_timeout", "message": "…" }]— previously the request could wait up to 60 seconds and end in HTTP 504. Show your empty state and request again on the panelist's next page view. The response shape is otherwise unchanged. See Surveys → Warnings and Errors.
2026-09-22
profileDetails.ageandprofileDetails.genderbecome required on 2026-10-06 — almost all surveys target age and gender, so requests without them cannot be matched reliably. Until 2026-10-05, requests without these fields keep working as today, and successful responses carry awarningsarray (code: "profile_fields_required_soon", with the missingfields). From 2026-10-06,POST /api/v1/publishers/surveyswithoutprofileDetails.age(integer) andprofileDetails.genderreturns HTTP 400 with{ "requestStatus": "false", "message": "…" }. See Surveys → profileDetails.
2026-08-22
- Rate limit on the Publisher API — each API key may make 600 requests per minute across
/api/v1/publishers/*. Over the limit returns HTTP 429 with{ "requestStatus": "false", "message": "…" }and aRetry-Afterheader. See Errors → Rate limits. - Your tracking parameters are persisted and echoed —
subId1,subId2,subId3from the surveys request are stored with the wall session and appended to your Complete, Screen-out, and Cancelled redirects as optional query parameters. surveyIdandcpion redirects — the offer'ssurveyIdis echoed on every redirect; on Complete thecpishown in the surveys list for that offer is echoed as a plain decimal string (USD). None of the echoed parameters are part of the signing string — existing signature verification is unchanged. See Redirect URLs → Echoed parameters.smartdefenderpayload is stored — the optional fraud-verification object you send with the surveys request is now retained with the wall session and visible to mypinio fraud review alongside our own checks.
2026-06-24
- Complete base profile on wall click (Spec 0049) — when a panelist starts any offer (
entryLink), Stream collects missing base fields inline: date of birth (once; ±1 year vs stated age), postal code if absent, age only if not sent inprofileDetails, bot-check after DOB, and survey languages for the panelist country. PrefilledprofileDetails(age, gender, postal) are reused; DOB is not re-asked once stored. Existing panelists with incomplete profiles are prompted on their next wall entry. - SMARTHUB age from DOB — match qualification uses age derived from stored date of birth when present (stated age in
profileDetailsno longer goes stale after one year).
2026-06-23
profilingUrldeprecated — still returned for backward compatibility; will be removed in a future version. New integrations should showsurveysandpartlySurveysand openentryLinkonly. Base profile questions are completed inline when the panelist starts an offer (Spec 0048).- Documented
partlySurveyson the surveys response reference page.
2026-06-04
- API v1 parity:
GET /api/v1/publishersdiscovery and Apps CRUD (GET/POST/PATCH/DELETE /api/v1/publishers/apps). - Fumadocs pages: API discovery, Apps API, API reference index.
- Postman collection updated for all v1 routes.
2026-06-02
- Publisher integration documentation at publishers.mypinio.com/docs.
- Postman collection with Run in Postman import on Getting started, Quickstart, Integration guide, and API reference.
- Documented
POST /api/v1/publishers/surveys, redirect signature verification, and error handling.
API contract
The surveys endpoint follows the established publisher JSON contract:
- Top level:
requestStatus,hasSurveys,surveys[],partlySurveys[], optional deprecatedprofilingUrl,rewardUnitName - Each survey:
surveyId,entryLink,cpi,loi,ir, optionalcategory,userRewardAmount
Breaking changes to this contract will be announced here in advance.