Python (SDK)
from meetkai_mka1 import SDK
with SDK(
bearer_auth="<YOUR_BEARER_TOKEN_HERE>",
) as sdk:
res = sdk.sandbox.github.create_or_update_pull_request(session_id="<id>", branch="<value>", title="<value>", body="", draft=False, checkout_path="")
# Handle response
print(res)import { SDK } from "@meetkai/mka1";
const sdk = new SDK({
bearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await sdk.sandbox.github.createOrUpdatePullRequest({
sessionId: "<id>",
gitHubPullRequestRequest: {
branch: "<value>",
title: "<value>",
},
});
console.log(result);
}
run();using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;
var sdk = new SDK(bearerAuth: "<YOUR_BEARER_TOKEN_HERE>");
var res = await sdk.Sandbox.Github.CreateOrUpdatePullRequestAsync(
sessionId: "<id>",
body: new GitHubPullRequestRequest() {
Branch = "<value>",
Title = "<value>",
}
);
// handle responsecurl --request POST \
--url https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"branch": "<string>",
"title": "<string>",
"body": "",
"base": "<string>",
"draft": false,
"checkout_path": ""
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
branch: '<string>',
title: '<string>',
body: JSON.stringify(''),
base: '<string>',
draft: false,
checkout_path: ''
})
};
fetch('https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'branch' => '<string>',
'title' => '<string>',
'body' => '',
'base' => '<string>',
'draft' => false,
'checkout_path' => ''
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request"
payload := strings.NewReader("{\n \"branch\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"\",\n \"base\": \"<string>\",\n \"draft\": false,\n \"checkout_path\": \"\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"branch\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"\",\n \"base\": \"<string>\",\n \"draft\": false,\n \"checkout_path\": \"\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"branch\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"\",\n \"base\": \"<string>\",\n \"draft\": false,\n \"checkout_path\": \"\"\n}"
response = http.request(request)
puts response.read_body{
"session_id": "<string>",
"repository_id": 123,
"owner": "<string>",
"repository": "<string>",
"number": 123,
"url": "<string>",
"state": "<string>",
"draft": true,
"head_branch": "<string>",
"base_branch": "<string>",
"created": true
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Sandbox GitHub
Create or Update Pull Request
Open a pull request from branch in the session’s repository, or update the one already recorded for that branch, reopening it if it was closed. The base defaults to the repository’s default branch. A merged pull request is never reopened; a later call for the same branch opens a new one. The session does not need to be running.
POST
/
api
/
v1
/
sandbox
/
sessions
/
{session_id}
/
github
/
pull-request
Python (SDK)
from meetkai_mka1 import SDK
with SDK(
bearer_auth="<YOUR_BEARER_TOKEN_HERE>",
) as sdk:
res = sdk.sandbox.github.create_or_update_pull_request(session_id="<id>", branch="<value>", title="<value>", body="", draft=False, checkout_path="")
# Handle response
print(res)import { SDK } from "@meetkai/mka1";
const sdk = new SDK({
bearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await sdk.sandbox.github.createOrUpdatePullRequest({
sessionId: "<id>",
gitHubPullRequestRequest: {
branch: "<value>",
title: "<value>",
},
});
console.log(result);
}
run();using MeetKai.MKA1;
using MeetKai.MKA1.Types.Components;
var sdk = new SDK(bearerAuth: "<YOUR_BEARER_TOKEN_HERE>");
var res = await sdk.Sandbox.Github.CreateOrUpdatePullRequestAsync(
sessionId: "<id>",
body: new GitHubPullRequestRequest() {
Branch = "<value>",
Title = "<value>",
}
);
// handle responsecurl --request POST \
--url https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"branch": "<string>",
"title": "<string>",
"body": "",
"base": "<string>",
"draft": false,
"checkout_path": ""
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
branch: '<string>',
title: '<string>',
body: JSON.stringify(''),
base: '<string>',
draft: false,
checkout_path: ''
})
};
fetch('https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'branch' => '<string>',
'title' => '<string>',
'body' => '',
'base' => '<string>',
'draft' => false,
'checkout_path' => ''
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request"
payload := strings.NewReader("{\n \"branch\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"\",\n \"base\": \"<string>\",\n \"draft\": false,\n \"checkout_path\": \"\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"branch\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"\",\n \"base\": \"<string>\",\n \"draft\": false,\n \"checkout_path\": \"\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apigw.mka1.com/api/v1/sandbox/sessions/{session_id}/github/pull-request")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"branch\": \"<string>\",\n \"title\": \"<string>\",\n \"body\": \"\",\n \"base\": \"<string>\",\n \"draft\": false,\n \"checkout_path\": \"\"\n}"
response = http.request(request)
puts response.read_body{
"session_id": "<string>",
"repository_id": 123,
"owner": "<string>",
"repository": "<string>",
"number": 123,
"url": "<string>",
"state": "<string>",
"draft": true,
"head_branch": "<string>",
"base_branch": "<string>",
"created": true
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Gateway auth: send Authorization: Bearer <mka1-api-key>. For multi-user server-side integrations, you can also send X-On-Behalf-Of: <external-user-id>.
Headers
Optional external end-user identifier forwarded by the API gateway.
Path Parameters
Body
application/json
Public operation request.
It deliberately has no repository field: the repository is the session's clone binding. The head branch is the caller's — the branch the agent pushed.
Was this page helpful?
⌘I