Reject a submission
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.
Authorization
apiKey API key as Bearer token: Authorization: Bearer
In: header
Path Parameters
ID of the submission to reject
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/submissions/string/reject" \ -H "Content-Type: application/json" \ -d '{}'{
"id": "string",
"status": "screen_passed",
"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": []
}Approve a submission POST
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.
Get tracked hours for an opportunity GET
Hours each expert worked on this opportunity, one row per person and date. Time spent on your other opportunities, and time clocked in but not spent on work, is not included. The current day is partial and refreshes through the day; `last_updated_at` says when the hours were last refreshed.