API reference / Projects
Projects
A project is the top-level container for your jobs, schedules, runs, webhook endpoints, and API keys. Each project has a development environment (keys beginning tnd_dev_) and a production environment (keys beginning tnd_live_), and the two cannot see each other's resources. Plan limits such as run quota, rate limit, and concurrency apply per project.
The project object
| Field | Type | Description |
|---|---|---|
id | string | Unique project identifier, prefixed prj_. Immutable. |
name | string | Display name of the project. |
plan | string | Current plan: hobby, pro, scale, or enterprise. |
default_region | string | Region used when a job does not specify one. Defaults to us-east. |
limits | object | Plan limits: requests_per_minute, concurrency, and schedules. |
usage | object | Current billing-period figures: runs_this_period and runs_included. |
api_version | string | API version the project is pinned to, for example 2026-03-01. |
created_at | string (ISO 8601) | Timestamp of project creation, in UTC. |
#Retrieve the current project
GET /v2/project
Returns the project that owns the API key used for the request, including its plan, limits, and usage for the current billing period. It is a cheap way to confirm which project and environment a key belongs to. No parameters are required.
curl https://api.tendcomputer.com/v2/project \
-H "Authorization: Bearer tnd_live_8fQ2xLm9Zc41"{
"id": "prj_01HYQ3T9D5",
"name": "Example Shop Backend",
"plan": "pro",
"default_region": "us-east",
"limits": {
"requests_per_minute": 600,
"concurrency": 50,
"schedules": 250
},
"usage": {
"runs_this_period": 184209,
"runs_included": 500000
},
"api_version": "2026-03-01",
"created_at": "2025-02-18T19:12:40Z"
}#Update the current project
PATCH /v2/project
Updates mutable settings of the project that owns the API key. Changing default_region affects only jobs created afterward; queued jobs stay where they are. Hobby projects can only use us-east, and other values return invalid_request.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
name | body | string | no | New display name, up to 80 characters. |
default_region | body | string | no | One of us-east, us-west, eu-central, or ap-southeast. |
curl -X PATCH https://api.tendcomputer.com/v2/project \
-H "Authorization: Bearer tnd_live_8fQ2xLm9Zc41" \
-H "Content-Type: application/json" \
-d '{"default_region":"eu-central"}'{
"id": "prj_01HYQ3T9D5",
"name": "Example Shop Backend",
"plan": "pro",
"default_region": "eu-central",
"limits": {
"requests_per_minute": 600,
"concurrency": 50,
"schedules": 250
},
"usage": {
"runs_this_period": 184209,
"runs_included": 500000
},
"api_version": "2026-03-01",
"created_at": "2025-02-18T19:12:40Z"
}#Retrieve usage for a period
GET /v2/project/usage
Returns run counts for the project, broken down by day, so you can watch consumption against your monthly quota. Hobby projects stop at 10,000 runs and receive quota_exceeded beyond that, while paid plans continue and are billed for overage. Omit period to get the current billing period.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
period | query | string | no | Billing period in YYYY-MM format. Defaults to the current period. |
region | query | string | no | Restrict the breakdown to a single region. |
curl "https://api.tendcomputer.com/v2/project/usage?period=2026-04" \
-H "Authorization: Bearer tnd_live_8fQ2xLm9Zc41"{
"period": "2026-04",
"runs_total": 371844,
"runs_included": 500000,
"overage_runs": 0,
"by_day": [
{ "date": "2026-04-01", "runs": 11902 },
{ "date": "2026-04-02", "runs": 12377 },
{ "date": "2026-04-03", "runs": 12140 }
]
}