curl --request POST \
--url https://api.murmur.dev/v1/agent/spawn \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"agentId": {
"tenant": {
"provider": "PROVIDER_UNSPECIFIED",
"org": "<string>"
},
"ownerProvider": "PROVIDER_UNSPECIFIED",
"account": "<string>",
"agent": [
"<string>"
],
"workspace": "<string>"
},
"description": "<string>",
"serviceProfile": "<string>",
"gitName": "<string>",
"gitEmail": "<string>",
"sshPublicKeys": [
"<string>"
],
"plaintextSecrets": {},
"idleTimeout": "<string>",
"model": "<string>",
"fastMode": true,
"codingAgent": "<string>",
"backend": "<string>",
"skipChecks": [
"<string>"
],
"suggestTerminateMode": "SUGGEST_TERMINATE_MODE_UNSPECIFIED",
"resurrect": true,
"appendSystemPrompt": "<string>",
"forkFrom": "<string>",
"forceNew": true,
"tasks": [
{
"id": "<string>",
"subject": "<string>",
"description": "<string>",
"status": "TASK_STATUS_UNSPECIFIED",
"blocks": [
"<string>"
],
"blockedBy": [
"<string>"
],
"activation": {
"filesModified": {
"pattern": "<string>"
}
},
"persona": "<string>",
"dedupKey": "<string>",
"ephemeral": true
}
],
"expectedOutput": "<string>",
"parentAgentId": {
"tenant": {
"provider": "PROVIDER_UNSPECIFIED",
"org": "<string>"
},
"ownerProvider": "PROVIDER_UNSPECIFIED",
"account": "<string>",
"agent": [
"<string>"
],
"workspace": "<string>"
},
"agentConfig": {
"name": "<string>",
"prompt": "<string>",
"description": "<string>",
"model": "<string>",
"tools": [
"<string>"
],
"disallowedTools": [
"<string>"
],
"maxTurns": 123,
"personaCategory": "<string>"
},
"sessionMode": "SESSION_MODE_UNSPECIFIED",
"completionCheck": "COMPLETION_CHECK_UNSPECIFIED",
"onIdle": "ON_IDLE_UNSPECIFIED",
"dequeueStrategy": "DEQUEUE_STRATEGY_UNSPECIFIED",
"repos": [
{
"cloneUrl": "<string>",
"baseBranch": "<string>",
"branch": "<string>",
"branchCreated": true,
"conflictResolution": "CONFLICT_RESOLUTION_UNSPECIFIED",
"baseCloneUrl": "<string>"
}
],
"branch": "<string>",
"purpose": "<string>",
"reasoningEffort": "<string>",
"reasoningSummary": "<string>",
"verbosity": "<string>",
"serviceTier": "<string>",
"suppressedEventClasses": [
"FOLLOW_UP_EVENT_CLASS_UNSPECIFIED"
],
"tags": [
"<string>"
],
"outputSchema": "<string>",
"lifecycleConsumers": [
{
"eventClasses": [
"SUBSCRIPTION_CLASS_UNSPECIFIED"
],
"webhook": {
"url": "<string>",
"callerContext": "<string>",
"signingKey": "aSDinaTvuI8gbWludGxpZnk=",
"signingKeySha256": "aSDinaTvuI8gbWludGxpZnk="
}
}
],
"imageRef": "<string>",
"disableCurrentBranchForking": true
}
'import requests
url = "https://api.murmur.dev/v1/agent/spawn"
payload = {
"agentId": {
"tenant": {
"provider": "PROVIDER_UNSPECIFIED",
"org": "<string>"
},
"ownerProvider": "PROVIDER_UNSPECIFIED",
"account": "<string>",
"agent": ["<string>"],
"workspace": "<string>"
},
"description": "<string>",
"serviceProfile": "<string>",
"gitName": "<string>",
"gitEmail": "<string>",
"sshPublicKeys": ["<string>"],
"plaintextSecrets": {},
"idleTimeout": "<string>",
"model": "<string>",
"fastMode": True,
"codingAgent": "<string>",
"backend": "<string>",
"skipChecks": ["<string>"],
"suggestTerminateMode": "SUGGEST_TERMINATE_MODE_UNSPECIFIED",
"resurrect": True,
"appendSystemPrompt": "<string>",
"forkFrom": "<string>",
"forceNew": True,
"tasks": [
{
"id": "<string>",
"subject": "<string>",
"description": "<string>",
"status": "TASK_STATUS_UNSPECIFIED",
"blocks": ["<string>"],
"blockedBy": ["<string>"],
"activation": { "filesModified": { "pattern": "<string>" } },
"persona": "<string>",
"dedupKey": "<string>",
"ephemeral": True
}
],
"expectedOutput": "<string>",
"parentAgentId": {
"tenant": {
"provider": "PROVIDER_UNSPECIFIED",
"org": "<string>"
},
"ownerProvider": "PROVIDER_UNSPECIFIED",
"account": "<string>",
"agent": ["<string>"],
"workspace": "<string>"
},
"agentConfig": {
"name": "<string>",
"prompt": "<string>",
"description": "<string>",
"model": "<string>",
"tools": ["<string>"],
"disallowedTools": ["<string>"],
"maxTurns": 123,
"personaCategory": "<string>"
},
"sessionMode": "SESSION_MODE_UNSPECIFIED",
"completionCheck": "COMPLETION_CHECK_UNSPECIFIED",
"onIdle": "ON_IDLE_UNSPECIFIED",
"dequeueStrategy": "DEQUEUE_STRATEGY_UNSPECIFIED",
"repos": [
{
"cloneUrl": "<string>",
"baseBranch": "<string>",
"branch": "<string>",
"branchCreated": True,
"conflictResolution": "CONFLICT_RESOLUTION_UNSPECIFIED",
"baseCloneUrl": "<string>"
}
],
"branch": "<string>",
"purpose": "<string>",
"reasoningEffort": "<string>",
"reasoningSummary": "<string>",
"verbosity": "<string>",
"serviceTier": "<string>",
"suppressedEventClasses": ["FOLLOW_UP_EVENT_CLASS_UNSPECIFIED"],
"tags": ["<string>"],
"outputSchema": "<string>",
"lifecycleConsumers": [
{
"eventClasses": ["SUBSCRIPTION_CLASS_UNSPECIFIED"],
"webhook": {
"url": "<string>",
"callerContext": "<string>",
"signingKey": "aSDinaTvuI8gbWludGxpZnk=",
"signingKeySha256": "aSDinaTvuI8gbWludGxpZnk="
}
}
],
"imageRef": "<string>",
"disableCurrentBranchForking": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agentId: {
tenant: {provider: 'PROVIDER_UNSPECIFIED', org: '<string>'},
ownerProvider: 'PROVIDER_UNSPECIFIED',
account: '<string>',
agent: ['<string>'],
workspace: '<string>'
},
description: '<string>',
serviceProfile: '<string>',
gitName: '<string>',
gitEmail: '<string>',
sshPublicKeys: ['<string>'],
plaintextSecrets: {},
idleTimeout: '<string>',
model: '<string>',
fastMode: true,
codingAgent: '<string>',
backend: '<string>',
skipChecks: ['<string>'],
suggestTerminateMode: 'SUGGEST_TERMINATE_MODE_UNSPECIFIED',
resurrect: true,
appendSystemPrompt: '<string>',
forkFrom: '<string>',
forceNew: true,
tasks: [
{
id: '<string>',
subject: '<string>',
description: '<string>',
status: 'TASK_STATUS_UNSPECIFIED',
blocks: ['<string>'],
blockedBy: ['<string>'],
activation: {filesModified: {pattern: '<string>'}},
persona: '<string>',
dedupKey: '<string>',
ephemeral: true
}
],
expectedOutput: '<string>',
parentAgentId: {
tenant: {provider: 'PROVIDER_UNSPECIFIED', org: '<string>'},
ownerProvider: 'PROVIDER_UNSPECIFIED',
account: '<string>',
agent: ['<string>'],
workspace: '<string>'
},
agentConfig: {
name: '<string>',
prompt: '<string>',
description: '<string>',
model: '<string>',
tools: ['<string>'],
disallowedTools: ['<string>'],
maxTurns: 123,
personaCategory: '<string>'
},
sessionMode: 'SESSION_MODE_UNSPECIFIED',
completionCheck: 'COMPLETION_CHECK_UNSPECIFIED',
onIdle: 'ON_IDLE_UNSPECIFIED',
dequeueStrategy: 'DEQUEUE_STRATEGY_UNSPECIFIED',
repos: [
{
cloneUrl: '<string>',
baseBranch: '<string>',
branch: '<string>',
branchCreated: true,
conflictResolution: 'CONFLICT_RESOLUTION_UNSPECIFIED',
baseCloneUrl: '<string>'
}
],
branch: '<string>',
purpose: '<string>',
reasoningEffort: '<string>',
reasoningSummary: '<string>',
verbosity: '<string>',
serviceTier: '<string>',
suppressedEventClasses: ['FOLLOW_UP_EVENT_CLASS_UNSPECIFIED'],
tags: ['<string>'],
outputSchema: '<string>',
lifecycleConsumers: [
{
eventClasses: ['SUBSCRIPTION_CLASS_UNSPECIFIED'],
webhook: {
url: '<string>',
callerContext: '<string>',
signingKey: 'aSDinaTvuI8gbWludGxpZnk=',
signingKeySha256: 'aSDinaTvuI8gbWludGxpZnk='
}
}
],
imageRef: '<string>',
disableCurrentBranchForking: true
})
};
fetch('https://api.murmur.dev/v1/agent/spawn', 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://api.murmur.dev/v1/agent/spawn",
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([
'agentId' => [
'tenant' => [
'provider' => 'PROVIDER_UNSPECIFIED',
'org' => '<string>'
],
'ownerProvider' => 'PROVIDER_UNSPECIFIED',
'account' => '<string>',
'agent' => [
'<string>'
],
'workspace' => '<string>'
],
'description' => '<string>',
'serviceProfile' => '<string>',
'gitName' => '<string>',
'gitEmail' => '<string>',
'sshPublicKeys' => [
'<string>'
],
'plaintextSecrets' => [
],
'idleTimeout' => '<string>',
'model' => '<string>',
'fastMode' => true,
'codingAgent' => '<string>',
'backend' => '<string>',
'skipChecks' => [
'<string>'
],
'suggestTerminateMode' => 'SUGGEST_TERMINATE_MODE_UNSPECIFIED',
'resurrect' => true,
'appendSystemPrompt' => '<string>',
'forkFrom' => '<string>',
'forceNew' => true,
'tasks' => [
[
'id' => '<string>',
'subject' => '<string>',
'description' => '<string>',
'status' => 'TASK_STATUS_UNSPECIFIED',
'blocks' => [
'<string>'
],
'blockedBy' => [
'<string>'
],
'activation' => [
'filesModified' => [
'pattern' => '<string>'
]
],
'persona' => '<string>',
'dedupKey' => '<string>',
'ephemeral' => true
]
],
'expectedOutput' => '<string>',
'parentAgentId' => [
'tenant' => [
'provider' => 'PROVIDER_UNSPECIFIED',
'org' => '<string>'
],
'ownerProvider' => 'PROVIDER_UNSPECIFIED',
'account' => '<string>',
'agent' => [
'<string>'
],
'workspace' => '<string>'
],
'agentConfig' => [
'name' => '<string>',
'prompt' => '<string>',
'description' => '<string>',
'model' => '<string>',
'tools' => [
'<string>'
],
'disallowedTools' => [
'<string>'
],
'maxTurns' => 123,
'personaCategory' => '<string>'
],
'sessionMode' => 'SESSION_MODE_UNSPECIFIED',
'completionCheck' => 'COMPLETION_CHECK_UNSPECIFIED',
'onIdle' => 'ON_IDLE_UNSPECIFIED',
'dequeueStrategy' => 'DEQUEUE_STRATEGY_UNSPECIFIED',
'repos' => [
[
'cloneUrl' => '<string>',
'baseBranch' => '<string>',
'branch' => '<string>',
'branchCreated' => true,
'conflictResolution' => 'CONFLICT_RESOLUTION_UNSPECIFIED',
'baseCloneUrl' => '<string>'
]
],
'branch' => '<string>',
'purpose' => '<string>',
'reasoningEffort' => '<string>',
'reasoningSummary' => '<string>',
'verbosity' => '<string>',
'serviceTier' => '<string>',
'suppressedEventClasses' => [
'FOLLOW_UP_EVENT_CLASS_UNSPECIFIED'
],
'tags' => [
'<string>'
],
'outputSchema' => '<string>',
'lifecycleConsumers' => [
[
'eventClasses' => [
'SUBSCRIPTION_CLASS_UNSPECIFIED'
],
'webhook' => [
'url' => '<string>',
'callerContext' => '<string>',
'signingKey' => 'aSDinaTvuI8gbWludGxpZnk=',
'signingKeySha256' => 'aSDinaTvuI8gbWludGxpZnk='
]
]
],
'imageRef' => '<string>',
'disableCurrentBranchForking' => true
]),
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://api.murmur.dev/v1/agent/spawn"
payload := strings.NewReader("{\n \"agentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"serviceProfile\": \"<string>\",\n \"gitName\": \"<string>\",\n \"gitEmail\": \"<string>\",\n \"sshPublicKeys\": [\n \"<string>\"\n ],\n \"plaintextSecrets\": {},\n \"idleTimeout\": \"<string>\",\n \"model\": \"<string>\",\n \"fastMode\": true,\n \"codingAgent\": \"<string>\",\n \"backend\": \"<string>\",\n \"skipChecks\": [\n \"<string>\"\n ],\n \"suggestTerminateMode\": \"SUGGEST_TERMINATE_MODE_UNSPECIFIED\",\n \"resurrect\": true,\n \"appendSystemPrompt\": \"<string>\",\n \"forkFrom\": \"<string>\",\n \"forceNew\": true,\n \"tasks\": [\n {\n \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"TASK_STATUS_UNSPECIFIED\",\n \"blocks\": [\n \"<string>\"\n ],\n \"blockedBy\": [\n \"<string>\"\n ],\n \"activation\": {\n \"filesModified\": {\n \"pattern\": \"<string>\"\n }\n },\n \"persona\": \"<string>\",\n \"dedupKey\": \"<string>\",\n \"ephemeral\": true\n }\n ],\n \"expectedOutput\": \"<string>\",\n \"parentAgentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"agentConfig\": {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"<string>\",\n \"tools\": [\n \"<string>\"\n ],\n \"disallowedTools\": [\n \"<string>\"\n ],\n \"maxTurns\": 123,\n \"personaCategory\": \"<string>\"\n },\n \"sessionMode\": \"SESSION_MODE_UNSPECIFIED\",\n \"completionCheck\": \"COMPLETION_CHECK_UNSPECIFIED\",\n \"onIdle\": \"ON_IDLE_UNSPECIFIED\",\n \"dequeueStrategy\": \"DEQUEUE_STRATEGY_UNSPECIFIED\",\n \"repos\": [\n {\n \"cloneUrl\": \"<string>\",\n \"baseBranch\": \"<string>\",\n \"branch\": \"<string>\",\n \"branchCreated\": true,\n \"conflictResolution\": \"CONFLICT_RESOLUTION_UNSPECIFIED\",\n \"baseCloneUrl\": \"<string>\"\n }\n ],\n \"branch\": \"<string>\",\n \"purpose\": \"<string>\",\n \"reasoningEffort\": \"<string>\",\n \"reasoningSummary\": \"<string>\",\n \"verbosity\": \"<string>\",\n \"serviceTier\": \"<string>\",\n \"suppressedEventClasses\": [\n \"FOLLOW_UP_EVENT_CLASS_UNSPECIFIED\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"outputSchema\": \"<string>\",\n \"lifecycleConsumers\": [\n {\n \"eventClasses\": [\n \"SUBSCRIPTION_CLASS_UNSPECIFIED\"\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"callerContext\": \"<string>\",\n \"signingKey\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"signingKeySha256\": \"aSDinaTvuI8gbWludGxpZnk=\"\n }\n }\n ],\n \"imageRef\": \"<string>\",\n \"disableCurrentBranchForking\": true\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://api.murmur.dev/v1/agent/spawn")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"agentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"serviceProfile\": \"<string>\",\n \"gitName\": \"<string>\",\n \"gitEmail\": \"<string>\",\n \"sshPublicKeys\": [\n \"<string>\"\n ],\n \"plaintextSecrets\": {},\n \"idleTimeout\": \"<string>\",\n \"model\": \"<string>\",\n \"fastMode\": true,\n \"codingAgent\": \"<string>\",\n \"backend\": \"<string>\",\n \"skipChecks\": [\n \"<string>\"\n ],\n \"suggestTerminateMode\": \"SUGGEST_TERMINATE_MODE_UNSPECIFIED\",\n \"resurrect\": true,\n \"appendSystemPrompt\": \"<string>\",\n \"forkFrom\": \"<string>\",\n \"forceNew\": true,\n \"tasks\": [\n {\n \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"TASK_STATUS_UNSPECIFIED\",\n \"blocks\": [\n \"<string>\"\n ],\n \"blockedBy\": [\n \"<string>\"\n ],\n \"activation\": {\n \"filesModified\": {\n \"pattern\": \"<string>\"\n }\n },\n \"persona\": \"<string>\",\n \"dedupKey\": \"<string>\",\n \"ephemeral\": true\n }\n ],\n \"expectedOutput\": \"<string>\",\n \"parentAgentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"agentConfig\": {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"<string>\",\n \"tools\": [\n \"<string>\"\n ],\n \"disallowedTools\": [\n \"<string>\"\n ],\n \"maxTurns\": 123,\n \"personaCategory\": \"<string>\"\n },\n \"sessionMode\": \"SESSION_MODE_UNSPECIFIED\",\n \"completionCheck\": \"COMPLETION_CHECK_UNSPECIFIED\",\n \"onIdle\": \"ON_IDLE_UNSPECIFIED\",\n \"dequeueStrategy\": \"DEQUEUE_STRATEGY_UNSPECIFIED\",\n \"repos\": [\n {\n \"cloneUrl\": \"<string>\",\n \"baseBranch\": \"<string>\",\n \"branch\": \"<string>\",\n \"branchCreated\": true,\n \"conflictResolution\": \"CONFLICT_RESOLUTION_UNSPECIFIED\",\n \"baseCloneUrl\": \"<string>\"\n }\n ],\n \"branch\": \"<string>\",\n \"purpose\": \"<string>\",\n \"reasoningEffort\": \"<string>\",\n \"reasoningSummary\": \"<string>\",\n \"verbosity\": \"<string>\",\n \"serviceTier\": \"<string>\",\n \"suppressedEventClasses\": [\n \"FOLLOW_UP_EVENT_CLASS_UNSPECIFIED\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"outputSchema\": \"<string>\",\n \"lifecycleConsumers\": [\n {\n \"eventClasses\": [\n \"SUBSCRIPTION_CLASS_UNSPECIFIED\"\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"callerContext\": \"<string>\",\n \"signingKey\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"signingKeySha256\": \"aSDinaTvuI8gbWludGxpZnk=\"\n }\n }\n ],\n \"imageRef\": \"<string>\",\n \"disableCurrentBranchForking\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.murmur.dev/v1/agent/spawn")
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 \"agentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"serviceProfile\": \"<string>\",\n \"gitName\": \"<string>\",\n \"gitEmail\": \"<string>\",\n \"sshPublicKeys\": [\n \"<string>\"\n ],\n \"plaintextSecrets\": {},\n \"idleTimeout\": \"<string>\",\n \"model\": \"<string>\",\n \"fastMode\": true,\n \"codingAgent\": \"<string>\",\n \"backend\": \"<string>\",\n \"skipChecks\": [\n \"<string>\"\n ],\n \"suggestTerminateMode\": \"SUGGEST_TERMINATE_MODE_UNSPECIFIED\",\n \"resurrect\": true,\n \"appendSystemPrompt\": \"<string>\",\n \"forkFrom\": \"<string>\",\n \"forceNew\": true,\n \"tasks\": [\n {\n \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"TASK_STATUS_UNSPECIFIED\",\n \"blocks\": [\n \"<string>\"\n ],\n \"blockedBy\": [\n \"<string>\"\n ],\n \"activation\": {\n \"filesModified\": {\n \"pattern\": \"<string>\"\n }\n },\n \"persona\": \"<string>\",\n \"dedupKey\": \"<string>\",\n \"ephemeral\": true\n }\n ],\n \"expectedOutput\": \"<string>\",\n \"parentAgentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"agentConfig\": {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"<string>\",\n \"tools\": [\n \"<string>\"\n ],\n \"disallowedTools\": [\n \"<string>\"\n ],\n \"maxTurns\": 123,\n \"personaCategory\": \"<string>\"\n },\n \"sessionMode\": \"SESSION_MODE_UNSPECIFIED\",\n \"completionCheck\": \"COMPLETION_CHECK_UNSPECIFIED\",\n \"onIdle\": \"ON_IDLE_UNSPECIFIED\",\n \"dequeueStrategy\": \"DEQUEUE_STRATEGY_UNSPECIFIED\",\n \"repos\": [\n {\n \"cloneUrl\": \"<string>\",\n \"baseBranch\": \"<string>\",\n \"branch\": \"<string>\",\n \"branchCreated\": true,\n \"conflictResolution\": \"CONFLICT_RESOLUTION_UNSPECIFIED\",\n \"baseCloneUrl\": \"<string>\"\n }\n ],\n \"branch\": \"<string>\",\n \"purpose\": \"<string>\",\n \"reasoningEffort\": \"<string>\",\n \"reasoningSummary\": \"<string>\",\n \"verbosity\": \"<string>\",\n \"serviceTier\": \"<string>\",\n \"suppressedEventClasses\": [\n \"FOLLOW_UP_EVENT_CLASS_UNSPECIFIED\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"outputSchema\": \"<string>\",\n \"lifecycleConsumers\": [\n {\n \"eventClasses\": [\n \"SUBSCRIPTION_CLASS_UNSPECIFIED\"\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"callerContext\": \"<string>\",\n \"signingKey\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"signingKeySha256\": \"aSDinaTvuI8gbWludGxpZnk=\"\n }\n }\n ],\n \"imageRef\": \"<string>\",\n \"disableCurrentBranchForking\": true\n}"
response = http.request(request)
puts response.read_body{
"agentId": {
"tenant": {
"provider": "PROVIDER_UNSPECIFIED",
"org": "<string>"
},
"ownerProvider": "PROVIDER_UNSPECIFIED",
"account": "<string>",
"agent": [
"<string>"
],
"workspace": "<string>"
},
"shortId": "<string>",
"dashboardUrl": "<string>"
}{
"code": 123,
"message": "<string>",
"details": [
{
"@type": "<string>"
}
]
}Spawn an agent
Spawn starts an agent task. If the agent is already running, returns AlreadyExists — use QueueAdd to send a follow-up instead.
curl --request POST \
--url https://api.murmur.dev/v1/agent/spawn \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"agentId": {
"tenant": {
"provider": "PROVIDER_UNSPECIFIED",
"org": "<string>"
},
"ownerProvider": "PROVIDER_UNSPECIFIED",
"account": "<string>",
"agent": [
"<string>"
],
"workspace": "<string>"
},
"description": "<string>",
"serviceProfile": "<string>",
"gitName": "<string>",
"gitEmail": "<string>",
"sshPublicKeys": [
"<string>"
],
"plaintextSecrets": {},
"idleTimeout": "<string>",
"model": "<string>",
"fastMode": true,
"codingAgent": "<string>",
"backend": "<string>",
"skipChecks": [
"<string>"
],
"suggestTerminateMode": "SUGGEST_TERMINATE_MODE_UNSPECIFIED",
"resurrect": true,
"appendSystemPrompt": "<string>",
"forkFrom": "<string>",
"forceNew": true,
"tasks": [
{
"id": "<string>",
"subject": "<string>",
"description": "<string>",
"status": "TASK_STATUS_UNSPECIFIED",
"blocks": [
"<string>"
],
"blockedBy": [
"<string>"
],
"activation": {
"filesModified": {
"pattern": "<string>"
}
},
"persona": "<string>",
"dedupKey": "<string>",
"ephemeral": true
}
],
"expectedOutput": "<string>",
"parentAgentId": {
"tenant": {
"provider": "PROVIDER_UNSPECIFIED",
"org": "<string>"
},
"ownerProvider": "PROVIDER_UNSPECIFIED",
"account": "<string>",
"agent": [
"<string>"
],
"workspace": "<string>"
},
"agentConfig": {
"name": "<string>",
"prompt": "<string>",
"description": "<string>",
"model": "<string>",
"tools": [
"<string>"
],
"disallowedTools": [
"<string>"
],
"maxTurns": 123,
"personaCategory": "<string>"
},
"sessionMode": "SESSION_MODE_UNSPECIFIED",
"completionCheck": "COMPLETION_CHECK_UNSPECIFIED",
"onIdle": "ON_IDLE_UNSPECIFIED",
"dequeueStrategy": "DEQUEUE_STRATEGY_UNSPECIFIED",
"repos": [
{
"cloneUrl": "<string>",
"baseBranch": "<string>",
"branch": "<string>",
"branchCreated": true,
"conflictResolution": "CONFLICT_RESOLUTION_UNSPECIFIED",
"baseCloneUrl": "<string>"
}
],
"branch": "<string>",
"purpose": "<string>",
"reasoningEffort": "<string>",
"reasoningSummary": "<string>",
"verbosity": "<string>",
"serviceTier": "<string>",
"suppressedEventClasses": [
"FOLLOW_UP_EVENT_CLASS_UNSPECIFIED"
],
"tags": [
"<string>"
],
"outputSchema": "<string>",
"lifecycleConsumers": [
{
"eventClasses": [
"SUBSCRIPTION_CLASS_UNSPECIFIED"
],
"webhook": {
"url": "<string>",
"callerContext": "<string>",
"signingKey": "aSDinaTvuI8gbWludGxpZnk=",
"signingKeySha256": "aSDinaTvuI8gbWludGxpZnk="
}
}
],
"imageRef": "<string>",
"disableCurrentBranchForking": true
}
'import requests
url = "https://api.murmur.dev/v1/agent/spawn"
payload = {
"agentId": {
"tenant": {
"provider": "PROVIDER_UNSPECIFIED",
"org": "<string>"
},
"ownerProvider": "PROVIDER_UNSPECIFIED",
"account": "<string>",
"agent": ["<string>"],
"workspace": "<string>"
},
"description": "<string>",
"serviceProfile": "<string>",
"gitName": "<string>",
"gitEmail": "<string>",
"sshPublicKeys": ["<string>"],
"plaintextSecrets": {},
"idleTimeout": "<string>",
"model": "<string>",
"fastMode": True,
"codingAgent": "<string>",
"backend": "<string>",
"skipChecks": ["<string>"],
"suggestTerminateMode": "SUGGEST_TERMINATE_MODE_UNSPECIFIED",
"resurrect": True,
"appendSystemPrompt": "<string>",
"forkFrom": "<string>",
"forceNew": True,
"tasks": [
{
"id": "<string>",
"subject": "<string>",
"description": "<string>",
"status": "TASK_STATUS_UNSPECIFIED",
"blocks": ["<string>"],
"blockedBy": ["<string>"],
"activation": { "filesModified": { "pattern": "<string>" } },
"persona": "<string>",
"dedupKey": "<string>",
"ephemeral": True
}
],
"expectedOutput": "<string>",
"parentAgentId": {
"tenant": {
"provider": "PROVIDER_UNSPECIFIED",
"org": "<string>"
},
"ownerProvider": "PROVIDER_UNSPECIFIED",
"account": "<string>",
"agent": ["<string>"],
"workspace": "<string>"
},
"agentConfig": {
"name": "<string>",
"prompt": "<string>",
"description": "<string>",
"model": "<string>",
"tools": ["<string>"],
"disallowedTools": ["<string>"],
"maxTurns": 123,
"personaCategory": "<string>"
},
"sessionMode": "SESSION_MODE_UNSPECIFIED",
"completionCheck": "COMPLETION_CHECK_UNSPECIFIED",
"onIdle": "ON_IDLE_UNSPECIFIED",
"dequeueStrategy": "DEQUEUE_STRATEGY_UNSPECIFIED",
"repos": [
{
"cloneUrl": "<string>",
"baseBranch": "<string>",
"branch": "<string>",
"branchCreated": True,
"conflictResolution": "CONFLICT_RESOLUTION_UNSPECIFIED",
"baseCloneUrl": "<string>"
}
],
"branch": "<string>",
"purpose": "<string>",
"reasoningEffort": "<string>",
"reasoningSummary": "<string>",
"verbosity": "<string>",
"serviceTier": "<string>",
"suppressedEventClasses": ["FOLLOW_UP_EVENT_CLASS_UNSPECIFIED"],
"tags": ["<string>"],
"outputSchema": "<string>",
"lifecycleConsumers": [
{
"eventClasses": ["SUBSCRIPTION_CLASS_UNSPECIFIED"],
"webhook": {
"url": "<string>",
"callerContext": "<string>",
"signingKey": "aSDinaTvuI8gbWludGxpZnk=",
"signingKeySha256": "aSDinaTvuI8gbWludGxpZnk="
}
}
],
"imageRef": "<string>",
"disableCurrentBranchForking": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
agentId: {
tenant: {provider: 'PROVIDER_UNSPECIFIED', org: '<string>'},
ownerProvider: 'PROVIDER_UNSPECIFIED',
account: '<string>',
agent: ['<string>'],
workspace: '<string>'
},
description: '<string>',
serviceProfile: '<string>',
gitName: '<string>',
gitEmail: '<string>',
sshPublicKeys: ['<string>'],
plaintextSecrets: {},
idleTimeout: '<string>',
model: '<string>',
fastMode: true,
codingAgent: '<string>',
backend: '<string>',
skipChecks: ['<string>'],
suggestTerminateMode: 'SUGGEST_TERMINATE_MODE_UNSPECIFIED',
resurrect: true,
appendSystemPrompt: '<string>',
forkFrom: '<string>',
forceNew: true,
tasks: [
{
id: '<string>',
subject: '<string>',
description: '<string>',
status: 'TASK_STATUS_UNSPECIFIED',
blocks: ['<string>'],
blockedBy: ['<string>'],
activation: {filesModified: {pattern: '<string>'}},
persona: '<string>',
dedupKey: '<string>',
ephemeral: true
}
],
expectedOutput: '<string>',
parentAgentId: {
tenant: {provider: 'PROVIDER_UNSPECIFIED', org: '<string>'},
ownerProvider: 'PROVIDER_UNSPECIFIED',
account: '<string>',
agent: ['<string>'],
workspace: '<string>'
},
agentConfig: {
name: '<string>',
prompt: '<string>',
description: '<string>',
model: '<string>',
tools: ['<string>'],
disallowedTools: ['<string>'],
maxTurns: 123,
personaCategory: '<string>'
},
sessionMode: 'SESSION_MODE_UNSPECIFIED',
completionCheck: 'COMPLETION_CHECK_UNSPECIFIED',
onIdle: 'ON_IDLE_UNSPECIFIED',
dequeueStrategy: 'DEQUEUE_STRATEGY_UNSPECIFIED',
repos: [
{
cloneUrl: '<string>',
baseBranch: '<string>',
branch: '<string>',
branchCreated: true,
conflictResolution: 'CONFLICT_RESOLUTION_UNSPECIFIED',
baseCloneUrl: '<string>'
}
],
branch: '<string>',
purpose: '<string>',
reasoningEffort: '<string>',
reasoningSummary: '<string>',
verbosity: '<string>',
serviceTier: '<string>',
suppressedEventClasses: ['FOLLOW_UP_EVENT_CLASS_UNSPECIFIED'],
tags: ['<string>'],
outputSchema: '<string>',
lifecycleConsumers: [
{
eventClasses: ['SUBSCRIPTION_CLASS_UNSPECIFIED'],
webhook: {
url: '<string>',
callerContext: '<string>',
signingKey: 'aSDinaTvuI8gbWludGxpZnk=',
signingKeySha256: 'aSDinaTvuI8gbWludGxpZnk='
}
}
],
imageRef: '<string>',
disableCurrentBranchForking: true
})
};
fetch('https://api.murmur.dev/v1/agent/spawn', 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://api.murmur.dev/v1/agent/spawn",
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([
'agentId' => [
'tenant' => [
'provider' => 'PROVIDER_UNSPECIFIED',
'org' => '<string>'
],
'ownerProvider' => 'PROVIDER_UNSPECIFIED',
'account' => '<string>',
'agent' => [
'<string>'
],
'workspace' => '<string>'
],
'description' => '<string>',
'serviceProfile' => '<string>',
'gitName' => '<string>',
'gitEmail' => '<string>',
'sshPublicKeys' => [
'<string>'
],
'plaintextSecrets' => [
],
'idleTimeout' => '<string>',
'model' => '<string>',
'fastMode' => true,
'codingAgent' => '<string>',
'backend' => '<string>',
'skipChecks' => [
'<string>'
],
'suggestTerminateMode' => 'SUGGEST_TERMINATE_MODE_UNSPECIFIED',
'resurrect' => true,
'appendSystemPrompt' => '<string>',
'forkFrom' => '<string>',
'forceNew' => true,
'tasks' => [
[
'id' => '<string>',
'subject' => '<string>',
'description' => '<string>',
'status' => 'TASK_STATUS_UNSPECIFIED',
'blocks' => [
'<string>'
],
'blockedBy' => [
'<string>'
],
'activation' => [
'filesModified' => [
'pattern' => '<string>'
]
],
'persona' => '<string>',
'dedupKey' => '<string>',
'ephemeral' => true
]
],
'expectedOutput' => '<string>',
'parentAgentId' => [
'tenant' => [
'provider' => 'PROVIDER_UNSPECIFIED',
'org' => '<string>'
],
'ownerProvider' => 'PROVIDER_UNSPECIFIED',
'account' => '<string>',
'agent' => [
'<string>'
],
'workspace' => '<string>'
],
'agentConfig' => [
'name' => '<string>',
'prompt' => '<string>',
'description' => '<string>',
'model' => '<string>',
'tools' => [
'<string>'
],
'disallowedTools' => [
'<string>'
],
'maxTurns' => 123,
'personaCategory' => '<string>'
],
'sessionMode' => 'SESSION_MODE_UNSPECIFIED',
'completionCheck' => 'COMPLETION_CHECK_UNSPECIFIED',
'onIdle' => 'ON_IDLE_UNSPECIFIED',
'dequeueStrategy' => 'DEQUEUE_STRATEGY_UNSPECIFIED',
'repos' => [
[
'cloneUrl' => '<string>',
'baseBranch' => '<string>',
'branch' => '<string>',
'branchCreated' => true,
'conflictResolution' => 'CONFLICT_RESOLUTION_UNSPECIFIED',
'baseCloneUrl' => '<string>'
]
],
'branch' => '<string>',
'purpose' => '<string>',
'reasoningEffort' => '<string>',
'reasoningSummary' => '<string>',
'verbosity' => '<string>',
'serviceTier' => '<string>',
'suppressedEventClasses' => [
'FOLLOW_UP_EVENT_CLASS_UNSPECIFIED'
],
'tags' => [
'<string>'
],
'outputSchema' => '<string>',
'lifecycleConsumers' => [
[
'eventClasses' => [
'SUBSCRIPTION_CLASS_UNSPECIFIED'
],
'webhook' => [
'url' => '<string>',
'callerContext' => '<string>',
'signingKey' => 'aSDinaTvuI8gbWludGxpZnk=',
'signingKeySha256' => 'aSDinaTvuI8gbWludGxpZnk='
]
]
],
'imageRef' => '<string>',
'disableCurrentBranchForking' => true
]),
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://api.murmur.dev/v1/agent/spawn"
payload := strings.NewReader("{\n \"agentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"serviceProfile\": \"<string>\",\n \"gitName\": \"<string>\",\n \"gitEmail\": \"<string>\",\n \"sshPublicKeys\": [\n \"<string>\"\n ],\n \"plaintextSecrets\": {},\n \"idleTimeout\": \"<string>\",\n \"model\": \"<string>\",\n \"fastMode\": true,\n \"codingAgent\": \"<string>\",\n \"backend\": \"<string>\",\n \"skipChecks\": [\n \"<string>\"\n ],\n \"suggestTerminateMode\": \"SUGGEST_TERMINATE_MODE_UNSPECIFIED\",\n \"resurrect\": true,\n \"appendSystemPrompt\": \"<string>\",\n \"forkFrom\": \"<string>\",\n \"forceNew\": true,\n \"tasks\": [\n {\n \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"TASK_STATUS_UNSPECIFIED\",\n \"blocks\": [\n \"<string>\"\n ],\n \"blockedBy\": [\n \"<string>\"\n ],\n \"activation\": {\n \"filesModified\": {\n \"pattern\": \"<string>\"\n }\n },\n \"persona\": \"<string>\",\n \"dedupKey\": \"<string>\",\n \"ephemeral\": true\n }\n ],\n \"expectedOutput\": \"<string>\",\n \"parentAgentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"agentConfig\": {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"<string>\",\n \"tools\": [\n \"<string>\"\n ],\n \"disallowedTools\": [\n \"<string>\"\n ],\n \"maxTurns\": 123,\n \"personaCategory\": \"<string>\"\n },\n \"sessionMode\": \"SESSION_MODE_UNSPECIFIED\",\n \"completionCheck\": \"COMPLETION_CHECK_UNSPECIFIED\",\n \"onIdle\": \"ON_IDLE_UNSPECIFIED\",\n \"dequeueStrategy\": \"DEQUEUE_STRATEGY_UNSPECIFIED\",\n \"repos\": [\n {\n \"cloneUrl\": \"<string>\",\n \"baseBranch\": \"<string>\",\n \"branch\": \"<string>\",\n \"branchCreated\": true,\n \"conflictResolution\": \"CONFLICT_RESOLUTION_UNSPECIFIED\",\n \"baseCloneUrl\": \"<string>\"\n }\n ],\n \"branch\": \"<string>\",\n \"purpose\": \"<string>\",\n \"reasoningEffort\": \"<string>\",\n \"reasoningSummary\": \"<string>\",\n \"verbosity\": \"<string>\",\n \"serviceTier\": \"<string>\",\n \"suppressedEventClasses\": [\n \"FOLLOW_UP_EVENT_CLASS_UNSPECIFIED\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"outputSchema\": \"<string>\",\n \"lifecycleConsumers\": [\n {\n \"eventClasses\": [\n \"SUBSCRIPTION_CLASS_UNSPECIFIED\"\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"callerContext\": \"<string>\",\n \"signingKey\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"signingKeySha256\": \"aSDinaTvuI8gbWludGxpZnk=\"\n }\n }\n ],\n \"imageRef\": \"<string>\",\n \"disableCurrentBranchForking\": true\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://api.murmur.dev/v1/agent/spawn")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"agentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"serviceProfile\": \"<string>\",\n \"gitName\": \"<string>\",\n \"gitEmail\": \"<string>\",\n \"sshPublicKeys\": [\n \"<string>\"\n ],\n \"plaintextSecrets\": {},\n \"idleTimeout\": \"<string>\",\n \"model\": \"<string>\",\n \"fastMode\": true,\n \"codingAgent\": \"<string>\",\n \"backend\": \"<string>\",\n \"skipChecks\": [\n \"<string>\"\n ],\n \"suggestTerminateMode\": \"SUGGEST_TERMINATE_MODE_UNSPECIFIED\",\n \"resurrect\": true,\n \"appendSystemPrompt\": \"<string>\",\n \"forkFrom\": \"<string>\",\n \"forceNew\": true,\n \"tasks\": [\n {\n \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"TASK_STATUS_UNSPECIFIED\",\n \"blocks\": [\n \"<string>\"\n ],\n \"blockedBy\": [\n \"<string>\"\n ],\n \"activation\": {\n \"filesModified\": {\n \"pattern\": \"<string>\"\n }\n },\n \"persona\": \"<string>\",\n \"dedupKey\": \"<string>\",\n \"ephemeral\": true\n }\n ],\n \"expectedOutput\": \"<string>\",\n \"parentAgentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"agentConfig\": {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"<string>\",\n \"tools\": [\n \"<string>\"\n ],\n \"disallowedTools\": [\n \"<string>\"\n ],\n \"maxTurns\": 123,\n \"personaCategory\": \"<string>\"\n },\n \"sessionMode\": \"SESSION_MODE_UNSPECIFIED\",\n \"completionCheck\": \"COMPLETION_CHECK_UNSPECIFIED\",\n \"onIdle\": \"ON_IDLE_UNSPECIFIED\",\n \"dequeueStrategy\": \"DEQUEUE_STRATEGY_UNSPECIFIED\",\n \"repos\": [\n {\n \"cloneUrl\": \"<string>\",\n \"baseBranch\": \"<string>\",\n \"branch\": \"<string>\",\n \"branchCreated\": true,\n \"conflictResolution\": \"CONFLICT_RESOLUTION_UNSPECIFIED\",\n \"baseCloneUrl\": \"<string>\"\n }\n ],\n \"branch\": \"<string>\",\n \"purpose\": \"<string>\",\n \"reasoningEffort\": \"<string>\",\n \"reasoningSummary\": \"<string>\",\n \"verbosity\": \"<string>\",\n \"serviceTier\": \"<string>\",\n \"suppressedEventClasses\": [\n \"FOLLOW_UP_EVENT_CLASS_UNSPECIFIED\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"outputSchema\": \"<string>\",\n \"lifecycleConsumers\": [\n {\n \"eventClasses\": [\n \"SUBSCRIPTION_CLASS_UNSPECIFIED\"\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"callerContext\": \"<string>\",\n \"signingKey\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"signingKeySha256\": \"aSDinaTvuI8gbWludGxpZnk=\"\n }\n }\n ],\n \"imageRef\": \"<string>\",\n \"disableCurrentBranchForking\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.murmur.dev/v1/agent/spawn")
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 \"agentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"description\": \"<string>\",\n \"serviceProfile\": \"<string>\",\n \"gitName\": \"<string>\",\n \"gitEmail\": \"<string>\",\n \"sshPublicKeys\": [\n \"<string>\"\n ],\n \"plaintextSecrets\": {},\n \"idleTimeout\": \"<string>\",\n \"model\": \"<string>\",\n \"fastMode\": true,\n \"codingAgent\": \"<string>\",\n \"backend\": \"<string>\",\n \"skipChecks\": [\n \"<string>\"\n ],\n \"suggestTerminateMode\": \"SUGGEST_TERMINATE_MODE_UNSPECIFIED\",\n \"resurrect\": true,\n \"appendSystemPrompt\": \"<string>\",\n \"forkFrom\": \"<string>\",\n \"forceNew\": true,\n \"tasks\": [\n {\n \"id\": \"<string>\",\n \"subject\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"TASK_STATUS_UNSPECIFIED\",\n \"blocks\": [\n \"<string>\"\n ],\n \"blockedBy\": [\n \"<string>\"\n ],\n \"activation\": {\n \"filesModified\": {\n \"pattern\": \"<string>\"\n }\n },\n \"persona\": \"<string>\",\n \"dedupKey\": \"<string>\",\n \"ephemeral\": true\n }\n ],\n \"expectedOutput\": \"<string>\",\n \"parentAgentId\": {\n \"tenant\": {\n \"provider\": \"PROVIDER_UNSPECIFIED\",\n \"org\": \"<string>\"\n },\n \"ownerProvider\": \"PROVIDER_UNSPECIFIED\",\n \"account\": \"<string>\",\n \"agent\": [\n \"<string>\"\n ],\n \"workspace\": \"<string>\"\n },\n \"agentConfig\": {\n \"name\": \"<string>\",\n \"prompt\": \"<string>\",\n \"description\": \"<string>\",\n \"model\": \"<string>\",\n \"tools\": [\n \"<string>\"\n ],\n \"disallowedTools\": [\n \"<string>\"\n ],\n \"maxTurns\": 123,\n \"personaCategory\": \"<string>\"\n },\n \"sessionMode\": \"SESSION_MODE_UNSPECIFIED\",\n \"completionCheck\": \"COMPLETION_CHECK_UNSPECIFIED\",\n \"onIdle\": \"ON_IDLE_UNSPECIFIED\",\n \"dequeueStrategy\": \"DEQUEUE_STRATEGY_UNSPECIFIED\",\n \"repos\": [\n {\n \"cloneUrl\": \"<string>\",\n \"baseBranch\": \"<string>\",\n \"branch\": \"<string>\",\n \"branchCreated\": true,\n \"conflictResolution\": \"CONFLICT_RESOLUTION_UNSPECIFIED\",\n \"baseCloneUrl\": \"<string>\"\n }\n ],\n \"branch\": \"<string>\",\n \"purpose\": \"<string>\",\n \"reasoningEffort\": \"<string>\",\n \"reasoningSummary\": \"<string>\",\n \"verbosity\": \"<string>\",\n \"serviceTier\": \"<string>\",\n \"suppressedEventClasses\": [\n \"FOLLOW_UP_EVENT_CLASS_UNSPECIFIED\"\n ],\n \"tags\": [\n \"<string>\"\n ],\n \"outputSchema\": \"<string>\",\n \"lifecycleConsumers\": [\n {\n \"eventClasses\": [\n \"SUBSCRIPTION_CLASS_UNSPECIFIED\"\n ],\n \"webhook\": {\n \"url\": \"<string>\",\n \"callerContext\": \"<string>\",\n \"signingKey\": \"aSDinaTvuI8gbWludGxpZnk=\",\n \"signingKeySha256\": \"aSDinaTvuI8gbWludGxpZnk=\"\n }\n }\n ],\n \"imageRef\": \"<string>\",\n \"disableCurrentBranchForking\": true\n}"
response = http.request(request)
puts response.read_body{
"agentId": {
"tenant": {
"provider": "PROVIDER_UNSPECIFIED",
"org": "<string>"
},
"ownerProvider": "PROVIDER_UNSPECIFIED",
"account": "<string>",
"agent": [
"<string>"
],
"workspace": "<string>"
},
"shortId": "<string>",
"dashboardUrl": "<string>"
}{
"code": 123,
"message": "<string>",
"details": [
{
"@type": "<string>"
}
]
}Authorizations
murmur API key: mur_<key_id>.
Body
Identifies an agent. The identity is (tenant, workspace, owner, agent path); the workspace scopes the agent's repos, environment, and base branches.
Show child attributes
Show child attributes
Service profile name. When set, the agent runs with the named service profile's identity and credentials (a bot spawn). When empty, the agent runs as the calling developer.
Git identity — optional. Defaults to the caller's stored profile, then the caller's username.
Plaintext secrets, keyed by environment-variable name. The server encrypts them and merges them into the agent's secrets ahead of every other source. Highest precedence.
Show child attributes
Show child attributes
-
SUGGEST_TERMINATE_MODE_UNSPECIFIED: inherit (workspace, then the SUGGEST default)
-
SUGGEST_TERMINATE_MODE_SUGGEST: advisory only: the dashboard renders a delete button; a human decides
-
SUGGEST_TERMINATE_MODE_IMMEDIATE: terminate the agent immediately, no delete button
SUGGEST_TERMINATE_MODE_UNSPECIFIED, SUGGEST_TERMINATE_MODE_SUGGEST, SUGGEST_TERMINATE_MODE_IMMEDIATE Show child attributes
Show child attributes
Expected output artifact. Free-form — known shorthands are expanded into agent behavior: "pr" → open a pull request "push" → push changes, no PR "respond" → just respond, no code changes "diff" → produce a diff, no commit "report" → produce a written report "none" → no artifact expected Anything else flows through to the agent verbatim.
Identifies an agent. The identity is (tenant, workspace, owner, agent path); the workspace scopes the agent's repos, environment, and base branches.
Show child attributes
Show child attributes
An agent persona definition: system prompt, model, and tool configuration.
Show child attributes
Show child attributes
SessionMode determines how the agent's coding session is executed.
- SESSION_MODE_AUTONOMOUS: The agent runs each turn to completion and returns structured output.
- SESSION_MODE_STREAMING: Long-lived interactive session; follow-ups stream into the live session.
SESSION_MODE_UNSPECIFIED, SESSION_MODE_AUTONOMOUS, SESSION_MODE_STREAMING CompletionCheck determines whether the agent re-checks completion after a task finishes, before entering idle behavior.
- COMPLETION_CHECK_NONE: Proceed directly to idle behavior.
- COMPLETION_CHECK_ASSESSOR: Fork session, run completion assessor up to 3 times.
COMPLETION_CHECK_UNSPECIFIED, COMPLETION_CHECK_NONE, COMPLETION_CHECK_ASSESSOR OnIdle determines what happens when the agent has no more work after task completion (and optional completion check).
- ON_IDLE_SLEEP: Hibernate/suspend VM, wait for follow-up or cancel.
- ON_IDLE_TERMINATE: End the agent and destroy its VM.
- ON_IDLE_KEEP_ALIVE: VM stays running, session stays live. Periodic session backup every 30m.
ON_IDLE_UNSPECIFIED, ON_IDLE_SLEEP, ON_IDLE_TERMINATE, ON_IDLE_KEEP_ALIVE Controls how queued follow-up messages are drained between agent turns.
- DEQUEUE_STRATEGY_UNSPECIFIED: Default: AUTO.
- DEQUEUE_STRATEGY_ALL: Drain all queued follow-ups into one batch.
- DEQUEUE_STRATEGY_ONE: Drain one follow-up per turn.
- DEQUEUE_STRATEGY_FIVE: Drain up to five follow-ups per turn.
- DEQUEUE_STRATEGY_AUTO: Drain up to five follow-ups of one kind per turn — manual follow-ups and auto-generated events are never delivered in the same turn (kind-boundary batching, capped at five).
DEQUEUE_STRATEGY_UNSPECIFIED, DEQUEUE_STRATEGY_ALL, DEQUEUE_STRATEGY_ONE, DEQUEUE_STRATEGY_FIVE, DEQUEUE_STRATEGY_AUTO Per-repo branch overrides and/or additional repos to clone. Entries matching workspace repos override their branch config. Entries not matching any workspace repo are extraneous repos to clone.
Show child attributes
Show child attributes
Working branch for every repo in this spawn. Applied after workspace repos are resolved — per-repo overrides (repos[].branch) take precedence when both are set.
One-sentence human-readable goal for this agent. Displayed in the dashboard for context. Not interpreted by the system. Max 240 chars.
Follow-up event classes the spawned agent ignores, enforced at event delivery. Empty (the default) means react to every class. Must not contain FOLLOW_UP_EVENT_CLASS_UNSPECIFIED.
A user-suppressible category of follow-up event. Only events that wake an already-running agent are classifiable; spawn-trigger and orchestration events are never suppressible.
- FOLLOW_UP_EVENT_CLASS_UNSPECIFIED: not a suppressible event
- FOLLOW_UP_EVENT_CLASS_CI: ci_result
- FOLLOW_UP_EVENT_CLASS_PR_COMMENTS: pr_comment, pr_review
FOLLOW_UP_EVENT_CLASS_UNSPECIFIED, FOLLOW_UP_EVENT_CLASS_CI, FOLLOW_UP_EVENT_CLASS_PR_COMMENTS Tags to attach to the spawned agent, each a tag name (e.g. "release-blocker") or any text that slugifies to one (e.g. "Release Blocker"). A reference matching an existing tag attaches it; one matching none creates it. Max 8; duplicate-free.
Optional JSON Schema (as a JSON document) constraining the agent's
structured output. When set, the agent's task answer is returned as the
schema-validated result member of the canonical
{response, needs_input, result} envelope and surfaced on
AgentTaskOutput.structured_output. Empty = the platform default envelope
({response, needs_input}) with no result. Validated at spawn time; a
malformed schema is rejected with InvalidArgument.
Lifecycle-event consumers to attach to the agent. Each consumer kind may appear at most once.
Show child attributes
Show child attributes
Catalog image name (e.g. "python-a1b2c3d4e5f67890"). When set, this agent's VM boots from this image instead of the workspace default. The image must exist and be bootable on the workspace's placement substrate. Not inherited on resurrect — pass it again.
Child spawns only: disables the default of basing each inherited repo on the parent's checked-out working branch. When set, each inherited repo resolves to its default branch at clone — the same base a top-level spawn gets — so a parent can spawn a child without pushing its working branch first. A top-level spawn rejects it.
Response
A successful response.
Identifies an agent. The identity is (tenant, workspace, owner, agent path); the workspace scopes the agent's repos, environment, and base branches.
Show child attributes
Show child attributes
Dashboard URL for the spawned agent. Empty when the server has no public URL configured.