curl --request PATCH \
--url https://api.primeintellect.ai/api/v1/images \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"updates": [
{
"source": {
"owner": {
"type": "personal"
},
"name": "<string>",
"tag": "<string>",
"reference": "<string>"
},
"set": {
"name": "<string>",
"tag": "<string>",
"owner": {
"type": "personal"
}
}
}
],
"mode": "explicit",
"dryRun": false
}
'import requests
url = "https://api.primeintellect.ai/api/v1/images"
payload = {
"updates": [
{
"source": {
"owner": { "type": "personal" },
"name": "<string>",
"tag": "<string>",
"reference": "<string>"
},
"set": {
"name": "<string>",
"tag": "<string>",
"owner": { "type": "personal" }
}
}
],
"mode": "explicit",
"dryRun": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
updates: [
{
source: {
owner: {type: 'personal'},
name: '<string>',
tag: '<string>',
reference: '<string>'
},
set: {name: '<string>', tag: '<string>', owner: {type: 'personal'}}
}
],
mode: 'explicit',
dryRun: false
})
};
fetch('https://api.primeintellect.ai/api/v1/images', 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.primeintellect.ai/api/v1/images",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'updates' => [
[
'source' => [
'owner' => [
'type' => 'personal'
],
'name' => '<string>',
'tag' => '<string>',
'reference' => '<string>'
],
'set' => [
'name' => '<string>',
'tag' => '<string>',
'owner' => [
'type' => 'personal'
]
]
]
],
'mode' => 'explicit',
'dryRun' => false
]),
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.primeintellect.ai/api/v1/images"
payload := strings.NewReader("{\n \"updates\": [\n {\n \"source\": {\n \"owner\": {\n \"type\": \"personal\"\n },\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"set\": {\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"owner\": {\n \"type\": \"personal\"\n }\n }\n }\n ],\n \"mode\": \"explicit\",\n \"dryRun\": false\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.primeintellect.ai/api/v1/images")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"updates\": [\n {\n \"source\": {\n \"owner\": {\n \"type\": \"personal\"\n },\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"set\": {\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"owner\": {\n \"type\": \"personal\"\n }\n }\n }\n ],\n \"mode\": \"explicit\",\n \"dryRun\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.primeintellect.ai/api/v1/images")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"updates\": [\n {\n \"source\": {\n \"owner\": {\n \"type\": \"personal\"\n },\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"set\": {\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"owner\": {\n \"type\": \"personal\"\n }\n }\n }\n ],\n \"mode\": \"explicit\",\n \"dryRun\": false\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"dryRun": true,
"results": [
{
"source": {
"owner": {
"type": "personal"
},
"name": "<string>",
"tag": "<string>",
"reference": "<string>"
},
"success": true,
"before": {
"owner": {
"type": "personal"
},
"name": "<string>",
"tag": "<string>"
},
"after": {
"owner": {
"type": "personal"
},
"name": "<string>",
"tag": "<string>"
},
"error": {
"message": "<string>"
}
}
]
}{
"errors": [
{
"param": "<string>",
"details": "<string>"
}
]
}Update Images
Update one or many logical images: visibility, name/tag, and owner.
Applies up to 100 independent patches; each item names its source image
exactly and may change visibility, rename name/tag, move a personal
image into one of the caller’s teams, or promote a personal/team image to
an org-less platform image (platform admins only; platform images are
always PUBLIC).
Renames and owner moves update the whole logical group (container + VM
artifacts and their linked builds) atomically without moving the backing
artifacts: the old reference stops resolving and the new reference
resolves to the same content. An owner move settles storage billing to
the source wallet at the cutover instant and bills the destination
afterwards. Destinations are never overwritten (destination_exists).
dryRun performs resolution, authorization, collision detection, and
quota projection without writing; a valid request with item-specific
failures still returns 200 with per-item errors.
curl --request PATCH \
--url https://api.primeintellect.ai/api/v1/images \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"updates": [
{
"source": {
"owner": {
"type": "personal"
},
"name": "<string>",
"tag": "<string>",
"reference": "<string>"
},
"set": {
"name": "<string>",
"tag": "<string>",
"owner": {
"type": "personal"
}
}
}
],
"mode": "explicit",
"dryRun": false
}
'import requests
url = "https://api.primeintellect.ai/api/v1/images"
payload = {
"updates": [
{
"source": {
"owner": { "type": "personal" },
"name": "<string>",
"tag": "<string>",
"reference": "<string>"
},
"set": {
"name": "<string>",
"tag": "<string>",
"owner": { "type": "personal" }
}
}
],
"mode": "explicit",
"dryRun": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
updates: [
{
source: {
owner: {type: 'personal'},
name: '<string>',
tag: '<string>',
reference: '<string>'
},
set: {name: '<string>', tag: '<string>', owner: {type: 'personal'}}
}
],
mode: 'explicit',
dryRun: false
})
};
fetch('https://api.primeintellect.ai/api/v1/images', 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.primeintellect.ai/api/v1/images",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'updates' => [
[
'source' => [
'owner' => [
'type' => 'personal'
],
'name' => '<string>',
'tag' => '<string>',
'reference' => '<string>'
],
'set' => [
'name' => '<string>',
'tag' => '<string>',
'owner' => [
'type' => 'personal'
]
]
]
],
'mode' => 'explicit',
'dryRun' => false
]),
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.primeintellect.ai/api/v1/images"
payload := strings.NewReader("{\n \"updates\": [\n {\n \"source\": {\n \"owner\": {\n \"type\": \"personal\"\n },\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"set\": {\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"owner\": {\n \"type\": \"personal\"\n }\n }\n }\n ],\n \"mode\": \"explicit\",\n \"dryRun\": false\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.primeintellect.ai/api/v1/images")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"updates\": [\n {\n \"source\": {\n \"owner\": {\n \"type\": \"personal\"\n },\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"set\": {\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"owner\": {\n \"type\": \"personal\"\n }\n }\n }\n ],\n \"mode\": \"explicit\",\n \"dryRun\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.primeintellect.ai/api/v1/images")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"updates\": [\n {\n \"source\": {\n \"owner\": {\n \"type\": \"personal\"\n },\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"reference\": \"<string>\"\n },\n \"set\": {\n \"name\": \"<string>\",\n \"tag\": \"<string>\",\n \"owner\": {\n \"type\": \"personal\"\n }\n }\n }\n ],\n \"mode\": \"explicit\",\n \"dryRun\": false\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"dryRun": true,
"results": [
{
"source": {
"owner": {
"type": "personal"
},
"name": "<string>",
"tag": "<string>",
"reference": "<string>"
},
"success": true,
"before": {
"owner": {
"type": "personal"
},
"name": "<string>",
"tag": "<string>"
},
"after": {
"owner": {
"type": "personal"
},
"name": "<string>",
"tag": "<string>"
},
"error": {
"message": "<string>"
}
}
]
}{
"errors": [
{
"param": "<string>",
"details": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Explicit list of independent logical-image patches.
Every update names its source exactly (structured coordinates or a reference); there is no server-side search selection for mutations.
Was this page helpful?