> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # get > Retrieve a project by ID. Retrieve a project by ID. ### Schema ```yaml openapi: 3.1.0 info: title: API version: 1.0.0 paths: /api/projects/{id}: get: operationId: subpackageProjects_get_project summary: Retrieve a project description: >- Retrieves a single project or subproject. A project ID the caller cannot reach returns `404 Not Found`. Use this operation when you already have the root-project or subproject ID; use [List projects](/docs/apis/rest/projects/list-projects) to discover IDs. Compatibility API Accounts use a separate SID-based retrieval route. #### Permissions With a project API token, the token must have the following scope(s) enabled to make a successful request: _Management_. With a [Personal access token](/docs/apis/authorization#personal-access-tokens) there are no scopes. The token holder must be an owner or admin of the space, and the request reaches only the projects the holder is enabled for, plus their subprojects. [Learn more about API scopes](/docs/platform/your-signalwire-api-space). tags: - subpackage_projects parameters: - name: id in: path description: The unique identifier of the project or subproject. required: true schema: $ref: '#/components/schemas/uuid' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Projects.Project' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Types.StatusCodes.StatusCode401' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Types.StatusCodes.StatusCode404' '500': description: An internal server error occurred. content: application/json: schema: $ref: '#/components/schemas/Types.StatusCodes.StatusCode500' tags: - name: subpackage_projects servers: - url: https://%7BYour_Space_Name%7D.signalwire.com description: SignalWire API components: schemas: uuid: type: string format: uuid description: Universal Unique Identifier. title: uuid Projects.Project: type: object properties: id: $ref: '#/components/schemas/uuid' description: The unique identifier of the project. name: type: string description: The name of the project. parent_project_id: oneOf: - $ref: '#/components/schemas/uuid' - type: 'null' description: >- The unique identifier of the root project. `null` when this project is itself a root project. subproject: type: boolean description: '`true` when this project is a subproject.' region_preference: type: string description: >- The effective region preference for the project. Returned in all responses; it is not currently settable through this API. protect_recordings: type: boolean description: >- When enabled, recordings created within the project require authentication to access. protect_message_media: type: boolean description: >- When enabled, message media created within the project requires authentication to access. protect_fax_media: type: boolean description: >- When enabled, fax media created within the project requires authentication to access. force_https_requests: type: boolean description: >- When enabled, requests made to the project's webhooks and callbacks must use HTTPS. created_at: type: string format: date-time description: The date and time when the project was created. updated_at: type: string format: date-time description: The date and time when the project was last updated. required: - id - name - parent_project_id - subproject - region_preference - protect_recordings - protect_message_media - protect_fax_media - force_https_requests - created_at - updated_at description: A project or subproject within the caller's project tree. title: Projects.Project TypesStatusCodesStatusCode401Error: type: string enum: - Unauthorized title: TypesStatusCodesStatusCode401Error Types.StatusCodes.StatusCode401: type: object properties: error: $ref: '#/components/schemas/TypesStatusCodesStatusCode401Error' required: - error description: Access is unauthorized. title: Types.StatusCodes.StatusCode401 TypesStatusCodesStatusCode404Error: type: string enum: - Not Found title: TypesStatusCodesStatusCode404Error Types.StatusCodes.StatusCode404: type: object properties: error: $ref: '#/components/schemas/TypesStatusCodesStatusCode404Error' required: - error description: The server cannot find the requested resource. title: Types.StatusCodes.StatusCode404 TypesStatusCodesStatusCode500Error: type: string enum: - Internal Server Error title: TypesStatusCodesStatusCode500Error Types.StatusCodes.StatusCode500: type: object properties: error: $ref: '#/components/schemas/TypesStatusCodesStatusCode500Error' required: - error description: An internal server error occurred. title: Types.StatusCodes.StatusCode500 ``` ## **Response Example** ### Response (200) ```json { "id": "8f14e45f-ceea-467d-9c2b-7a1d3a9b2c34", "name": "Acme Staging", "parent_project_id": "b3877739-5c7e-4d4f-9d1a-2f0c8c2f1a11", "subproject": true, "region_preference": "us-west", "protect_recordings": false, "protect_message_media": false, "protect_fax_media": false, "force_https_requests": true, "created_at": "2024-05-06T12:20:00Z", "updated_at": "2024-05-06T12:20:00Z" } ``` ## **Example** ```typescript {9} import { RestClient } from "@signalwire/sdk"; const client = new RestClient({ project: "your-project-id", token: "your-api-token", host: "your-space.signalwire.com" }); const project = await client.projects.get("project-id"); console.log(project.name, project.region_preference); ``` > Retrieve a project by ID.