Edit a Worker
curl -X POST https://api.xholic.ai/v1/workers/update \ -H "Authorization: Bearer $XHOLIC_API_KEY" \ -H "Content-Type: application/json" \ -d '{"workerId":"<workerId>","changes":{},"dryRun":true}'xholic workers update --worker-id '<workerId>' --changes '{}' --dry-run{ "name": "update_worker", "arguments": { "workerId": "<workerId>", "changes": {}, "dryRun": true }}const response = await fetch("https://api.xholic.ai/v1/workers/update", { method: "POST", headers: { Authorization: `Bearer ${process.env.XHOLIC_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ "workerId": "<workerId>", "changes": {}, "dryRun": true }),});const result = await response.json();console.log(result.summary);import axios from "axios";
const { data } = await axios.post( "https://api.xholic.ai/v1/workers/update", { "workerId": "<workerId>", "changes": {}, "dryRun": true }, { headers: { Authorization: `Bearer ${process.env.XHOLIC_API_KEY}` } },);console.log(data.summary);import osimport requests
response = requests.post( "https://api.xholic.ai/v1/workers/update", headers={"Authorization": f"Bearer {os.environ['XHOLIC_API_KEY']}"}, json={ "workerId": "<workerId>", "changes": {}, "dryRun": True },)print(response.json()["summary"])package main
import ( "fmt" "io" "net/http" "os" "strings")
func main() { body := strings.NewReader(`{"workerId":"<workerId>","changes":{},"dryRun":true}`) req, _ := http.NewRequest("POST", "https://api.xholic.ai/v1/workers/update", body) req.Header.Set("Authorization", "Bearer "+os.Getenv("XHOLIC_API_KEY")) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() out, _ := io.ReadAll(res.Body) fmt.Println(string(out))}<?php$ch = curl_init("https://api.xholic.ai/v1/workers/update");curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . getenv('XHOLIC_API_KEY'), 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => '{"workerId":"<workerId>","changes":{},"dryRun":true}',]);$result = json_decode(curl_exec($ch), true);echo $result['summary'];require "net/http"require "json"
uri = URI("https://api.xholic.ai/v1/workers/update")req = Net::HTTP::Post.new(uri, "Content-Type" => "application/json")req["Authorization"] = "Bearer #{ENV.fetch("XHOLIC_API_KEY")}"req.body = '{"workerId":"<workerId>","changes":{},"dryRun":true}'res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }puts JSON.parse(res.body)["summary"]Change a Worker’s instructions, voice, topics, products, size or schedule. Call it only when the user asked for this in the conversation; never on your own initiative.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
object
PAUSED saves the worker without running it, for when the plan’s active workers are all in use.
OWN is “My voice”; CREATOR writes in the creators’ style; HYBRID is the user’s voice with the creators’ rhythm.
Creator xid values from findWorkerCreators: one for HYBRID unless the user asks for more (up to three), one to three for CREATOR, none for OWN.
The worker’s brief, broad boundaries only: who it writes for, who speaks, how the account likes to write, the areas it usually writes in, when to mention products and hard bans. Never a thesis, a point of view to push or specific topics to cover.
Follow the account’s saved writing rules.
Shape posts on formats that already work in the niche.
FOR_YOU is “For you” (topics from the profile); PRODUCT is “Your products”; CUSTOM_TOPIC is a custom topic; NICHE_TRENDING follows what is trending for its keywords.
CUSTOM_TOPIC: what to post about. NICHE_TRENDING: one to five comma-separated keywords.
PRODUCT only: saved product IDs from getAutomationSetup or getAccountContext.
DAILY or WEEKLY: minutes after midnight in the account’s timezone, e.g. 540 for 9:00.
WEEKLY: 0 is Sunday, 6 is Saturday.
X account to act on, as @handle. Leave it out to use the connection’s default account.
Return exactly what would happen without doing it.
A unique key for this write. Repeating a call with the same key returns the first result instead of acting twice.
Example
{ "workerId": "<workerId>", "changes": {}, "dryRun": true}Responses
Section titled “Responses”Success
object
One or two readable sentences about the result.
The result. Its shape depends on the action.
object
Example
{ "ok": true}default
Section titled “default”Error
object
object
Example
{ "ok": false, "error": { "code": "UNAUTHENTICATED", "scope": "account" }}