Skip to main content
For unmoderated studies and surveys, researchers usually point participants to an external survey, prototype, or task. The completionUrl is how you get an authoritative signal that a participant finished that task — without moving them to ATTENDED and triggering payout. This separation matters for API partners. Because the API requires autopay to be enabled, Mark as attended immediately starts the incentive payment. Most partners want to inspect the quality of a response (manually or via automated checks) before paying. completionUrl gives you a clean “task is done, participant is ready for review” signal in between those two states, and it’s visible to both you and the researcher on the screener response. That review period lasts 24 hours — see Your review window is 24 hours — after which Respondent marks the participant attended for you and autopay fires. This page covers:
  • What completionUrl is and what the cc parameter means
  • All the ways a task can get marked complete (and what each one is for)
  • How task completion relates to marking a participant as attended
  • How long you have to review before payment happens automatically

What is completionUrl?

When you create a project where targetResearchMethodology is unmoderatedStudy or survey, the project response includes a completionUrl field. It looks like this:
  • completionUrl is generated by Respondent. You cannot set it on create or update — it comes back on the project response.
  • The cc query parameter is the project completion ID: a unique identifier that lets Respondent associate the incoming participant with the right screener response on the right project. It is not a participant identifier on its own — Respondent also requires the participant to be signed in to their Respondent account in the same browser session.
You should:
  1. Place the URL of the external survey, study, or task in unmoderatedStudyOrSurvey.remoteCommunicationDetails when creating the project (see Project deep dive).
  2. Configure the survey or task tool to redirect to completionUrl once the participant finishes.
When the participant lands on completionUrl, Respondent:
  • Sets task.status to complete on their screener response
  • Sets task.completedAt to the current timestamp (this appears on the screener response object — see Mark as attended response schema)
  • Stops any pending task-completion reminder emails for that participant

How tasks get marked complete

There are three ways task.status becomes complete on a screener response. Only the first one is something you, as an API partner, plug into directly.
There is no public API endpoint to mark a task complete directly. If you want Respondent’s UI and the screener response object to reflect “task done” before you decide on payment, the only lever is to send the participant through completionUrl at the end of your external task.

Task complete vs. attended

task.status and screenerResponse.status are independent. Hitting completionUrl only touches task.status; calling Mark as attended only touches screenerResponse.status. Neither one implies the other. For API partners, that gives you a three-stage lifecycle for unmoderated work:
  1. Invited — you’ve sent the participant to the task.
  2. Task complete — they finished the task and were redirected through completionUrl. task.status = complete, task.completedAt is set, reminder emails stop. The participant has not been paid.
  3. Attended — you’ve reviewed the response and called Mark as attended. Status moves to ATTENDED and autopay fires.
A typical lifecycle:
  1. Researcher creates the project — completionUrl is returned on the response.
  2. Participant qualifies, you invite them, they complete the external task.
  3. The external tool redirects the participant to completionUrl. Respondent marks the task complete and stops reminders.
  4. Your system (or a reviewer) inspects the response.
  5. Once you’re happy, your system calls Mark as attendedATTENDED + autopay.
  6. If the response is unacceptable, call Mark as rejected or Mark as no show instead.

Your review window is 24 hours

Stage 2 is not open-ended. For unmoderatedStudy and survey projects, task completion also schedules an automatic completion 24 hours later. If you have not acted by then, Respondent moves the response to ATTENDED on your behalf and autopay fires — the same outcome as if you had called Mark as attended yourself. This is deliberate: it means a participant who did the work still gets paid if your review never happens. But it does mean the review window has a deadline, and the practical consequence is about ordering: Two things follow from this:
  • Reject or mark no-show inside the window if you want to withhold payment. Both prevent a payout from being created; pick by reason — reject for a quality failure, no-show for a task that wasn’t completed.
  • Don’t mark attended just to record that the task is done. completionUrl already records that, and the 24-hour timer already handles “approved by default”. Calling Mark as attended early converts your remaining review time into an immediate payout.
If you miss the window and need a payment stopped, contact partner support promptly — a created payout stays pending for a short period before it is disbursed, and there is no partner-facing endpoint to cancel it.
The automatic completion only applies when the participant actually went through completionUrl and the response is still INVITED. If you skip the completion URL, nothing auto-advances and you must call Mark as attended yourself. Moderated methodologies have no equivalent — there is no automatic completion for oneOnOne, focusGroup, or in-person studies.
Don’t treat completionUrl as a payment trigger — it’s a “ready for review” signal, and payment does not start at that moment. It does start 24 hours later if you take no action, so treat task completion as the start of a review clock rather than an indefinite hold.

How cc interacts with the other URL parameters

The cc parameter on completionUrl is separate from the URL parameters that Respondent appends to your remoteCommunicationDetails link (respondent_profile_id, respondent_screener_response_id, and so on).
  • The outbound link from Respondent to your task tool carries the respondent_* parameters so your tool knows which participant and screener response it is dealing with.
  • The return link back to Respondent (completionUrl) carries cc so Respondent can identify which project’s task is being marked complete. The participant identity comes from the signed-in Respondent session, not from cc.
You can pass cc through your survey tool as a hidden field and use it as part of the final redirect, or you can hard-code the project’s completionUrl as the redirect target — both work.

When completionUrl is and isn’t returned

For moderated methodologies, task completion is determined by the meeting actually happening — there is no equivalent self-reported completion link.
Last modified on July 30, 2026