Getting Started

Programmatic access to Terac's recruitment, interview, and insight delivery platform.

The Terac API gives you programmatic control over participant recruitment, screening, and data collection. You can target specific audiences with filters, screen applicants with custom questions, set quotas, and manage the full opportunity lifecycle programmatically.

Version: v2 (beta)

Base URL: https://terac.com/api/external/v2

This API is in beta. Endpoints and request/response shapes may change before general availability.

Resources

  • Filters — Target participants by demographics, geography, profession, and participation history using typed slug filters.
  • Screening Questions — Ask explicit multi-option questions during application to qualify or disqualify participants.
  • Quotas — Set per-answer floors and caps, or cross-question (interlocked) targets, on screening question answers.
  • API Reference — Full endpoint reference generated from the OpenAPI specification.

Getting Started

  1. Authenticate with your API key.
  2. Create a project to organize your opportunities.
  3. Browse the filter catalog to build your targeting criteria.
  4. Create an opportunity and launch it to begin recruitment.

Opportunity Statuses

An opportunity's status decides which calls it accepts. A call its status does not accept returns 409, and the message says which statuses it needs.

statusMeaningCalls it accepts
draftNot launched. An opportunity Terac is still preparing from a quote reads draft too.PATCH /opportunities/{opportunityId}, POST .../launch, DELETE /opportunities/{opportunityId}
pre_recruitingTaking applicants ahead of a launch set up in the dashboard.POST .../stop
activeRecruiting.POST .../pause, POST .../stop
pausedRecruiting is on hold.POST .../resume, POST .../stop
fulfilledThe participant target is reached. It settles to completed.None
completed, stopped, expired, cancelledEnded.None
failedIts launch never finished. Create a new opportunity rather than retrying this one.None

GET /opportunities?status= filters by any one of these values. Since the API is in beta, treat a status you do not recognize as one that accepts no calls.