Create pulls

Proposes a branch for merging and returns it with its number.

POST /v1/git/repos/{name}/pulls

Addresshttps://api.hanzo.ai/v1/git/repos/{name}/pulls
MethodPOST
Operationpost_git_repos_by_name_pulls
AuthAuthorization: Bearer $HANZO_API_KEY

Proposes a branch for merging and returns it with its number. Answers 201. Both branches must already exist — a proposal naming a branch nobody pushed is a typo, not a plan — and base defaults to the repo's default branch.

Proposing the same head into the same base twice is a 409 while the first proposal is still open, so a retried agent run leaves ONE thing to review rather than a pile of identical ones. A repo outside the caller's scope is a 404, exactly as reading it is.

Request

6 fields, body application/json (required).

FieldInTypeRequiredDescription
namepathstringyesName is the repo the proposal belongs to, from the :name path segment.
basebodystring—Base is the branch the work is proposed INTO, by short name.
bodybodystring—Body is the longer description.
headbodystring—Head is the branch holding the work, by short name (agent/fix-503).
namebodystring—Name is the repo the proposal belongs to, from the :name path segment.
titlebodystring—Title is the one-line summary of what is being proposed.

Response

StatusBodyMeaning
201git.pullViewcreated
defaultproblem-detailsrefused

201 body — 11 fields.

FieldInTypeAlwaysDescription
authorbodystring—Author is the user who opened it; empty for a caller with no user.
basebodystring—Base is the branch the work is proposed into.
bodybodystring—Body is the longer description; empty when none was given.
createdAtbodystring—CreatedAt is RFC 3339 UTC.
headbodystring—Head is the branch holding the work.
mergedRevbodystring—MergedRev is what base points at now that the merge landed.
numberbodyinteger (int64)—Number is the proposal's per-repo handle, dense from 1.
repobodystring—Repo is the repository the proposal belongs to.
statebodystring—State is "open" or "merged".
titlebodystring—Title is the one-line summary.
updatedAtbodystring—UpdatedAt is RFC 3339 UTC.

Failure carries the platform error shape — see Errors.

Examples

hanzo git repos pulls create <name>
import { Configuration, GitApi } from 'hanzoai';

const api = new GitApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postGitReposByNamePulls({ name: 'name', base: "<base>", body: "<body>" });
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_by_name_pulls(name='name', base="<base>", body="<body>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.GitAPI.PostGitReposByNamePulls(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::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_by_name_pulls(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.GitApi;

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

var result = new GitApi(client).postGitReposByNamePulls();
curl -X POST https://api.hanzo.ai/v1/git/repos/<name>/pulls \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "base": "<base>",
       "body": "<body>"
     }'

MCP reaches git through the git tool, which names its 38 operations with its own verbs — this one among them, under a name only MCP 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": "list_git_keys"
         }
       }
     }'

Git API · All Hanzo APIs · Interactive reference

Was this page useful?