Create a project
Creates a project to file opportunities under. Every opportunity belongs to one, so pass the returned id as project_id to POST /opportunities. The slug is generated from name with a unique suffix, and each call creates a new project even when the name is already in use.
Authorization
apiKey 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
application/json
curl -X POST "https://terac.com/api/external/v2/projects" \ -H "Content-Type: application/json" \ -d '{ "name": "string" }'{
"id": "string",
"name": "string",
"slug": "string",
"created_at": "string",
"dashboard_url": "string"
}{
"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."
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 61 seconds."
}
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}List projects GET
Lists your organization's projects, alphabetically by name. Returns up to `limit` per page; while `pagination.has_more` is true, pass `pagination.next_cursor` back as `cursor` for the next page. Deleted and internal-only projects are left out.
Get project details GET
Returns one project with `opportunity_count`, the number of opportunities filed under it, drafts included and deleted ones not. List them with `GET /opportunities` and `projectId`.