Provisions an empty bare repository in the caller's scope and returns it with…
Provisions an empty bare repository in the caller's scope and returns it with its clone URLs. Answers 201.
POST /v1/git/repos
| Address | https://api.hanzo.ai/v1/git/repos |
| Method | POST |
| Operation | post_git_repos |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Provisions an empty bare repository in the caller's scope and returns it with its clone URLs. Answers 201. The name must be unique within the scope — a repeat is a 409, never a silent overwrite of an existing repo. The org comes from the validated principal, so a repo is always born owned by the caller's own tenant.
Request
4 fields, body application/json (required).
| Field | In | Type | Required | Description |
|---|---|---|---|---|
description | body | string | — | Description is a free-form blurb, max 4KiB. |
name | body | string | — | Name is the repo's handle, unique within the scope, and the last segment of both clone URLs. |
project | body | string | — | Project narrows the repo to a sub-scope of the org. |
public | body | boolean | — | Public grants ANONYMOUS read (fetch) only; push and the whole control plane stay org-authed. |
Response
| Status | Body | Meaning |
|---|---|---|
201 | repoView | created |
201 body — 14 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
branches | body | string[] | — | Branches are the repo's branch names. |
cloneUrl | body | string | — | CloneURL is the HTTPS smart-HTTP remote git clone takes. |
createdAt | body | string | — | CreatedAt is RFC 3339 UTC. |
defaultBranch | body | string | — | DefaultBranch is where HEAD points on a fresh repo ("main"). |
description | body | string | — | Description is the caller-supplied blurb (max 4KiB). |
head | body | string | — | Head is the resolved HEAD commit, empty on an empty repo. |
id | body | string | — | ID is the repo's stable, prefixed identifier ("repo_" + 128 random bits). |
name | body | string | — | Name is the org-unique handle, and the last path segment of both URLs below. |
org | body | string | — | Org owns the repo — the gateway-minted X-Org-Id, and the isolation key. |
project | body | string | — | Project is the optional sub-scope the repo lives in; absent for the org's default scope. |
public | body | boolean | — | Public grants ANONYMOUS read (fetch) only; push and the whole control plane stay org-authed. |
sizeBytes | body | integer | — | SizeBytes is the repo's measured on-disk size, re-measured on create, after each push, and after a gc. |
sshUrl | body | string | — | SSHURL is the scp-style SSH remote (git@host:org/repo.git). |
updatedAt | body | string | — | UpdatedAt is RFC 3339 UTC, empty until the first write. |
Failure carries the platform error shape — see Errors.
Examples
hanzo git repos createimport { Configuration, GitApi } from 'hanzoai';
const api = new GitApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postGitRepos({ description: "<description>", name: "<name>" });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import GitApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = GitApi(client).post_git_repos(description="<description>", name="<name>")cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.GitAPI.PostGitRepos(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, git_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = git_api::post_git_repos(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.GitApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new GitApi(client).postGitRepos();curl -X POST https://api.hanzo.ai/v1/git/repos \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"description": "<description>",
"name": "<name>"
}'The door reaches git through the git tool, which names its 56 operations with its own verbs — this one among them, under a name only the door declares. describe explains any of them:
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": "get_git"
}
}
}'How is this guide?