> 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.

# Projects

> Create and manage subprojects and rotate a project's signing key.

[restclient]: /docs/server-sdks/reference/python/rest/client

[project-tokens]: /docs/server-sdks/reference/python/rest/project

[paginate]: /docs/server-sdks/reference/python/rest/paginate

List the authenticated root project and its subprojects, create and update
subprojects, and rotate a project's signing key. Every call operates only within
the caller's project tree. For API tokens on the current project, use
[`client.project.tokens`][project-tokens].

Access via `client.projects` on a [`RestClient`][restclient] instance.

```python {9}
from signalwire.rest import RestClient

client = RestClient(
    project="your-project-id",
    token="your-api-token",
    host="your-space.signalwire.com",
)

sub = client.projects.create(name="Bayview Taxi - staging")
print(sub["id"], sub["subproject"])
```

## Methods

#### [list](/docs/server-sdks/reference/python/rest/projects/list)

List the root project and its subprojects.

#### [get](/docs/server-sdks/reference/python/rest/projects/get)

Retrieve one project by ID.

#### [create](/docs/server-sdks/reference/python/rest/projects/create)

Create a subproject.

#### [update](/docs/server-sdks/reference/python/rest/projects/update)

Update a project's name or media protection settings.

#### [delete](/docs/server-sdks/reference/python/rest/projects/delete)

Delete a subproject.

#### [rotate\_signing\_key](/docs/server-sdks/reference/python/rest/projects/rotate-signing-key)

Issue a new signing key for a project.

`client.projects` also exposes [`paginate()`][paginate] to iterate across all
pages.