curl --request PATCH \
--url https://api.arize.com/v2/users/{user_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Jane Smith",
"is_developer": false
}
'import requests
url = "https://api.arize.com/v2/users/{user_id}"
payload = {
"name": "Jane Smith",
"is_developer": 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({name: 'Jane Smith', is_developer: false})
};
fetch('https://api.arize.com/v2/users/{user_id}', 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.arize.com/v2/users/{user_id}",
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([
'name' => 'Jane Smith',
'is_developer' => 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.arize.com/v2/users/{user_id}"
payload := strings.NewReader("{\n \"name\": \"Jane Smith\",\n \"is_developer\": 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.arize.com/v2/users/{user_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Jane Smith\",\n \"is_developer\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/users/{user_id}")
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 \"name\": \"Jane Smith\",\n \"is_developer\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "VXNlcjoxMjM0NQ==",
"name": "Jane Smith",
"email": "jane.smith@example.com",
"created_at": "2024-01-01T12:00:00Z",
"status": "ACTIVE",
"role": {
"type": "PREDEFINED",
"name": "MEMBER"
},
"is_developer": true
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 403,
"title": "Access forbidden",
"detail": "You do not have permission to access this resource.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#access-forbidden"
}{
"status": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 422,
"title": "Unprocessable Entity",
"detail": "One or more fields failed validation.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#unprocessable-entity"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}Update a user
Update a user’s display name and/or developer permission.
Payload Requirements
- At least one of
nameoris_developermust be provided. namemust be 1–255 characters. Leading and trailing whitespace is stripped before validation; whitespace-only values (e.g." ") are rejected with 400.- Setting
is_developerto its current value is a no-op (idempotent).
Example valid requests:
{ "name": "Jane Smith" }
{ "is_developer": true }
{ "name": "Jane Smith", "is_developer": false }
Example invalid requests:
{}— at least one field must be provided{ "name": " " }— name cannot be whitespace only
Updating name requires account admin role or USER_UPDATE permission.
Updating is_developer requires account admin role. Callers without account admin that include
is_developer in the body receive 403.
curl --request PATCH \
--url https://api.arize.com/v2/users/{user_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Jane Smith",
"is_developer": false
}
'import requests
url = "https://api.arize.com/v2/users/{user_id}"
payload = {
"name": "Jane Smith",
"is_developer": 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({name: 'Jane Smith', is_developer: false})
};
fetch('https://api.arize.com/v2/users/{user_id}', 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.arize.com/v2/users/{user_id}",
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([
'name' => 'Jane Smith',
'is_developer' => 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.arize.com/v2/users/{user_id}"
payload := strings.NewReader("{\n \"name\": \"Jane Smith\",\n \"is_developer\": 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.arize.com/v2/users/{user_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Jane Smith\",\n \"is_developer\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/users/{user_id}")
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 \"name\": \"Jane Smith\",\n \"is_developer\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "VXNlcjoxMjM0NQ==",
"name": "Jane Smith",
"email": "jane.smith@example.com",
"created_at": "2024-01-01T12:00:00Z",
"status": "ACTIVE",
"role": {
"type": "PREDEFINED",
"name": "MEMBER"
},
"is_developer": true
}{
"status": 400,
"title": "Invalid request parameters",
"detail": "The 'name' field is required and must be a non-empty string.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request"
}{
"status": 401,
"title": "Authentication required",
"detail": "You must be authenticated to access this resource.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#authentication-required"
}{
"status": 403,
"title": "Access forbidden",
"detail": "You do not have permission to access this resource.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#access-forbidden"
}{
"status": 404,
"title": "Resource not found",
"detail": "The requested resource with ID '12345' was not found.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#resource-not-found"
}{
"status": 422,
"title": "Unprocessable Entity",
"detail": "One or more fields failed validation.",
"instance": "/resource/12345",
"type": "https://arize.com/docs/ax/rest-reference/errors#unprocessable-entity"
}{
"status": 429,
"title": "Rate limit exceeded",
"detail": "You have exceeded the allowed number of requests. Please try again later.",
"instance": "/resource",
"type": "https://arize.com/docs/ax/rest-reference/errors#rate-limit-exceeded"
}Authorizations
Most Arize AI endpoints require authentication. For those endpoints that require authentication, include your API key in the request header using the format
Path Parameters
The unique user identifier (base64) A universally unique identifier (base64-encoded opaque string).
"RW50aXR5OjEyMzQ1"
Body
Body containing user update parameters. At least one field must be provided.
Response
An account user object
An account user represents a member of the account. Users can be listed, updated, or removed from the account.
A universally unique identifier (base64-encoded opaque string).
"RW50aXR5OjEyMzQ1"
Display name of the user
An email address
"user@example.com"
Timestamp for when the user was created
Current status of the user in the account.
ACTIVE: User has verified their email and can access the platform.INVITED: User has been invited and their verification token is still valid.EXPIRED: User was invited but their verification token has expired or is missing. A new invite is required.
ACTIVE, INVITED, EXPIRED An account-level role assignment. Discriminated by type:
PREDEFINED: one of the predefined roles (admin,member,annotator)CUSTOM: a custom RBAC role identified by its ID
Note: CUSTOM role assignments are not yet supported and are reserved for future use.
- Option 1
- Option 2
Show child attributes
Show child attributes
Whether the user has developer permissions (can use the Arize API)
Was this page helpful?