curl --request PATCH \
--url https://api.enokilabs.ai/api/v1/model/{model_id}/profile \
--header 'Content-Type: application/json' \
--data '
{
"changes": {
"system_prompt": "<string>",
"purpose": "<string>",
"tools": [
{
"name": "<string>",
"description": "<string>",
"parameters": {}
}
],
"forbidden_actions": [
"<string>"
],
"sensitive_data_types": [
"<string>"
],
"forbidden_data": [
"<string>"
],
"example_identifiers": [
"<string>"
],
"user_types": [
{
"name": "<string>",
"auth_level": "<string>",
"description": "<string>"
}
],
"user_access": "<string>",
"test_account": "<string>",
"public_data": "<string>",
"compliance_requirements": [
"<string>"
],
"has_guardrails": true,
"multi_agent": true,
"has_persistent_memory": true,
"forbidden_topics": [
"<string>"
]
},
"version": 123,
"profile_id": "<string>"
}
'import requests
url = "https://api.enokilabs.ai/api/v1/model/{model_id}/profile"
payload = {
"changes": {
"system_prompt": "<string>",
"purpose": "<string>",
"tools": [
{
"name": "<string>",
"description": "<string>",
"parameters": {}
}
],
"forbidden_actions": ["<string>"],
"sensitive_data_types": ["<string>"],
"forbidden_data": ["<string>"],
"example_identifiers": ["<string>"],
"user_types": [
{
"name": "<string>",
"auth_level": "<string>",
"description": "<string>"
}
],
"user_access": "<string>",
"test_account": "<string>",
"public_data": "<string>",
"compliance_requirements": ["<string>"],
"has_guardrails": True,
"multi_agent": True,
"has_persistent_memory": True,
"forbidden_topics": ["<string>"]
},
"version": 123,
"profile_id": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
changes: {
system_prompt: '<string>',
purpose: '<string>',
tools: [{name: '<string>', description: '<string>', parameters: {}}],
forbidden_actions: ['<string>'],
sensitive_data_types: ['<string>'],
forbidden_data: ['<string>'],
example_identifiers: ['<string>'],
user_types: [{name: '<string>', auth_level: '<string>', description: '<string>'}],
user_access: '<string>',
test_account: '<string>',
public_data: '<string>',
compliance_requirements: ['<string>'],
has_guardrails: true,
multi_agent: true,
has_persistent_memory: true,
forbidden_topics: ['<string>']
},
version: 123,
profile_id: '<string>'
})
};
fetch('https://api.enokilabs.ai/api/v1/model/{model_id}/profile', 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.enokilabs.ai/api/v1/model/{model_id}/profile",
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([
'changes' => [
'system_prompt' => '<string>',
'purpose' => '<string>',
'tools' => [
[
'name' => '<string>',
'description' => '<string>',
'parameters' => [
]
]
],
'forbidden_actions' => [
'<string>'
],
'sensitive_data_types' => [
'<string>'
],
'forbidden_data' => [
'<string>'
],
'example_identifiers' => [
'<string>'
],
'user_types' => [
[
'name' => '<string>',
'auth_level' => '<string>',
'description' => '<string>'
]
],
'user_access' => '<string>',
'test_account' => '<string>',
'public_data' => '<string>',
'compliance_requirements' => [
'<string>'
],
'has_guardrails' => true,
'multi_agent' => true,
'has_persistent_memory' => true,
'forbidden_topics' => [
'<string>'
]
],
'version' => 123,
'profile_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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.enokilabs.ai/api/v1/model/{model_id}/profile"
payload := strings.NewReader("{\n \"changes\": {\n \"system_prompt\": \"<string>\",\n \"purpose\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"parameters\": {}\n }\n ],\n \"forbidden_actions\": [\n \"<string>\"\n ],\n \"sensitive_data_types\": [\n \"<string>\"\n ],\n \"forbidden_data\": [\n \"<string>\"\n ],\n \"example_identifiers\": [\n \"<string>\"\n ],\n \"user_types\": [\n {\n \"name\": \"<string>\",\n \"auth_level\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"user_access\": \"<string>\",\n \"test_account\": \"<string>\",\n \"public_data\": \"<string>\",\n \"compliance_requirements\": [\n \"<string>\"\n ],\n \"has_guardrails\": true,\n \"multi_agent\": true,\n \"has_persistent_memory\": true,\n \"forbidden_topics\": [\n \"<string>\"\n ]\n },\n \"version\": 123,\n \"profile_id\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
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.enokilabs.ai/api/v1/model/{model_id}/profile")
.header("Content-Type", "application/json")
.body("{\n \"changes\": {\n \"system_prompt\": \"<string>\",\n \"purpose\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"parameters\": {}\n }\n ],\n \"forbidden_actions\": [\n \"<string>\"\n ],\n \"sensitive_data_types\": [\n \"<string>\"\n ],\n \"forbidden_data\": [\n \"<string>\"\n ],\n \"example_identifiers\": [\n \"<string>\"\n ],\n \"user_types\": [\n {\n \"name\": \"<string>\",\n \"auth_level\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"user_access\": \"<string>\",\n \"test_account\": \"<string>\",\n \"public_data\": \"<string>\",\n \"compliance_requirements\": [\n \"<string>\"\n ],\n \"has_guardrails\": true,\n \"multi_agent\": true,\n \"has_persistent_memory\": true,\n \"forbidden_topics\": [\n \"<string>\"\n ]\n },\n \"version\": 123,\n \"profile_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.enokilabs.ai/api/v1/model/{model_id}/profile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"changes\": {\n \"system_prompt\": \"<string>\",\n \"purpose\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"parameters\": {}\n }\n ],\n \"forbidden_actions\": [\n \"<string>\"\n ],\n \"sensitive_data_types\": [\n \"<string>\"\n ],\n \"forbidden_data\": [\n \"<string>\"\n ],\n \"example_identifiers\": [\n \"<string>\"\n ],\n \"user_types\": [\n {\n \"name\": \"<string>\",\n \"auth_level\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"user_access\": \"<string>\",\n \"test_account\": \"<string>\",\n \"public_data\": \"<string>\",\n \"compliance_requirements\": [\n \"<string>\"\n ],\n \"has_guardrails\": true,\n \"multi_agent\": true,\n \"has_persistent_memory\": true,\n \"forbidden_topics\": [\n \"<string>\"\n ]\n },\n \"version\": 123,\n \"profile_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"model_id": "<string>",
"profile_id": "<string>",
"version": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Change a target's profile
Change content fields by name in changes. A field left out stays as it is; null empties text that may be empty and sets multi_agent or has_persistent_memory back to unknown. A list is replaced whole. Only what the change alters becomes the customer’s, and it applies at once. Send the profile_id and version from the last read; leave both out to create the profile of a target that has none. Ids, who wrote what and dismissals cannot be written, and a value that still holds an [UNTRUSTED:…] fence is refused. Answers with the profile’s id and new version; read the profile for its content.
curl --request PATCH \
--url https://api.enokilabs.ai/api/v1/model/{model_id}/profile \
--header 'Content-Type: application/json' \
--data '
{
"changes": {
"system_prompt": "<string>",
"purpose": "<string>",
"tools": [
{
"name": "<string>",
"description": "<string>",
"parameters": {}
}
],
"forbidden_actions": [
"<string>"
],
"sensitive_data_types": [
"<string>"
],
"forbidden_data": [
"<string>"
],
"example_identifiers": [
"<string>"
],
"user_types": [
{
"name": "<string>",
"auth_level": "<string>",
"description": "<string>"
}
],
"user_access": "<string>",
"test_account": "<string>",
"public_data": "<string>",
"compliance_requirements": [
"<string>"
],
"has_guardrails": true,
"multi_agent": true,
"has_persistent_memory": true,
"forbidden_topics": [
"<string>"
]
},
"version": 123,
"profile_id": "<string>"
}
'import requests
url = "https://api.enokilabs.ai/api/v1/model/{model_id}/profile"
payload = {
"changes": {
"system_prompt": "<string>",
"purpose": "<string>",
"tools": [
{
"name": "<string>",
"description": "<string>",
"parameters": {}
}
],
"forbidden_actions": ["<string>"],
"sensitive_data_types": ["<string>"],
"forbidden_data": ["<string>"],
"example_identifiers": ["<string>"],
"user_types": [
{
"name": "<string>",
"auth_level": "<string>",
"description": "<string>"
}
],
"user_access": "<string>",
"test_account": "<string>",
"public_data": "<string>",
"compliance_requirements": ["<string>"],
"has_guardrails": True,
"multi_agent": True,
"has_persistent_memory": True,
"forbidden_topics": ["<string>"]
},
"version": 123,
"profile_id": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
changes: {
system_prompt: '<string>',
purpose: '<string>',
tools: [{name: '<string>', description: '<string>', parameters: {}}],
forbidden_actions: ['<string>'],
sensitive_data_types: ['<string>'],
forbidden_data: ['<string>'],
example_identifiers: ['<string>'],
user_types: [{name: '<string>', auth_level: '<string>', description: '<string>'}],
user_access: '<string>',
test_account: '<string>',
public_data: '<string>',
compliance_requirements: ['<string>'],
has_guardrails: true,
multi_agent: true,
has_persistent_memory: true,
forbidden_topics: ['<string>']
},
version: 123,
profile_id: '<string>'
})
};
fetch('https://api.enokilabs.ai/api/v1/model/{model_id}/profile', 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.enokilabs.ai/api/v1/model/{model_id}/profile",
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([
'changes' => [
'system_prompt' => '<string>',
'purpose' => '<string>',
'tools' => [
[
'name' => '<string>',
'description' => '<string>',
'parameters' => [
]
]
],
'forbidden_actions' => [
'<string>'
],
'sensitive_data_types' => [
'<string>'
],
'forbidden_data' => [
'<string>'
],
'example_identifiers' => [
'<string>'
],
'user_types' => [
[
'name' => '<string>',
'auth_level' => '<string>',
'description' => '<string>'
]
],
'user_access' => '<string>',
'test_account' => '<string>',
'public_data' => '<string>',
'compliance_requirements' => [
'<string>'
],
'has_guardrails' => true,
'multi_agent' => true,
'has_persistent_memory' => true,
'forbidden_topics' => [
'<string>'
]
],
'version' => 123,
'profile_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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.enokilabs.ai/api/v1/model/{model_id}/profile"
payload := strings.NewReader("{\n \"changes\": {\n \"system_prompt\": \"<string>\",\n \"purpose\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"parameters\": {}\n }\n ],\n \"forbidden_actions\": [\n \"<string>\"\n ],\n \"sensitive_data_types\": [\n \"<string>\"\n ],\n \"forbidden_data\": [\n \"<string>\"\n ],\n \"example_identifiers\": [\n \"<string>\"\n ],\n \"user_types\": [\n {\n \"name\": \"<string>\",\n \"auth_level\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"user_access\": \"<string>\",\n \"test_account\": \"<string>\",\n \"public_data\": \"<string>\",\n \"compliance_requirements\": [\n \"<string>\"\n ],\n \"has_guardrails\": true,\n \"multi_agent\": true,\n \"has_persistent_memory\": true,\n \"forbidden_topics\": [\n \"<string>\"\n ]\n },\n \"version\": 123,\n \"profile_id\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
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.enokilabs.ai/api/v1/model/{model_id}/profile")
.header("Content-Type", "application/json")
.body("{\n \"changes\": {\n \"system_prompt\": \"<string>\",\n \"purpose\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"parameters\": {}\n }\n ],\n \"forbidden_actions\": [\n \"<string>\"\n ],\n \"sensitive_data_types\": [\n \"<string>\"\n ],\n \"forbidden_data\": [\n \"<string>\"\n ],\n \"example_identifiers\": [\n \"<string>\"\n ],\n \"user_types\": [\n {\n \"name\": \"<string>\",\n \"auth_level\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"user_access\": \"<string>\",\n \"test_account\": \"<string>\",\n \"public_data\": \"<string>\",\n \"compliance_requirements\": [\n \"<string>\"\n ],\n \"has_guardrails\": true,\n \"multi_agent\": true,\n \"has_persistent_memory\": true,\n \"forbidden_topics\": [\n \"<string>\"\n ]\n },\n \"version\": 123,\n \"profile_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.enokilabs.ai/api/v1/model/{model_id}/profile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"changes\": {\n \"system_prompt\": \"<string>\",\n \"purpose\": \"<string>\",\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"parameters\": {}\n }\n ],\n \"forbidden_actions\": [\n \"<string>\"\n ],\n \"sensitive_data_types\": [\n \"<string>\"\n ],\n \"forbidden_data\": [\n \"<string>\"\n ],\n \"example_identifiers\": [\n \"<string>\"\n ],\n \"user_types\": [\n {\n \"name\": \"<string>\",\n \"auth_level\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"user_access\": \"<string>\",\n \"test_account\": \"<string>\",\n \"public_data\": \"<string>\",\n \"compliance_requirements\": [\n \"<string>\"\n ],\n \"has_guardrails\": true,\n \"multi_agent\": true,\n \"has_persistent_memory\": true,\n \"forbidden_topics\": [\n \"<string>\"\n ]\n },\n \"version\": 123,\n \"profile_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"model_id": "<string>",
"profile_id": "<string>",
"version": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Headers
Bearer token with API key
Path Parameters
Body
Change content fields of a target's profile by name.
Content fields to change, by name: every field auto-discovery merges.
A field left out stays as it is. Null empties text that may be empty (system_prompt, user_access, test_account, public_data) and sets multi_agent or has_persistent_memory back to unknown; any other field needs a value. A list is replaced whole, so send every item to keep. Only what the change alters becomes the customer's.
Show child attributes
Show child attributes
The version the change starts from, from the last read. Leave it and profile_id out only to create the profile of a target that has none.
The profile_id of the last read, sent with the version: a profile deleted and made again starts its versions over, so the pair names the copy the change was built from.
Response
Successful Response
What a change answers: which profile, and the version it is at now.
Not the content: a key allowed to write is not always allowed to read, and the content is one read away for a key that is.