: "${REFLECTIONS_KEY:?Set REFLECTIONS_KEY before running this example}"
curl --fail-with-body --max-time 30 'https://app.reflections.ai/v1/talent/tal_9t0wxyhk5zba2q8v1m3n7p4r6s' \
-H "Authorization: Bearer $REFLECTIONS_KEY" \
-H "Reflections-Version: 2026-10-15"import { env, exit } from "node:process";
const apiKey = env.REFLECTIONS_KEY;
if (!apiKey) throw new Error("Set REFLECTIONS_KEY before running this example");
const response = await fetch("https://app.reflections.ai/v1/talent/tal_9t0wxyhk5zba2q8v1m3n7p4r6s", {
method: "GET",
headers: {
Authorization: `Bearer ${apiKey}`,
"Reflections-Version": "2026-10-15",
},
signal: AbortSignal.timeout(30_000),
});
const responseBody = await response.text();
if (!response.ok) {
console.error(`HTTP ${response.status}: ${responseBody}`);
exit(1);
}
console.log(responseBody);
import os
from urllib.error import HTTPError
from urllib.request import Request, urlopen
apiKey = os.environ["REFLECTIONS_KEY"]
if not apiKey:
raise ValueError("Set REFLECTIONS_KEY before running this example")
headers = {
"Authorization": f"Bearer {apiKey}",
"Reflections-Version": "2026-10-15",
}
request = Request("https://app.reflections.ai/v1/talent/tal_9t0wxyhk5zba2q8v1m3n7p4r6s",
method="GET", headers=headers)
try:
with urlopen(request, timeout=30) as response:
print(response.read().decode("utf-8"))
except HTTPError as error:
error_body = error.read().decode("utf-8")
raise RuntimeError(f"HTTP {error.code}: {error_body}") from error
package main
import (
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
apiKey := os.Getenv("REFLECTIONS_KEY")
if apiKey == "" {
panic("Set REFLECTIONS_KEY before running this example")
}
request, err := http.NewRequest("GET", "https://app.reflections.ai/v1/talent/tal_9t0wxyhk5zba2q8v1m3n7p4r6s", nil)
if err != nil {
panic(err)
}
request.Header.Set("Authorization", "Bearer " + apiKey)
request.Header.Set("Reflections-Version", "2026-10-15")
client := &http.Client{Timeout: 30 * time.Second}
response, err := client.Do(request)
if err != nil {
panic(err)
}
defer response.Body.Close()
responseBody, err := io.ReadAll(response.Body)
if err != nil {
panic(err)
}
if response.StatusCode < 200 || response.StatusCode >= 300 {
panic(fmt.Sprintf("HTTP %d: %s", response.StatusCode, responseBody))
}
fmt.Print(string(responseBody))
}
{
"id": "tal_9t0wxyhk5zba2q8v1m3n7p4r6s",
"object": "talent",
"livemode": true,
"name": "Maya Okafor",
"aliases": [
"Maya O."
],
"status": "active",
"verification": {
"verified": true,
"method": "id_document",
"verified_at": "2026-06-11T09:30:00Z"
},
"protection": {
"references": true,
"modalities": [
"image",
"video",
"speech"
]
},
"posture": {
"default": "license_required",
"accepts_requests": true,
"rules": [
{
"purpose": "political",
"declaration": "prohibited"
},
{
"kind": "endorsement",
"purpose": "advertising",
"declaration": "license_required"
},
{
"modality": "text",
"kind": "reference",
"declaration": "allowed",
"obligations": []
}
]
},
"representation": [
{
"account": "acct_6m8n0p2q4r6s8t0v2w4x6y8z0b",
"name": "Summit Talent Management",
"role": "manager",
"powers": [
"issue_licenses",
"review_outputs",
"revoke",
"receive_statements"
]
}
],
"facets": [
{
"id": "fct_5zba2q8v1m3n7p4r6s9t0wxyhk",
"type": "likeness",
"label": "Studio likeness",
"status": "ready"
},
{
"id": "fct_v1m3n7p4r6s9t0wxyhk5zba2q8",
"type": "voice",
"label": "Speaking voice",
"status": "ready"
},
{
"id": "fct_q4r6s9t0wxyhk5zba2q8v1m3n7",
"type": "name",
"label": "Name",
"status": "ready"
}
],
"hcs_subject_id": null,
"profile_url": "https://app.reflections.ai/t/maya-okafor",
"created_at": "2026-06-11T09:00:00Z",
"updated_at": "2026-10-01T12:00:00Z"
}{
"type": "https://docs.reflections.ai/errors/invalid_api_key",
"title": "The API key is not valid",
"status": 401,
"code": "invalid_api_key",
"request_id": "req_8f2k4m6p8r0t2v4x6z8b0d2f4h"
}{
"type": "https://docs.reflections.ai/errors/account_not_connected",
"title": "The licensee has not connected your platform",
"status": 403,
"code": "account_not_connected",
"detail": "acct_2q8v1m3n7p4r6s9t0wxyhk5zba has no active connection with your account.",
"request_id": "req_8f2k4m6p8r0t2v4x6z8b0d2f4h"
}{
"type": "https://docs.reflections.ai/errors/resource_not_found",
"title": "No such object",
"status": 404,
"code": "resource_not_found",
"request_id": "req_8f2k4m6p8r0t2v4x6z8b0d2f4h"
}{
"type": "https://docs.reflections.ai/errors/rate_limited",
"title": "Too many requests",
"status": 429,
"code": "rate_limited",
"request_id": "req_8f2k4m6p8r0t2v4x6z8b0d2f4h"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "invalid_request",
"request_id": "<string>",
"detail": "<string>",
"param": "<string>",
"doc_url": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "invalid_request",
"request_id": "<string>",
"detail": "<string>",
"param": "<string>",
"doc_url": "<string>"
}Retrieve a talent
Test mode available. Live mode unavailable. Uses fictional sandbox data only. See Sandbox for the supported forms and limits.
Returns a talent with their public posture, verification and facets.
Restricted keys need talent:read.
: "${REFLECTIONS_KEY:?Set REFLECTIONS_KEY before running this example}"
curl --fail-with-body --max-time 30 'https://app.reflections.ai/v1/talent/tal_9t0wxyhk5zba2q8v1m3n7p4r6s' \
-H "Authorization: Bearer $REFLECTIONS_KEY" \
-H "Reflections-Version: 2026-10-15"import { env, exit } from "node:process";
const apiKey = env.REFLECTIONS_KEY;
if (!apiKey) throw new Error("Set REFLECTIONS_KEY before running this example");
const response = await fetch("https://app.reflections.ai/v1/talent/tal_9t0wxyhk5zba2q8v1m3n7p4r6s", {
method: "GET",
headers: {
Authorization: `Bearer ${apiKey}`,
"Reflections-Version": "2026-10-15",
},
signal: AbortSignal.timeout(30_000),
});
const responseBody = await response.text();
if (!response.ok) {
console.error(`HTTP ${response.status}: ${responseBody}`);
exit(1);
}
console.log(responseBody);
import os
from urllib.error import HTTPError
from urllib.request import Request, urlopen
apiKey = os.environ["REFLECTIONS_KEY"]
if not apiKey:
raise ValueError("Set REFLECTIONS_KEY before running this example")
headers = {
"Authorization": f"Bearer {apiKey}",
"Reflections-Version": "2026-10-15",
}
request = Request("https://app.reflections.ai/v1/talent/tal_9t0wxyhk5zba2q8v1m3n7p4r6s",
method="GET", headers=headers)
try:
with urlopen(request, timeout=30) as response:
print(response.read().decode("utf-8"))
except HTTPError as error:
error_body = error.read().decode("utf-8")
raise RuntimeError(f"HTTP {error.code}: {error_body}") from error
package main
import (
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
apiKey := os.Getenv("REFLECTIONS_KEY")
if apiKey == "" {
panic("Set REFLECTIONS_KEY before running this example")
}
request, err := http.NewRequest("GET", "https://app.reflections.ai/v1/talent/tal_9t0wxyhk5zba2q8v1m3n7p4r6s", nil)
if err != nil {
panic(err)
}
request.Header.Set("Authorization", "Bearer " + apiKey)
request.Header.Set("Reflections-Version", "2026-10-15")
client := &http.Client{Timeout: 30 * time.Second}
response, err := client.Do(request)
if err != nil {
panic(err)
}
defer response.Body.Close()
responseBody, err := io.ReadAll(response.Body)
if err != nil {
panic(err)
}
if response.StatusCode < 200 || response.StatusCode >= 300 {
panic(fmt.Sprintf("HTTP %d: %s", response.StatusCode, responseBody))
}
fmt.Print(string(responseBody))
}
{
"id": "tal_9t0wxyhk5zba2q8v1m3n7p4r6s",
"object": "talent",
"livemode": true,
"name": "Maya Okafor",
"aliases": [
"Maya O."
],
"status": "active",
"verification": {
"verified": true,
"method": "id_document",
"verified_at": "2026-06-11T09:30:00Z"
},
"protection": {
"references": true,
"modalities": [
"image",
"video",
"speech"
]
},
"posture": {
"default": "license_required",
"accepts_requests": true,
"rules": [
{
"purpose": "political",
"declaration": "prohibited"
},
{
"kind": "endorsement",
"purpose": "advertising",
"declaration": "license_required"
},
{
"modality": "text",
"kind": "reference",
"declaration": "allowed",
"obligations": []
}
]
},
"representation": [
{
"account": "acct_6m8n0p2q4r6s8t0v2w4x6y8z0b",
"name": "Summit Talent Management",
"role": "manager",
"powers": [
"issue_licenses",
"review_outputs",
"revoke",
"receive_statements"
]
}
],
"facets": [
{
"id": "fct_5zba2q8v1m3n7p4r6s9t0wxyhk",
"type": "likeness",
"label": "Studio likeness",
"status": "ready"
},
{
"id": "fct_v1m3n7p4r6s9t0wxyhk5zba2q8",
"type": "voice",
"label": "Speaking voice",
"status": "ready"
},
{
"id": "fct_q4r6s9t0wxyhk5zba2q8v1m3n7",
"type": "name",
"label": "Name",
"status": "ready"
}
],
"hcs_subject_id": null,
"profile_url": "https://app.reflections.ai/t/maya-okafor",
"created_at": "2026-06-11T09:00:00Z",
"updated_at": "2026-10-01T12:00:00Z"
}{
"type": "https://docs.reflections.ai/errors/invalid_api_key",
"title": "The API key is not valid",
"status": 401,
"code": "invalid_api_key",
"request_id": "req_8f2k4m6p8r0t2v4x6z8b0d2f4h"
}{
"type": "https://docs.reflections.ai/errors/account_not_connected",
"title": "The licensee has not connected your platform",
"status": 403,
"code": "account_not_connected",
"detail": "acct_2q8v1m3n7p4r6s9t0wxyhk5zba has no active connection with your account.",
"request_id": "req_8f2k4m6p8r0t2v4x6z8b0d2f4h"
}{
"type": "https://docs.reflections.ai/errors/resource_not_found",
"title": "No such object",
"status": 404,
"code": "resource_not_found",
"request_id": "req_8f2k4m6p8r0t2v4x6z8b0d2f4h"
}{
"type": "https://docs.reflections.ai/errors/rate_limited",
"title": "Too many requests",
"status": 429,
"code": "rate_limited",
"request_id": "req_8f2k4m6p8r0t2v4x6z8b0d2f4h"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "invalid_request",
"request_id": "<string>",
"detail": "<string>",
"param": "<string>",
"doc_url": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "invalid_request",
"request_id": "<string>",
"detail": "<string>",
"param": "<string>",
"doc_url": "<string>"
}Authorizations
Your secret key, rk_test_… or rk_live_…, sent as Authorization: Bearer <key>. Keep it
on your server. Restricted keys carry only the scopes you give them.
Headers
The dated API version. Defaults to the version your account is pinned to.
"2026-10-15"
Path Parameters
The talent's ID, tal_….
^tal_[0-9a-hjkmnp-tv-z]{26}$Response
The talent.
Unique identifier, prefixed tal_.
^tal_[0-9a-hjkmnp-tv-z]{26}$Always talent.
"talent"true in live mode, false in test mode.
The name the talent confirmed.
Other names the talent confirmed, such as a stage name or a transliteration.
withdrawn: the talent withdrew consent everywhere. Every check denies with license_revoked or talent_prohibits.
active, withdrawn Proves a real adult controls this talent's account and signed their licenses. It does not prove who owns every right in the name.
Show child attributes
Show child attributes
How references are matched to this talent.
Show child attributes
Show child attributes
The talent's standing public answers for uses with no license.
Show child attributes
Show child attributes
Each facet's id, type, label and status. Retrieve a facet for the rest.
Show child attributes
Show child attributes
When the talent's record was created.
Accounts with a mandate to act for the talent, with each one's role and powers.
Show child attributes
Show child attributes
The talent's subject ID in the Human Consent Registry, when registered there.
The talent's public page.
When the talent last changed.