OpinionReady

Integration

Field continuously over one signed contract

Teams that field every week should not be emailing specifications. The API covers feasibility, launch, live quota state and completion callbacks, using the same signed-callback protocol we run internally between our own panel and our supply partners. One integration, one signature scheme, one set of status values.

A developer reading callback logs while an integration runs

The whole surface

CallCalled byReturns
POST /feasibilityYour systemExpected incidence range, price per complete, earliest full-n date
POST /studiesYour systemStudy id and the entry link template to send respondents to
GET /studies/{id}/quotaYour systemPer-cell filled and remaining counts, refreshed live
GET /callbackOurs, into yoursTerminal status for one respondent, signed
POST /studies/{id}/closeYour systemFinal counts and the rejection log

Status values, and why there are only four

Every terminal outcome maps to one of four values: complete, screenout, quotafull, security. Providers who expose a dozen states usually do it because their internal systems disagree with each other, and the ambiguity always ends up being settled in the provider’s favour. Four states can be reconciled line by line against your own counts.

Callback signing

Callbacks are public GET requests. Without a signature, anyone who guesses a session id can credit themselves a complete. Ours are signed with HMAC-SHA256 over a fixed field order, compared in constant time, and settled exactly once per session even if both the browser redirect and the server-to-server postback arrive.

A failed signature returns a bare invalid with no explanation of what was wrong. Telling a forger which field failed is telling them how to succeed.

Before you integrate

Sandbox credentials are issued before any commercial discussion, and the sandbox returns the same four statuses with the same signature scheme against generated sessions. Most integrations that break in production break because they were tested only against the happy path, so the sandbox lets you force each terminal status on demand.

Request sandbox access