# Respondent API - [Quickstart](https://developers.respondent.io/docs/Getting-started/quickstart.md): Find needed resources and keep in touch. - [Staging environment](https://developers.respondent.io/docs/Getting-started/staging-environment.md): Learn and test in staging - [Requirements for Production Credentials](https://developers.respondent.io/docs/Getting-started/requirements-for-production-credentials.md) - [Demo video checklist](https://developers.respondent.io/docs/Getting-started/staging-demo-video-checklist.md): Step-by-step instructions for recording your staging implementation review demo - [Projects overview](https://developers.respondent.io/docs/Projects/projects-overview.md): Recruiting the participants your researchers need - [Create a project](https://developers.respondent.io/docs/Projects/project-creation-json.md): Putting project requirements to use - [Project deep dive](https://developers.respondent.io/docs/Projects/project-deep-dive.md): Creating more complex projects - [NDAs](https://developers.respondent.io/docs/Projects/ndas.md): Require participants to sign an NDA before applying - [Project statuses](https://developers.respondent.io/docs/Projects/project-statuses.md): Manage project lifecycle from draft to close - [Targeting audiences effectively](https://developers.respondent.io/docs/Projects/targeting-audiences-effectively.md): Configure filters and signals to reach the right participants - [Advanced targeting attributes](https://developers.respondent.io/docs/Projects/advanced-targeting-attributes.md): Target participants on lifestyle, professional, technology, and product attributes using the advancedTargeting field - [Audience Quotas](https://developers.respondent.io/docs/Projects/audience-quotas.md) - [Screener overview](https://developers.respondent.io/docs/Screener-responses/screener-overview.md): Finding just the right participant for that study - [Creating questions](https://developers.respondent.io/docs/Screener-responses/screener-creation.md): Understanding question and logic types to configure questions - [Applying skip logic](https://developers.respondent.io/docs/Screener-responses/skip-logic.md): Using logic options with radio and checkbox questions - [Collecting responses](https://developers.respondent.io/docs/Screener-responses/collecting-responses.md): This will outline how to surface participants to your researchers - [Response statuses](https://developers.respondent.io/docs/Screener-responses/working-with-responses.md): Understand participant statuses and the actions available at each stage - [URL Parameters for Project Link](https://developers.respondent.io/docs/Screener-responses/URL-Parameters-for-Project-Link.md): Identify participants arriving at your project or scheduling tool - [Completion URL](https://developers.respondent.io/docs/Screener-responses/completion-url.md): Track task completion for unmoderated studies and surveys without triggering payment - [External screeners](https://developers.respondent.io/docs/Screener-responses/external-screeners.md): Run your own screener on your platform and post the results back to Respondent - [Scheduling](https://developers.respondent.io/docs/Screener-responses/scheduling.md): How to schedule for moderated projects - [Multiple payments](https://developers.respondent.io/docs/Screener-responses/multiple-payments.md): Pay participants multiple times for multi-stage studies - [Messaging Overview](https://developers.respondent.io/docs/Messaging/messaging-overview-copy.md): Streamlining communication between researchers and participants - [Creating conversations](https://developers.respondent.io/docs/Messaging/creating-conversations.md): Putting together the pieces of a conversation - [Webhooks Overview](https://developers.respondent.io/docs/Webhooks/webhooks.md): Webhooks are available to send updates to a specified url when changes take place. - [API vs Researcher Platform](https://developers.respondent.io/docs/Guides/api-vs-researcher-platform.md): Using the API and the Researcher Platform? This page is for you. - [Conditionals](https://developers.respondent.io/docs/Guides/conditional-and-dependency-reference.md): Learn what field are available based on different conditions - [Automated Researcher Emails](https://developers.respondent.io/docs/Guides/automated-emails.md): Overview of transactional emails sent by Respondent to researchers - [Defining Qualified Participants](https://developers.respondent.io/docs/Guides/b2b-participant-qualification-and-filters.md) - [API FAQ](https://developers.respondent.io/docs/Guides/api-faq.md): Common questions and tips for maximizing your integration - [Introduction](https://developers.respondent.io/reference/introduction-1.md): Get started with the Respondent Partner API - [Staging vs production](https://developers.respondent.io/reference/staging-vs-production.md) - [Create a project](https://developers.respondent.io/projects/create-a-project.md): Create a new B2B or B2C research project. Projects start in **DRAFT** status — add screener questions and then call [Publish](/projects/publish-a-project) to go live. - [Create a screener question](https://developers.respondent.io/screener-questions/create-a-screener-question.md): Add a screener question to a project. Supports up to 40 questions per project. Available types: `radio`, `checkbox`, `singleLineTextbox`, `multiLineTextbox`, `numericBox`, `sliderScale`, `fileUpload`, `rank`, and `matrix`. - [Create multiple screener questions](https://developers.respondent.io/screener-questions/create-multiple-screener-questions.md): Add up to 40 screener questions in a single request. This replaces any existing questions — use it for initial screener setup rather than incremental additions. - [Publish a project](https://developers.respondent.io/projects/publish-a-project.md): Publish a draft project to make it live and begin collecting responses. The `publicDescription` field must be set before publishing. - [Retrieve audience size estimate](https://developers.respondent.io/projects/retrieve-audience-size-estimate.md): Estimate how many participants in Respondent's panel match your project's targeting criteria. Use this to validate your audience configuration before publishing. - [Generate title & description](https://developers.respondent.io/projects/generate-title-and-description.md): Generate AI-suggested titles and descriptions based on your project configuration. Returns multiple options to choose from. - [Upload NDA file](https://developers.respondent.io/projects/upload-nda-file.md): Upload an NDA file for participants to sign before accessing the study. Accepts PDF files via multipart/form-data. - [Copy a project](https://developers.respondent.io/projects/copy-a-project.md): Duplicate an existing project as a new draft, including its screener questions and targeting configuration. Useful for running follow-up studies with similar criteria. - [Create test participant (Staging only)](https://developers.respondent.io/profiles/create-test-participant-staging-only.md): Create a test participant profile in the **staging environment only**. Use this to simulate screener responses and test your integration end-to-end without real participants. - [Create or replace a project's quota](https://developers.respondent.io/quotas/quotas/create-quota.md): Create or replace a project's quota. Id-preserving: matching group and segment ids keep their progress. The response includes changes and warnings. - [Retrieve a project's quota](https://developers.respondent.io/quotas/quotas/retrieve-quota.md): Retrieve the quota configuration and progress. A project with no quota returns 200 with version v2 and an empty groups array. version discriminates a legacy v1 body when present. - [Update quota targets](https://developers.respondent.io/quotas/quotas/update-quota.md): Sparse target edit. One entry per bucket; omitted buckets are untouched. Tracked-only is { op: track }. Rules and progress are not rewritten. - [Set external fills](https://developers.respondent.io/quotas/quotas/set-external-fills.md): Set absolute external fill counts for quota buckets. The whole array is applied atomically. - [Delete a project's quota](https://developers.respondent.io/quotas/quotas/delete-quota.md): Delete a project's quota. Returns 204. The next GET is an empty v2 configuration. Assignments on existing responses are not released. - [Retrieve all projects](https://developers.respondent.io/projects/retrieve-all-projects.md): List all projects in your organization. Closed projects are excluded by default — use the `status` filter to include them. - [Retrieve a specific project](https://developers.respondent.io/projects/retrieve-a-specific-project.md): Retrieve full details for a single project, including configuration, targeting criteria, and current status. - [Update a project](https://developers.respondent.io/projects/update-a-project.md): Update one or more fields on an existing project. Only the fields you include in the request body are modified — omitted fields are left unchanged. The set of editable fields depends on the project's status: draft B2B, draft B2C, and published projects each accept different request bodies. Once a pr… - [Pause a project](https://developers.respondent.io/projects/pause-a-project.md): Pause or unpause an active project. While paused, the project stops accepting new applicants but existing participants are unaffected. - [Close a project](https://developers.respondent.io/projects/close-a-project.md): Permanently close a project and stop all recruitment. **This action cannot be undone.** Ensure all participants have been paid before closing. - [Delete a project](https://developers.respondent.io/projects/delete-a-project.md): Permanently delete a project. Only projects in **DRAFT** status can be deleted — published or closed projects cannot be removed. - [Replace external screener questions](https://developers.respondent.io/projects/replace-external-screener-questions.md): Replace the project's declared external screener question catalog. Works on draft and published projects. Pairs with `externalScreenerLink`: both are required to publish an external-screener project, and on a live project the flow starts for new applicants once both are set. - [Retrieve screener questions](https://developers.respondent.io/screener-questions/retrieve-screener-questions.md): List all screener questions for a project, returned in display order. - [Retrieve specific screener question](https://developers.respondent.io/screener-questions/retrieve-specific-screener-question.md): Retrieve a single screener question by ID, including its answer options and configuration. - [Update screener question](https://developers.respondent.io/screener-questions/update-screener-question.md): Update a screener question's text, type, or answer values. Only the fields you include are modified. - [Delete screener question](https://developers.respondent.io/screener-questions/delete-screener-question.md): Remove a screener question from a project. Any existing responses to this question are preserved but the question will no longer be shown to new participants. - [Reorder screener questions](https://developers.respondent.io/screener-questions/reorder-screener-questions.md): Reorder screener questions to control the sequence in which they are presented to participants. - [List screener responses](https://developers.respondent.io/screener-responses/list-screener-responses.md): List all screener responses for a project with filtering and pagination. Use query parameters to filter by status, qualification state, or date range. - [View a specific response](https://developers.respondent.io/screener-responses/view-a-specific-response.md): Retrieve a single screener response including the participant's answers, profile data, and current status. - [Retrieve participant profile](https://developers.respondent.io/profiles/retrieve-participant-profile.md): Retrieve a participant's profile including engagement history and available profile fields. Note: some demographic and professional fields are being deprecated — refer to the changelog for details. - [Post External Screener Answers](https://developers.respondent.io/screener-responses/post-external-screener-answers.md): Post a participant's answers from your own screener — external-screener organizations only. Rows upsert idempotently per questionId and must reference the project's declared `externalQuestions`. The application reads as submitted once every declared question has an answer, or earlier when the payloa… - [Qualify participant](https://developers.respondent.io/screener-responses/qualify-participant.md): Qualify or disqualify a participant based on their screener responses, before inviting them. When disqualifying (`qualifyStatus: false`), include a reason code: `MISREPRESENTED`, `CONTEXT`, `SCREENER`, or `OTHER`. - [Invite participant](https://developers.respondent.io/screener-responses/invite-participant.md): Invite a qualified participant to your study. For unmoderated studies, provide a `meetingLink`. For moderated studies, provide a `bookingLink` so the participant can schedule a session. While the participant is still in `INVITED` status, the invitation can be withdrawn with [Cancel invite](/screener… - [Schedule participant](https://developers.respondent.io/screener-responses/schedule-participant.md): Schedule a participant for a moderated study session at a specific date and time. - [Cancel invite](https://developers.respondent.io/screener-responses/cancel-invite.md): Cancel a pending invitation before the participant has accepted or scheduled. The participant is returned to their previous qualified state. - [Cancel booking](https://developers.respondent.io/screener-responses/cancel-booking.md): Researcher-initiated cancel. Within 4 hours of the booked start, or after it has passed, the participant is marked attended and you are charged the full incentive and service fee. Use [Cancel booking (participant request)](/screener-responses/cancel-booking-participant-request) when the participant… - [Cancel booking & re-invite](https://developers.respondent.io/screener-responses/cancel-booking-&-re-invite.md): Researcher-initiated cancel and re-invite. Rejected less than 4 hours before the booked start, for both remote and in-person sessions. Combines two actions into a single API call. - [Cancel booking (participant request)](https://developers.respondent.io/screener-responses/cancel-booking-participant-request.md): Participant-initiated cancel. Always CANCELLED. The participant is not paid. No lead-time window. Do not use [Cancel booking](/screener-responses/cancel-booking). That path pays them if the session is less than 4 hours away. - [Mark as attended](https://developers.respondent.io/screener-responses/mark-as-attended.md): Mark a participant as having attended the study session. **This triggers the incentive payment process** — ensure the session is complete before calling. - [Mark as rejected](https://developers.respondent.io/screener-responses/mark-as-rejected.md): Mark a participant as rejected for this project. The participant will not be paid and cannot be re-invited. - [Mark as no-show](https://developers.respondent.io/screener-responses/mark-as-no-show.md): Mark a participant as a no-show. They are not paid. For moderated Partner API and external bookings, call this more than 15 minutes after the scheduled start. Do not use Cancel booking to record a no-show. - [Report participant](https://developers.respondent.io/screener-responses/report-participant.md): Report a participant for policy violations or quality issues. The Respondent team will review the report and take appropriate action. - [Mark as favorite](https://developers.respondent.io/screener-responses/mark-as-favorite.md): Toggle a participant's favorite status. Favorited participants can be easily filtered when reviewing responses. - [Hide participant](https://developers.respondent.io/screener-responses/hide-participant.md): Hide a participant from the default response list. Hidden participants can still be accessed by filtering explicitly. - [Trigger manual payout](https://developers.respondent.io/screener-responses/trigger-manual-payout.md): Trigger an immediate incentive payout to a participant. Use this for ad-hoc payments outside the standard attendance-based flow (e.g., bonus payments or partial compensation). - [Retrieve payout counts](https://developers.respondent.io/screener-responses/retrieve-payout-counts.md): Retrieve aggregated payout statistics for a project, including total paid, pending, and failed payment counts. - [Create a conversation](https://developers.respondent.io/messaging/create-a-conversation.md): Create a new conversation linked to a specific project. You must create a conversation before sending messages to participants. - [Create a message](https://developers.respondent.io/messaging/create-a-message.md): Send a message within an existing conversation. The message is delivered to all participants in the conversation. - [Add participant to conversation](https://developers.respondent.io/messaging/add-participant-to-conversation.md): Add a participant to an existing conversation so they can receive and send messages. - [Retrieve all messages](https://developers.respondent.io/messaging/retrieve-all-messages.md): List messages across conversations with optional filters for conversation, researcher, or date range. Supports pagination. - [Retrieve unread conversations](https://developers.respondent.io/messaging/retrieve-unread-conversations.md): Retrieve conversations that have unread messages. Use this to build inbox-style notification flows. - [Retrieve specific message](https://developers.respondent.io/messaging/retrieve-specific-message.md): Retrieve a single message by its UID, including sender info and timestamps. - [Retrieve all conversations](https://developers.respondent.io/messaging/retrieve-all-conversations.md): List all conversations for your organization, with optional filters by project or participant. - [Retrieve specific conversation](https://developers.respondent.io/messaging/retrieve-specific-conversation.md): Retrieve a single conversation by UID, including its participants and metadata. - [Mark conversation as read](https://developers.respondent.io/messaging/mark-conversation-as-read.md): Mark all messages in a conversation as read for your organization. - [Remove participant from conversation](https://developers.respondent.io/messaging/remove-participant-from-conversation.md): Remove a participant from a conversation. They will no longer receive new messages in this thread. - [Update a conversation](https://developers.respondent.io/messaging/update-a-conversation.md): Update a conversation's properties such as its title or metadata. - [Retrieve industry list](https://developers.respondent.io/industries/retrieve-industry-list.md): Retrieve the full list of industries used for B2B project targeting. Use the returned IDs when setting `targetProfessionalIndustries` on a project. **Note:** Industry IDs differ between staging and production — always fetch dynamically rather than hardcoding. - [Retrieve job title list](https://developers.respondent.io/job-titles/retrieve-job-title-list.md): Search and retrieve job titles used for B2B project targeting. Supports pagination — use `pageSize=50000` to fetch the full list. Use the returned IDs when setting `jobTitleIds` on a project. **Note:** IDs differ between staging and production. - [Retrieve skill list](https://developers.respondent.io/skills/retrieve-skill-list.md): Search and retrieve skills used for project targeting. Use the returned IDs when configuring skill-based targeting on a project. **Note:** Skill IDs differ between staging and production. - [Retrieve topics list](https://developers.respondent.io/topics/retrieve-topics-list.md): Search and retrieve topics used for B2C project targeting. Use the returned IDs when setting `topicIds` on a project. **Note:** Topic IDs differ between staging and production. - [Retrieve lookup values](https://developers.respondent.io/lookups/retrieve-lookup-values.md): Retrieve all enumerated lookup values (age groups, education levels, genders, income brackets, and more). Use these values when configuring demographic targeting criteria on projects. - [Create webhook](https://developers.respondent.io/webhooks/create-webhook.md): Register a webhook URL to receive real-time event notifications. Each team can have **one active webhook**, which receives all events; registering a new one deactivates the previous webhook. Failed deliveries are retried up to 5 times at 10-minute intervals. - [Retrieve webhook](https://developers.respondent.io/webhooks/retrieve-webhook.md): Retrieve the currently configured webhook for your organization. - [Retrieve specific webhook](https://developers.respondent.io/webhooks/retrieve-specific-webhook.md): Retrieve a specific webhook by ID, including its URL, status, and configured event types. - [Retrieve webhook event types](https://developers.respondent.io/webhooks/retrieve-webhook-event-types.md): List all available webhook event types that can be delivered to your endpoint. Use this to understand which events you can subscribe to. - [Simulate webhook event](https://developers.respondent.io/webhooks/simulate-webhook-event.md): Send a simulated test event to your webhook URL. Use this to verify your handler is correctly receiving and processing webhook payloads before going live. - [Deactivate webhook](https://developers.respondent.io/webhooks/deactivate-webhook.md): Deactivate a webhook and permanently stop all event deliveries to its URL. You can register a new webhook afterward. - [Search past participants](https://developers.respondent.io/team-respondents/search-past-participants.md): Search across participants from your organization's previous projects. Filter by name, project, or engagement status to find candidates for new studies. - [Retrieve past participant profile](https://developers.respondent.io/team-respondents/retrieve-past-participant-profile.md): Retrieve a past participant's profile along with their engagement history across your organization's projects. - [Invite multiple past participants](https://developers.respondent.io/team-respondents/invite-multiple-past-participants.md): Batch invite past participants to a new project. Send invitations to multiple participants in a single request for efficient re-engagement. - [View credit and incentive balance](https://developers.respondent.io/pricing/view-credit-and-incentive-balance.md): View your organization's current credit and incentive balance. Use this to check available funds before creating or publishing projects. - [Product Updates](https://developers.respondent.io/docs/Changelog/overview.md): All changes to the Respondent Partner API, newest first. - [2026-06-22](https://developers.respondent.io/docs/Changelog/2026-06-22.md): Staging test participants are auto-approved for identity verification, unblocking end-to-end API test flows. - [June 15, 2026](https://developers.respondent.io/docs/Changelog/2026-06-15.md): Consistent lower-cased company and work-email domains on participant profiles. - [June 8, 2026](https://developers.respondent.io/docs/Changelog/2026-06-08.md): Expanded B2B targeting limits for industries and job functions. - [Mar 10, 2026](https://developers.respondent.io/docs/Changelog/2026-03-10.md): Several participant profile fields will no longer be returned from the /profiles endpoint. - [Feb 3, 2026](https://developers.respondent.io/docs/Changelog/2026-02-03.md): Screener response webhooks now include projectId; parentId is deprecated. - [Dec 11, 2025](https://developers.respondent.io/docs/Changelog/2025-12-11.md): Messaging webhook events, AI-generated project titles/descriptions, and job title filtering by seniority. - [Sep 15, 2025](https://developers.respondent.io/docs/Changelog/2025-09-15.md): Breaking changes now live in production: publicDescription required, webhook retries, and screener question limits. - [Aug 18, 2025](https://developers.respondent.io/docs/Changelog/2025-08-18.md): Breaking changes now live in staging ahead of the Sept 15 production release. - [Aug 11, 2025](https://developers.respondent.io/docs/Changelog/2025-08-11.md): Advance notice of breaking API changes going live in staging Aug 18 and production Sept 15. - [Aug 5, 2025](https://developers.respondent.io/docs/Changelog/2025-08-05.md): Quotas generally available, cleaner Job Titles and Skills lookups, higher participant limits, and more. - [Jun 19, 2025](https://developers.respondent.io/docs/Changelog/2025-06-19.md): New qualifiedPendingIdVerification field and a fix for non-Latin project titles. - [Apr 30, 2025](https://developers.respondent.io/docs/Changelog/2025-04-30.md): Auto-invite, Completion URLs, audience size estimates, and enhanced participant profiles. - [Nov 20, 2024](https://developers.respondent.io/docs/Changelog/2024-11-20.md): Lookups, Topics, Job-titles, Industries, and Skills now include createdAt and updatedAt timestamps. - [Nov 14, 2024](https://developers.respondent.io/docs/Changelog/2024-11-14.md): Project description character limit increased to 800. - [Nov 13, 2024](https://developers.respondent.io/docs/Changelog/2024-11-13.md): Use key qualifier signals as filters when creating or updating draft projects. - [Oct 30, 2024](https://developers.respondent.io/docs/Changelog/2024-10-30.md): Add targetJobFunctions when creating or updating draft B2B projects. - [Oct 24, 2024](https://developers.respondent.io/docs/Changelog/2024-10-24.md): Projects create and draft update now support setting autopay true or false. - [Oct 18, 2024](https://developers.respondent.io/docs/Changelog/2024-10-18.md): isTopicsMatch attribute now available in screener response matching object. - [Sep 18, 2024](https://developers.respondent.io/docs/Changelog/2024-09-18.md): New endpoint for deleting draft projects programmatically. - [Sep 6, 2024](https://developers.respondent.io/docs/Changelog/2024-09-06.md): Screener response webhooks fire when a response is rejected or made visible again. - [Sep 4, 2024](https://developers.respondent.io/docs/Changelog/2024-09-04.md): Simulate specific status and rejection events on screener response webhooks. - [Aug 28, 2024](https://developers.respondent.io/docs/Changelog/2024-08-28.md): Screener response rejection webhooks available in staging. - [Aug 21, 2024](https://developers.respondent.io/docs/Changelog/2024-08-21.md): publishedAt added to project responses and bookedDate now marked required for scheduling. - [Aug 19, 2024](https://developers.respondent.io/docs/Changelog/2024-08-19.md): Update the external researcher name on published projects. - [Aug 16, 2024](https://developers.respondent.io/docs/Changelog/2024-08-16.md): Update the external researcher name on published projects (staging). ## OpenAPI Specs - [openapi](/api-reference/openapi.json) ## Optional - [Roadmap](https://www.respondent.io/api-release-notes?released=roadmap~b461b3f8)