Approve a submission
Approves a submission that is awaiting_review, accepting the reviewed work. The expert is paid when the submission lands in approved, once all of its work is accepted. It stays in_progress while tasks remain, and on an hourly or per-task opportunity, where approval puts the expert on the project and they are paid through payout runs instead. The response carries the status it lands in. A submission in any other status returns 409.
Authorization
apiKey API key as Bearer token: Authorization: Bearer
In: header
Path Parameters
ID of the submission, as listed by GET /opportunities/{opportunityId}/submissions.
Request Body
application/json
This operation takes no body fields, but the request must still carry Content-Type: application/json and a JSON body: send {}.
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://terac.com/api/external/v2/submissions/string/approve" \ -H "Content-Type: application/json" \ -d '{}'{
"id": "q3w8e1r6t4y9u2i7o5p0a3sd",
"status": "approved",
"dashboard_url": "https://terac.com/acme-research/customer-research-mg4q7x2a/opportunities/h7k2p9w4c1v6n3x8b5m0q2rt/submissions"
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"error": {
"code": "UNAUTHORIZED",
"message": "API key required. Include Authorization: Bearer <key> header."
}
}{
"error": {
"code": "FORBIDDEN",
"message": "This account is not permitted to use the API."
}
}{
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 61 seconds."
}
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Decline an applicant awaiting your decision POST
Declines an applicant sitting in your applicant-review queue. The submission becomes `screened_out` and they are not invited. Returns 409 if the applicant is not awaiting your decision, which includes one you have already decided on.
Reject a submission POST
Rejects a submission that is `awaiting_review`, so the expert is not paid for that work and the submission becomes `rejected`. `rejection_category` and `rejection_reason` are optional, but they are the only record of why the work went unpaid. A submission in any other status returns 409.