# Create docs

URL: https://docs.hanzo.ai/docs/openapi/team/post-team-docs

> Creates a document, as the caller, after its siblings.

`POST /v1/team/docs`

> [Team →](https://docs.hanzo.ai/docs/openapi/team) · [All API references →](https://docs.hanzo.ai/docs/openapi) · [Get started →](https://docs.hanzo.ai/docs/guides)

|               |                                        |
| ------------- | -------------------------------------- |
| **Address**   | `https://api.hanzo.ai/v1/team/docs`    |
| **Method**    | `POST`                                 |
| **Operation** | `post_team_docs`                       |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY` |

Creates a document, as the caller, after its siblings.

It is created through the Team client's own write path, so it appears in an
open Documents sidebar live, and its author is subscribed to it: a comment on
it lands in their inbox. Its body starts empty — open the returned
`collaborator` id on the /v1/team/collaborator socket to write it.

A space whose caller can write no teamspace at all gets one on its first
document: a public "General" teamspace every current member of the space is
in, which is what the Team client would otherwise make somebody create by hand
before the first page. Guests and agents are not made members of it.

## Request

4 fields, body `application/json` (required).

| Field       | In   | Type   | Required | Description                                      |
| ----------- | ---- | ------ | -------- | ------------------------------------------------ |
| `parent`    | body | string | —        | Parent nests the new document under another one. |
| `space`     | body | string | —        | Space is the space uuid.                         |
| `teamspace` | body | string | —        | Teamspace is where the document goes.            |
| `title`     | body | string | —        | Title is the document's title.                   |

## Response

| Status    | Body            | Meaning |
| --------- | --------------- | ------- |
| `201`     | team.teamDoc    | created |
| `default` | problem-details | refused |

`201` body — 11 fields.

| Field          | In   | Type            | Always | Description                                                                                                                                         |
| -------------- | ---- | --------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `author`       | body | string          | —      | Author is the account uuid that created it.                                                                                                         |
| `collaborator` | body | string          | —      | Collaborator is the documentId to open the body with on the /v1/team/collaborator Y.js socket: "\<space>\|document:class:Document\|\<id>\|content". |
| `comments`     | body | integer (int64) | —      | Comments is how many comments it has.                                                                                                               |
| `createdOn`    | body | integer (int64) | —      | CreatedOn is when it was created, unix milliseconds.                                                                                                |
| `id`           | body | string          | —      | ID is the document's own id.                                                                                                                        |
| `modifiedOn`   | body | integer (int64) | —      | ModifiedOn is when its title or place last changed, unix milliseconds.                                                                              |
| `parent`       | body | string          | —      | Parent is the document this one is nested under.                                                                                                    |
| `rank`         | body | string          | —      | Rank orders siblings: compare as plain strings, ascending.                                                                                          |
| `space`        | body | string          | —      | Space is the space uuid holding it.                                                                                                                 |
| `teamspace`    | body | string          | —      | Teamspace is the teamspace it belongs to.                                                                                                           |
| `title`        | body | string          | —      | Title is the document's title.                                                                                                                      |

Failure carries the platform error shape — see [Errors](https://docs.hanzo.ai/docs/errors).

## Examples

**CLI**

`hanzo` has no subcommand for this operation — the CLI serves only what cloud's live route table confirms. Use HTTP or an SDK.

**SDK**

**.ts**

```ts
import { Configuration, TeamApi } from 'hanzoai';

const api = new TeamApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postTeamDocs({ parent: "<parent>", space: "<space>" });
```

**.py**

```python
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import TeamApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = TeamApi(client).post_team_docs(parent="<parent>", space="<space>")
```

**.go**

```go
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.TeamAPI.PostTeamDocs(context.Background()).Execute()
if err != nil {
	return err
}
```

**.rs**

```rust
use hanzo_client::apis::{configuration::Configuration, team_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = team_api::post_team_docs(&cfg, Default::default()).await?;
```

**.java**

```java
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.TeamApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new TeamApi(client).postTeamDocs();
```

**HTTP**

```bash
curl -X POST https://api.hanzo.ai/v1/team/docs \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "parent": "<parent>",
       "space": "<space>"
     }'
```

**MCP**

MCP reaches **team** through the `team` tool, which names its 33 operations with its own verbs — this one among them, under a name only MCP declares. `describe` explains any of them:

```bash
curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_team_account_providers"
         }
       }
     }'
```

---

[Team API](https://docs.hanzo.ai/docs/openapi/team) · [All Hanzo APIs](https://docs.hanzo.ai/docs/openapi) · [Interactive reference](https://docs.hanzo.ai/docs/openapi/reference)
