Get Project

Beta

Fetch one project by id, scoped to the caller’s workspace. Returns 404 for missing or foreign-workspace projects — project existence is never leaked across workspaces.

Authentication

AuthorizationBearer

Enter your API key with the Bearer prefix, e.g. ‘Bearer sk_…’.

Path parameters

project_idstringRequired

Project id (prefixed external id, proj_...).

Headers

Speechify-VersionstringOptional

Response headers

Speechify-Request-IdstringOptional
Unique identifier for this request, present on every response (2xx and non-2xx alike). If the caller sends a `Speechify-Request-Id` request header the server echoes it back (sanitized and length-capped) so one logical request can be traced end-to-end; otherwise the server generates a fresh value. Log it on every response and quote it in support requests - it is the stable handle that ties your observation to Speechify's server-side logs, and it matches the `request_id` field in the error envelope. The legacy alias `X-Request-ID` carries the same value and is still accepted on requests, until 2027-07-24. Prefer the un-prefixed name (RFC 6648).

Response

The project.
idstringformat: "^proj_[0-9a-hjkmnp-tv-z]{26}$"

Workspace-scoped project identifier (prefixed external id).

namestring

Human-readable label, unique per workspace (case-insensitive).

created_atdatetime
updated_atdatetime
archived_atdatetime or nullOptional

When the project was archived; null while it is live. While set, nothing new starts or bills inside the project and every such attempt answers 409 project_archived.

Absent rather than null while a console runs ahead of an API that predates archiving, which is why it is not required: read absent and null alike.

max_concurrent_callsintegerOptional>=1

The most voice-agent calls this project may have active at once, present only when set. Checked after the workspace’s own active-call cap on every call start (web session, outbound call, batch dial, inbound SIP), keyed on the project the call’s agent lives in: a call over the ceiling is refused with the same 429 concurrency_limit_reached the workspace cap answers (an inbound caller hears the busy message), while sibling projects keep their headroom. Never higher than the workspace’s cap: a project can narrow the workspace’s capacity, not raise it.

max_requests_per_minuteintegerOptional>=1

The most API requests per minute credentials pinned to this project may make across every surface, present only when set. Checked after the workspace’s own request-rate limit, in one bucket per project: a request over the ceiling is refused with the same 429 rate_limited the workspace limit answers, while other projects and unpinned credentials are untouched. Never higher than the workspace’s widest per-surface rate over a minute: a project can narrow the workspace’s capacity, not raise it. Console sessions and unpinned keys carry no project and are never subject to it.

monthly_budgetdoubleOptional<=1000000000

The project’s monthly spend limit in US dollars, present only when one is set. New billable work attributed to this project is refused with the coded 402 project_spend_limit_exceeded once monthly_spend reaches it; the limit resets at the calendar-month boundary (UTC).

Spend is attributed the same way it is billed: work from a project-pinned API key counts against that key’s project, and a voice-agent conversation counts against its agent’s project. The implicit Default project cannot carry a limit — it has no project record — so spend there is bounded by the workspace’s monthly_budget instead.

monthly_spenddoubleOptional>=0

The project’s billed month-to-date spend in US dollars, present whenever the billing plane answered - regardless of whether a spend limit is set.

Errors

401
Unauthorized Error
404
Not Found Error