# Get workspace **GET /api/v1/projects/{id}/workspaces/{workspace_id}** Retrieves a single workspace by its ID. The project scope is carried by the route id path parameter. ## Servers - https://agentengine.mongodb.com: https://agentengine.mongodb.com () ## Authentication methods - Bearer auth ## Parameters ### Path parameters - **id** (string) Project ID - **workspace_id** (string) Workspace ID ## Responses ### 406 Unsupported or malformed API version, an operation unavailable in the selected published contract, or an unacceptable representation (including unsupported media-type parameters or excluded SSE). Existing authentication, authorization, and rate-limit failures take precedence. #### Body: application/json (object) - **badRequestDetail** (object) Optional validation details defined by the standard error schema; API negotiation errors do not emit this field. - **detail** (string) Human-readable error details. - **error** (integer) HTTP status code. - **errorCode** (string) Machine-readable error code. - **parameters** (array[string]) Request parameter names associated with the error; omitted when none apply. - **reason** (string) HTTP status reason phrase. ### 200 OK #### Body: application/json (object) - **aer_http_endpoint** (string) AERHTTPEndpoint is the legacy name of the agent sandbox HTTP endpoint. - **agent_card** (object) - **agent_grpc_endpoint** (string) - **agent_http_endpoint** (string) AgentHTTPEndpoint is the agent sandbox HTTP endpoint. Same value as aer_http_endpoint. - **auto_deploy** (boolean) AutoDeploy is the ECP-owned per-app auto-deploy toggle. ECP-owned, fetched on each detail GET (not persisted in the gateway DB). Absent when ECP has no value or is unreachable; the UI treats absent as off. - **completion_rate** (number) - **created_date** (string) - **current_deployment_id** (string) - **current_payload_ref** (string) - **description** (string) - **features** (object) - **framework** (string) - **github_installation_id** (integer) GithubInstallationID is the GitHub App installation that owns the repo. ECP-owned, fetched on each detail GET (not persisted in the gateway DB), so it works for workspaces created before this field existed. The UI needs it to list the repo's branches when editing the tracked branch. - **gitops** (object) - **id** (string) - **instances** (object) Instances reports the workspace's instance counts (active, standby, and starting), fetched read-time from the workspace's OE cell. Absent when OE is unreachable or the workspace does not run pooled (e.g. container mode). Deliberately free of any internal implementation naming: this is a customer-facing field. - **invocations** (integer) Execution metrics over a rolling 24h window. All five fields are pointers so the wire can distinguish two cases the UI needs to render differently: (a) the OE metrics fetch failed (soft-fail — all five fields absent), or (b) the window contains zero invocations / no completed executions (Invocations is set to 0 and the latency/rate fields are absent). UI distinguishes "—" from "0 invocations" via Invocations != nil. - **language** (string) - **last_invoked_at** (string(date-time)) - **metrics_computed_at** (string(date-time)) - **metrics_window_start** (string(date-time)) - **name** (string) - **org_id** (string) - **p95_latency_ms** (number) - **project_id** (string) - **release_mode** (string) ReleaseMode is the ECP-owned webhook release policy ("push" | "tag-release" | "api-only"). Fetched on each detail GET; absent when ECP has no value or is unreachable. - **status** (string) Status is the ECP-owned active/paused signal. The gateway fetches it from ECP on each detail GET — it is not persisted locally. Absent when ECP is unreachable; UI treats absent as not-paused. - **subdirectory** (string) - **updated_date** (string) - **workspace_id** (string) - **workspace_name** (string) ### 400 Bad Request #### Body: application/json (object) - **code** (string) - **error** (string) - **success** (boolean) ### 404 Not Found #### Body: application/json (object) - **code** (string) - **error** (string) - **success** (boolean) ### 500 Internal Server Error #### Body: application/json (object) - **code** (string) - **error** (string) - **success** (boolean) [Powered by Bump.sh](https://bump.sh)