---
title: "create_space"
description: "Generated reference for the management action create_space: its description, access metadata, payload contract, and registration status."
slug: /reference/actions/create-space
order: 73
visibility: public
redirects_from: ["/reference/actions/create-issue-space"]
---

# create\_space

Generated automatically from the [published contract sources](/cloud/reference/about/#contract-sources).

A script calls this action over HTTPS at `POST https://turnzero.ai/api/v1/actions/create_space`, with a bearer credential and the action's payload as the JSON body. An MCP connection lists this action as the tool `tztrack_create_space`.

**Build metadata:** Registered in this build. Registration describes the default dispatcher in this build. It does not guarantee that a caller has the required credential or grant, that a tool is listed for that connection, or that the required service is configured.

## Contract description

Create an issue space your account owns, for a repository's issue list or a program's checks\. Pass your own `space` UUID to make a repeat safe, and a `name` of up to 100 characters, which it requires, to tell it apart in the listing; `rename_space` changes the name later\. Pass the new space's id to a `tztrack_` tool to use it at once; from a script, use a token with the `issues` grant\. Your account needs tzTrack, which every account has\.

## Access and action metadata

```json
{
  "name": "create_space",
  "resource": "account",
  "tier": "reversible",
  "surface": "tztrack",
  "product": "tztrack",
  "admits": [
    "tztrack",
    "device_sign_in"
  ],
  "summary": "Create an issue space the account holds at the issue service, the space a repository's issue list or a program's checks live in: the optional `space` is a lower-case UUID you choose, so a repeat whose answer was lost converges on the same space, and absent, the platform chooses one. The required `name`, 1 to 100 printable characters and refused `invalid_request` when absent or outside that, is the space's display name, written only when the call first records the space for the account: a repeat finding the space recorded keeps the name it has, and a retry after a lost answer still writes it. The space's own token stays in the platform's vault; a program reaches the space through `relay_issue_act` under a token minted with the `issues` grant for it. The answer carries the space's identifier, whether this call created it, and the space's display name, null where it has none. The account must hold tzTrack, refused `blueprint_required` ahead of the request's form and the bounds where it does not. Bounded per account per minute, refused `feedback_rate_limited`; `issue_service_unreachable` where the service or the platform's provisioning credential could not be reached. Registered while the issue service's origin is configured.",
  "annotations": {
    "readOnlyHint": false,
    "destructiveHint": false,
    "openWorldHint": false,
    "idempotentHint": true
  }
}
```

## MCP catalog entry

```json
{
  "name": "create_space",
  "title": "Create issue space",
  "tier": "reversible",
  "scenario": "API-L0-20",
  "summary": "Create an issue space your account owns, for a repository's issue list or a program's checks. Pass your own `space` UUID to make a repeat safe, and a `name` of up to 100 characters, which it requires, to tell it apart in the listing; `rename_space` changes the name later. Pass the new space's id to a `tztrack_` tool to use it at once; from a script, use a token with the `issues` grant. Your account needs tzTrack, which every account has.",
  "owners": [
    "MAPI-14"
  ]
}
```

## request

| JSON pointer | Description and constraints |
|---|---|
| "" \(root\) | Type: object<br>Required fields: \["name"\] |
| /<wbr>properties/<wbr>space | Optional: the identifier you choose, a lower\-case UUID, so a repeat converges on the same space\.<br><br>Type: string<br>Pattern: ^\[0\-9a\-f\]\{8\}\-\[0\-9a\-f\]\{4\}\-\[0\-9a\-f\]\{4\}\-\[0\-9a\-f\]\{4\}\-\[0\-9a\-f\]\{12\}$ |
| /<wbr>properties/<wbr>name | Required: the space's display name, 1 to 100 printable characters, which the space listing shows\. It is written only when the call first records the space for your account, a retry after a lost answer included; a repeat that finds it recorded keeps its name\. `rename_space` changes it\.<br><br>Type: string<br>Minimum length: 1<br>Maximum length: 100 |

## response

| JSON pointer | Description and constraints |
|---|---|
| "" \(root\) | Type: object<br>Required fields: \["contract\_version","space"\] |
| /<wbr>properties/<wbr>contract\_version | Required value: 1 |
| /<wbr>properties/<wbr>reference | The short reference the platform recorded your call under: ten lowercase hexadecimal characters, the value in the call's record row\. Quote it when you report the call\.<br><br>Type: string<br>Pattern: ^\[0\-9a\-f\]\{10\}$ |
| /<wbr>properties/<wbr>space | Type: object<br>Required fields: \["id","kind","created","name"\] |
| /<wbr>properties/<wbr>space/<wbr>properties/<wbr>id | Type: string |
| /<wbr>properties/<wbr>space/<wbr>properties/<wbr>kind | Type: string<br>Allowed values: \["account"\] |
| /<wbr>properties/<wbr>space/<wbr>properties/<wbr>created | True where this call created the space; false where it already existed\.<br><br>Type: boolean |
| /<wbr>properties/<wbr>space/<wbr>properties/<wbr>name | The space's display name, null where it has none: the name written when the space was first recorded for the account\. A repeat returns it unchanged\.<br><br>Type: \["string","null"\] |

## Complete payload contract

```json
{
  "request": {
    "type": "object",
    "properties": {
      "space": {
        "type": "string",
        "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
        "description": "Optional: the identifier you choose, a lower-case UUID, so a repeat converges on the same space."
      },
      "name": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100,
        "description": "Required: the space's display name, 1 to 100 printable characters, which the space listing shows. It is written only when the call first records the space for your account, a retry after a lost answer included; a repeat that finds it recorded keeps its name. `rename_space` changes it."
      }
    },
    "required": [
      "name"
    ]
  },
  "response": {
    "type": "object",
    "required": [
      "contract_version",
      "space"
    ],
    "properties": {
      "contract_version": {
        "const": 1
      },
      "reference": {
        "type": "string",
        "pattern": "^[0-9a-f]{10}$",
        "description": "The short reference the platform recorded your call under: ten lowercase hexadecimal characters, the value in the call's record row. Quote it when you report the call."
      },
      "space": {
        "type": "object",
        "required": [
          "id",
          "kind",
          "created",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "account"
            ]
          },
          "created": {
            "type": "boolean",
            "description": "True where this call created the space; false where it already existed."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The space's display name, null where it has none: the name written when the space was first recorded for the account. A repeat returns it unchanged."
          }
        }
      }
    }
  }
}
```

## Shared contracts

- [Refusals](/cloud/reference/refusals/): every refusal, by surface, with its cause and its remedy
- [schemas/wire\_error\.schema\.json](/cloud/reference/sources/schemas/wire-error-schema/)
- [schemas/wire\_errors\.json](/cloud/reference/sources/schemas/wire-errors/)
- [schemas/action\_payloads\.json](/cloud/reference/sources/schemas/action-payloads/) (includes shared shapes)
- [management\_api\_contract\.md](/cloud/reference/sources/management-api-contract/)
