Submit a feasibility request

POST
/feasibility/requests

Submit a feasibility request: can Terac source a panel for this task, and at what CPI (cost per participant).

This is an async request-reply. The response comes back immediately with status RECEIVED and no CPI (costPerParticipant is null). Terac prices it out of band, either automatically within seconds or by routing it to a person, so poll GET /feasibility/requests/{requestId} rather than assuming a turnaround.

Only what you send here is priced: taskDescription, panelDescription, and the count and timeline. The filters, screening questions and tasks on the opportunity you build later are not part of the brief that was priced, so a confirmed CPI applies to the scope described here and not to a materially different one.

Once RESPONDED, create the opportunity with POST /opportunities and pass feasibility_request_id to price it from that confirmed CPI (Terac skips the autonomous estimate), then launch it. The request stays RESPONDED until that study launches, and is closed as won at launch rather than at create.

Authorization<token>

API key as Bearer token: Authorization: Bearer

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://terac.com/api/external/v2/feasibility/requests" \  -H "Content-Type: application/json" \  -d '{    "taskDescription": "string",    "panelDescription": "string"  }'
{
  "id": "string",
  "status": "RECEIVED",
  "source": "string",
  "taskDescription": "string",
  "panelDescription": "string",
  "submissionCount": 0,
  "timelineHours": 0,
  "costPerParticipant": "string",
  "respondedAt": "2019-08-24T14:15:22Z",
  "createdAt": "2019-08-24T14:15:22Z",
  "dashboard_url": "string"
}
{
  "code": "BAD_REQUEST",
  "message": "Invalid input data",
  "issues": []
}
{
  "code": "UNAUTHORIZED",
  "message": "Authorization not provided",
  "issues": []
}
{
  "code": "FORBIDDEN",
  "message": "Insufficient access",
  "issues": []
}
{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "Internal server error",
  "issues": []
}