Get Persona
curl --request GET \
--url https://server.promptwatch.com/api/v2/personas/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://server.promptwatch.com/api/v2/personas/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://server.promptwatch.com/api/v2/personas/{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://server.promptwatch.com/api/v2/personas/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://server.promptwatch.com/api/v2/personas/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://server.promptwatch.com/api/v2/personas/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.promptwatch.com/api/v2/personas/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "6ba7b822-9dad-11d1-80b4-00c04fd430c8",
"name": "Alex — procurement lead",
"description": "Evaluates vendors for mid-market SaaS; cares about ROI and implementation time.",
"ageRange": "35-44",
"educationLevel": "College degree",
"stackablePrompt": "Mid-market procurement lead who compares vendors on implementation time, total cost, and whether the team can run it without a dedicated admin.",
"createdAt": "2026-02-10T12:00:00.000Z",
"updatedAt": "2026-03-20T08:30:00.000Z"
}{
"error": "Unauthorized",
"message": "Missing or invalid X-API-Key header."
}{
"code": "PERSONA_NOT_FOUND",
"message": "Persona not found"
}{
"code": "PERSONA_NOT_FOUND",
"message": "Persona not found"
}Personas
Get Persona
Get a specific persona by ID
GET
/
personas
/
{id}
Get Persona
curl --request GET \
--url https://server.promptwatch.com/api/v2/personas/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://server.promptwatch.com/api/v2/personas/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://server.promptwatch.com/api/v2/personas/{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://server.promptwatch.com/api/v2/personas/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://server.promptwatch.com/api/v2/personas/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://server.promptwatch.com/api/v2/personas/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.promptwatch.com/api/v2/personas/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "6ba7b822-9dad-11d1-80b4-00c04fd430c8",
"name": "Alex — procurement lead",
"description": "Evaluates vendors for mid-market SaaS; cares about ROI and implementation time.",
"ageRange": "35-44",
"educationLevel": "College degree",
"stackablePrompt": "Mid-market procurement lead who compares vendors on implementation time, total cost, and whether the team can run it without a dedicated admin.",
"createdAt": "2026-02-10T12:00:00.000Z",
"updatedAt": "2026-03-20T08:30:00.000Z"
}{
"error": "Unauthorized",
"message": "Missing or invalid X-API-Key header."
}{
"code": "PERSONA_NOT_FOUND",
"message": "Persona not found"
}{
"code": "PERSONA_NOT_FOUND",
"message": "Persona not found"
}Authorizations
API key for authentication. Get yours from the Promptwatch dashboard under Settings > API Keys.
Path Parameters
Persona ID
Response
Default Response
Persona unique identifier
Persona name
Persona description
Persona prompt used for tracked prompts when persona stacking is enabled.
Creation timestamp
Last update timestamp
Target age range
Education level