Agents

Update

Partial update of a Nairi agent's display name, description, and system prompt. Only the fields you include in the request body are actually changed.

Partial update. Send only the fields you want to change.

PATCH /api/public/v1/agents/{agent_id}

{agent_id} accepts either the ULID (cci_...) or the human-readable slug (the agent's agent_id field).

Request body

Prop

Type

Sending an empty body ({}) is accepted as a no-op. updated_at is not bumped when no fields actually change.

Example

curl -X PATCH https://api.nairi.ai/api/public/v1/agents/AGENT_ID \
  -H "Authorization: Bearer $NAIRI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "Updated description",
    "system_prompt": "You are a helpful coding assistant."
  }'
const res = await fetch(`https://api.nairi.ai/api/public/v1/agents/${agentId}`, {
  method: "PATCH",
  headers: {
    Authorization: `Bearer ${process.env.NAIRI_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    description: "Updated description",
    system_prompt: "You are a helpful coding assistant.",
  }),
});
const data = await res.json();
require "net/http"
require "json"
require "uri"

uri = URI("https://api.nairi.ai/api/public/v1/agents/#{agent_id}")
req = Net::HTTP::Patch.new(uri)
req["Authorization"] = "Bearer #{ENV['NAIRI_API_KEY']}"
req["Content-Type"] = "application/json"
req.body = {
  description: "Updated description",
  system_prompt: "You are a helpful coding assistant.",
}.to_json

res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
data = JSON.parse(res.body)
import os
import requests

res = requests.patch(
    f"https://api.nairi.ai/api/public/v1/agents/{agent_id}",
    headers={
        "Authorization": f"Bearer {os.environ['NAIRI_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "description": "Updated description",
        "system_prompt": "You are a helpful coding assistant.",
    },
)
data = res.json()
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	agentID := os.Getenv("AGENT_ID")
	body, _ := json.Marshal(map[string]any{
		"description":   "Updated description",
		"system_prompt": "You are a helpful coding assistant.",
	})
	req, _ := http.NewRequest("PATCH", "https://api.nairi.ai/api/public/v1/agents/"+agentID, bytes.NewReader(body))
	req.Header.Set("Authorization", "Bearer "+os.Getenv("NAIRI_API_KEY"))
	req.Header.Set("Content-Type", "application/json")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	raw, _ := io.ReadAll(res.Body)
	var data map[string]any
	json.Unmarshal(raw, &data)
	fmt.Println(data)
}

Response

{
  "id": "cci_01KEQ6963XS96YDP3NF9NKB7QJ",
  "name": "My Agent",
  "agent_id": "my-agent",
  "instances_count": 1,
  "description": "Updated description",
  "is_self_hosted": false,
  "system_prompt": "You are a helpful coding assistant.",
  "created_at": "2026-04-12T18:45:12.000Z",
  "updated_at": "2026-04-12T18:50:00.000Z"
}

After updating the system prompt, redeploy with update_config_only: true for the change to take effect on running agents. See Deploy.

On this page