curl --request POST \
--url https://api.arize.com/v2/prompts/{prompt_id}/versions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"commit_message": "Updated system prompt for better responses",
"input_variable_format": "F_STRING",
"provider": "OPEN_AI",
"model": "gpt-4",
"messages": [
{
"role": "SYSTEM",
"content": "You are a helpful assistant."
},
{
"role": "USER",
"content": "Hello, {name}!"
}
]
}
'import requests
url = "https://api.arize.com/v2/prompts/{prompt_id}/versions"
payload = {
"commit_message": "Updated system prompt for better responses",
"input_variable_format": "F_STRING",
"provider": "OPEN_AI",
"model": "gpt-4",
"messages": [
{
"role": "SYSTEM",
"content": "You are a helpful assistant."
},
{
"role": "USER",
"content": "Hello, {name}!"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
commit_message: 'Updated system prompt for better responses',
input_variable_format: 'F_STRING',
provider: 'OPEN_AI',
model: 'gpt-4',
messages: [
{role: 'SYSTEM', content: 'You are a helpful assistant.'},
{role: 'USER', content: 'Hello, {name}!'}
]
})
};
fetch('https://api.arize.com/v2/prompts/{prompt_id}/versions', 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/prompts/{prompt_id}/versions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'commit_message' => 'Updated system prompt for better responses',
'input_variable_format' => 'F_STRING',
'provider' => 'OPEN_AI',
'model' => 'gpt-4',
'messages' => [
[
'role' => 'SYSTEM',
'content' => 'You are a helpful assistant.'
],
[
'role' => 'USER',
'content' => 'Hello, {name}!'
]
]
]),
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/prompts/{prompt_id}/versions"
payload := strings.NewReader("{\n \"commit_message\": \"Updated system prompt for better responses\",\n \"input_variable_format\": \"F_STRING\",\n \"provider\": \"OPEN_AI\",\n \"model\": \"gpt-4\",\n \"messages\": [\n {\n \"role\": \"SYSTEM\",\n \"content\": \"You are a helpful assistant.\"\n },\n {\n \"role\": \"USER\",\n \"content\": \"Hello, {name}!\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.arize.com/v2/prompts/{prompt_id}/versions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"commit_message\": \"Updated system prompt for better responses\",\n \"input_variable_format\": \"F_STRING\",\n \"provider\": \"OPEN_AI\",\n \"model\": \"gpt-4\",\n \"messages\": [\n {\n \"role\": \"SYSTEM\",\n \"content\": \"You are a helpful assistant.\"\n },\n {\n \"role\": \"USER\",\n \"content\": \"Hello, {name}!\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/prompts/{prompt_id}/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"commit_message\": \"Updated system prompt for better responses\",\n \"input_variable_format\": \"F_STRING\",\n \"provider\": \"OPEN_AI\",\n \"model\": \"gpt-4\",\n \"messages\": [\n {\n \"role\": \"SYSTEM\",\n \"content\": \"You are a helpful assistant.\"\n },\n {\n \"role\": \"USER\",\n \"content\": \"Hello, {name}!\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "pv_001",
"prompt_id": "prompt_001",
"commit_hash": "abc123def456",
"commit_message": "Updated system prompt",
"messages": [
{
"role": "SYSTEM",
"content": "You are a helpful assistant."
},
{
"role": "USER",
"content": "Hello, {name}!"
}
],
"input_variable_format": "F_STRING",
"provider": "OPEN_AI",
"model": "gpt-4",
"invocation_params": {
"temperature": 0.7,
"max_tokens": 1000
},
"provider_params": {},
"created_at": "2024-01-02T12:00:00Z",
"created_by_user_id": "user_12345",
"labels": [
"production",
"staging"
]
}{
"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"
}Create a prompt version
Create a new version of an existing prompt.
Payload Requirements
- A
commit_messageis required. - At least one message is required in
messages. - Do not include system-managed fields on input:
id,commit_hash,created_at,created_by_user_id. Requests that contain these fields will be rejected. provideris required.input_variable_formatdefaults toF_STRINGif not provided.
Valid example (create)
{
"commit_message": "Updated system prompt for better responses",
"input_variable_format": "F_STRING",
"provider": "OPEN_AI",
"model": "gpt-4",
"messages": [
{
"role": "SYSTEM",
"content": "You are a helpful assistant."
},
{
"role": "USER",
"content": "Hello, {name}!"
}
]
}
Invalid example (missing required commit_message)
{
"input_variable_format": "F_STRING",
"provider": "OPEN_AI",
"messages": [
{
"role": "USER",
"content": "Hello!"
}
]
}
curl --request POST \
--url https://api.arize.com/v2/prompts/{prompt_id}/versions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"commit_message": "Updated system prompt for better responses",
"input_variable_format": "F_STRING",
"provider": "OPEN_AI",
"model": "gpt-4",
"messages": [
{
"role": "SYSTEM",
"content": "You are a helpful assistant."
},
{
"role": "USER",
"content": "Hello, {name}!"
}
]
}
'import requests
url = "https://api.arize.com/v2/prompts/{prompt_id}/versions"
payload = {
"commit_message": "Updated system prompt for better responses",
"input_variable_format": "F_STRING",
"provider": "OPEN_AI",
"model": "gpt-4",
"messages": [
{
"role": "SYSTEM",
"content": "You are a helpful assistant."
},
{
"role": "USER",
"content": "Hello, {name}!"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
commit_message: 'Updated system prompt for better responses',
input_variable_format: 'F_STRING',
provider: 'OPEN_AI',
model: 'gpt-4',
messages: [
{role: 'SYSTEM', content: 'You are a helpful assistant.'},
{role: 'USER', content: 'Hello, {name}!'}
]
})
};
fetch('https://api.arize.com/v2/prompts/{prompt_id}/versions', 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/prompts/{prompt_id}/versions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'commit_message' => 'Updated system prompt for better responses',
'input_variable_format' => 'F_STRING',
'provider' => 'OPEN_AI',
'model' => 'gpt-4',
'messages' => [
[
'role' => 'SYSTEM',
'content' => 'You are a helpful assistant.'
],
[
'role' => 'USER',
'content' => 'Hello, {name}!'
]
]
]),
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/prompts/{prompt_id}/versions"
payload := strings.NewReader("{\n \"commit_message\": \"Updated system prompt for better responses\",\n \"input_variable_format\": \"F_STRING\",\n \"provider\": \"OPEN_AI\",\n \"model\": \"gpt-4\",\n \"messages\": [\n {\n \"role\": \"SYSTEM\",\n \"content\": \"You are a helpful assistant.\"\n },\n {\n \"role\": \"USER\",\n \"content\": \"Hello, {name}!\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.arize.com/v2/prompts/{prompt_id}/versions")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"commit_message\": \"Updated system prompt for better responses\",\n \"input_variable_format\": \"F_STRING\",\n \"provider\": \"OPEN_AI\",\n \"model\": \"gpt-4\",\n \"messages\": [\n {\n \"role\": \"SYSTEM\",\n \"content\": \"You are a helpful assistant.\"\n },\n {\n \"role\": \"USER\",\n \"content\": \"Hello, {name}!\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arize.com/v2/prompts/{prompt_id}/versions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"commit_message\": \"Updated system prompt for better responses\",\n \"input_variable_format\": \"F_STRING\",\n \"provider\": \"OPEN_AI\",\n \"model\": \"gpt-4\",\n \"messages\": [\n {\n \"role\": \"SYSTEM\",\n \"content\": \"You are a helpful assistant.\"\n },\n {\n \"role\": \"USER\",\n \"content\": \"Hello, {name}!\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "pv_001",
"prompt_id": "prompt_001",
"commit_hash": "abc123def456",
"commit_message": "Updated system prompt",
"messages": [
{
"role": "SYSTEM",
"content": "You are a helpful assistant."
},
{
"role": "USER",
"content": "Hello, {name}!"
}
],
"input_variable_format": "F_STRING",
"provider": "OPEN_AI",
"model": "gpt-4",
"invocation_params": {
"temperature": 0.7,
"max_tokens": 1000
},
"provider_params": {},
"created_at": "2024-01-02T12:00:00Z",
"created_by_user_id": "user_12345",
"labels": [
"production",
"staging"
]
}{
"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 prompt identifier (base64) A universally unique identifier (base64-encoded opaque string).
"RW50aXR5OjEyMzQ1"
Body
Body containing prompt version creation parameters
Prompt version creation parameters.
Commit message describing this version
The LLM provider to use
OPEN_AI, AZURE_OPEN_AI, AWS_BEDROCK, VERTEX_AI, ANTHROPIC, CUSTOM The messages that make up the prompt template
1Show child attributes
Show child attributes
The format for input variables in the prompt messages. Defaults to F_STRING if not provided.
F_STRING: Single curly braces ({variable_name})MUSTACHE: Double curly braces ({{variable_name}})NONE: Deprecated. Treated asF_STRING. Will be removed in a future version.
F_STRING, MUSTACHE, NONE The model to use for the call. Optional. If omitted, no default model is set on the version.
Parameters for the LLM invocation. Optional. Defaults to empty (no invocation parameters).
Show child attributes
Show child attributes
Provider-specific parameters. Optional. Defaults to empty (no provider-specific parameters).
Show child attributes
Show child attributes
Response
A prompt version object
A prompt version represents a specific snapshot of a prompt's configuration. Each version captures the messages, model settings, and parameters at a point in time. Versions are immutable once created and are identified by a commit hash.
The prompt version ID
The prompt ID this version belongs to
The commit hash of this version
The commit message describing the changes in this version
The messages that make up the prompt template
Show child attributes
Show child attributes
The format for input variables in the prompt messages. Defaults to F_STRING if not provided.
F_STRING: Single curly braces ({variable_name})MUSTACHE: Double curly braces ({{variable_name}})NONE: Deprecated. Treated asF_STRING. Will be removed in a future version.
F_STRING, MUSTACHE, NONE The LLM provider to use
OPEN_AI, AZURE_OPEN_AI, AWS_BEDROCK, VERTEX_AI, ANTHROPIC, CUSTOM The model to use for the call
When the version was created
The user ID of the user who created this version
LLM invocation parameters for this version. When absent, no invocation parameters were set on this version.
Show child attributes
Show child attributes
Provider-specific parameters for this version. When absent, no provider-specific parameters were set on this version.
Show child attributes
Show child attributes
Label names currently pointing to this version (e.g., "production", "staging"). Labels are case-sensitive.
Was this page helpful?