curl --request POST \
--url https://api.pyai.com/v1/agents/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"persona_system_prompt": "<string>",
"greeting": "<string>",
"greeting_variants": [
"<string>"
],
"voice_id": "<string>",
"voice_instruct": "<string>",
"brain_model": "<string>",
"barge_sensitivity": "<string>",
"ack_mode": "<string>",
"recordings_enabled": true,
"consent_line": "<string>",
"metadata": {},
"vocabulary": [
"<string>"
],
"keyterms": [
"<string>"
],
"goals": [
"<string>"
],
"extraction_schema": {},
"extraction_webhook_url": "<string>",
"tools": [
{
"tool_id": "<string>",
"enabled": true,
"config": {},
"name": "<string>",
"description": "<string>",
"input_schema": {}
}
],
"continuity": true
}
'import requests
url = "https://api.pyai.com/v1/agents/{id}"
payload = {
"name": "<string>",
"persona_system_prompt": "<string>",
"greeting": "<string>",
"greeting_variants": ["<string>"],
"voice_id": "<string>",
"voice_instruct": "<string>",
"brain_model": "<string>",
"barge_sensitivity": "<string>",
"ack_mode": "<string>",
"recordings_enabled": True,
"consent_line": "<string>",
"metadata": {},
"vocabulary": ["<string>"],
"keyterms": ["<string>"],
"goals": ["<string>"],
"extraction_schema": {},
"extraction_webhook_url": "<string>",
"tools": [
{
"tool_id": "<string>",
"enabled": True,
"config": {},
"name": "<string>",
"description": "<string>",
"input_schema": {}
}
],
"continuity": True
}
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({
name: '<string>',
persona_system_prompt: '<string>',
greeting: '<string>',
greeting_variants: ['<string>'],
voice_id: '<string>',
voice_instruct: '<string>',
brain_model: '<string>',
barge_sensitivity: '<string>',
ack_mode: '<string>',
recordings_enabled: true,
consent_line: '<string>',
metadata: {},
vocabulary: ['<string>'],
keyterms: ['<string>'],
goals: ['<string>'],
extraction_schema: {},
extraction_webhook_url: '<string>',
tools: [
{
tool_id: '<string>',
enabled: true,
config: {},
name: '<string>',
description: '<string>',
input_schema: {}
}
],
continuity: true
})
};
fetch('https://api.pyai.com/v1/agents/{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.pyai.com/v1/agents/{id}",
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([
'name' => '<string>',
'persona_system_prompt' => '<string>',
'greeting' => '<string>',
'greeting_variants' => [
'<string>'
],
'voice_id' => '<string>',
'voice_instruct' => '<string>',
'brain_model' => '<string>',
'barge_sensitivity' => '<string>',
'ack_mode' => '<string>',
'recordings_enabled' => true,
'consent_line' => '<string>',
'metadata' => [
],
'vocabulary' => [
'<string>'
],
'keyterms' => [
'<string>'
],
'goals' => [
'<string>'
],
'extraction_schema' => [
],
'extraction_webhook_url' => '<string>',
'tools' => [
[
'tool_id' => '<string>',
'enabled' => true,
'config' => [
],
'name' => '<string>',
'description' => '<string>',
'input_schema' => [
]
]
],
'continuity' => true
]),
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.pyai.com/v1/agents/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"persona_system_prompt\": \"<string>\",\n \"greeting\": \"<string>\",\n \"greeting_variants\": [\n \"<string>\"\n ],\n \"voice_id\": \"<string>\",\n \"voice_instruct\": \"<string>\",\n \"brain_model\": \"<string>\",\n \"barge_sensitivity\": \"<string>\",\n \"ack_mode\": \"<string>\",\n \"recordings_enabled\": true,\n \"consent_line\": \"<string>\",\n \"metadata\": {},\n \"vocabulary\": [\n \"<string>\"\n ],\n \"keyterms\": [\n \"<string>\"\n ],\n \"goals\": [\n \"<string>\"\n ],\n \"extraction_schema\": {},\n \"extraction_webhook_url\": \"<string>\",\n \"tools\": [\n {\n \"tool_id\": \"<string>\",\n \"enabled\": true,\n \"config\": {},\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"input_schema\": {}\n }\n ],\n \"continuity\": true\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.pyai.com/v1/agents/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"persona_system_prompt\": \"<string>\",\n \"greeting\": \"<string>\",\n \"greeting_variants\": [\n \"<string>\"\n ],\n \"voice_id\": \"<string>\",\n \"voice_instruct\": \"<string>\",\n \"brain_model\": \"<string>\",\n \"barge_sensitivity\": \"<string>\",\n \"ack_mode\": \"<string>\",\n \"recordings_enabled\": true,\n \"consent_line\": \"<string>\",\n \"metadata\": {},\n \"vocabulary\": [\n \"<string>\"\n ],\n \"keyterms\": [\n \"<string>\"\n ],\n \"goals\": [\n \"<string>\"\n ],\n \"extraction_schema\": {},\n \"extraction_webhook_url\": \"<string>\",\n \"tools\": [\n {\n \"tool_id\": \"<string>\",\n \"enabled\": true,\n \"config\": {},\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"input_schema\": {}\n }\n ],\n \"continuity\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pyai.com/v1/agents/{id}")
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 \"name\": \"<string>\",\n \"persona_system_prompt\": \"<string>\",\n \"greeting\": \"<string>\",\n \"greeting_variants\": [\n \"<string>\"\n ],\n \"voice_id\": \"<string>\",\n \"voice_instruct\": \"<string>\",\n \"brain_model\": \"<string>\",\n \"barge_sensitivity\": \"<string>\",\n \"ack_mode\": \"<string>\",\n \"recordings_enabled\": true,\n \"consent_line\": \"<string>\",\n \"metadata\": {},\n \"vocabulary\": [\n \"<string>\"\n ],\n \"keyterms\": [\n \"<string>\"\n ],\n \"goals\": [\n \"<string>\"\n ],\n \"extraction_schema\": {},\n \"extraction_webhook_url\": \"<string>\",\n \"tools\": [\n {\n \"tool_id\": \"<string>\",\n \"enabled\": true,\n \"config\": {},\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"input_schema\": {}\n }\n ],\n \"continuity\": true\n}"
response = http.request(request)
puts response.read_body{
"object": "agent",
"agent_id": "agent_7f3a0b12",
"name": "<string>",
"persona_system_prompt": "<string>",
"greeting": "<string>",
"greeting_variants": [
"<string>"
],
"voice_id": "<string>",
"voice_instruct": "<string>",
"brain_model": "default",
"barge_sensitivity": "<string>",
"ack_mode": "<string>",
"idle_check_in": "auto",
"persona_perspective": "agent",
"mode": "default",
"role": "<string>",
"continuity": true,
"recordings_enabled": true,
"consent_line": "<string>",
"language": "en",
"vocabulary": [
"<string>"
],
"keyterms": [
"<string>"
],
"goals": [
"<string>"
],
"metadata": {},
"extraction_schema": {},
"extraction_webhook_url": "<string>",
"tools": [
{
"tool_id": "<string>",
"enabled": true,
"config": {},
"name": "<string>",
"description": "<string>",
"input_schema": {},
"execution": "hosted"
}
],
"created_at": 123
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "invalid_request_error",
"param": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "invalid_request_error",
"param": "<string>"
}
}Update an agent
Partial update: present fields are set, null clears a field, absent fields are untouched. Config edits are live on the agent’s next call.
curl --request POST \
--url https://api.pyai.com/v1/agents/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"persona_system_prompt": "<string>",
"greeting": "<string>",
"greeting_variants": [
"<string>"
],
"voice_id": "<string>",
"voice_instruct": "<string>",
"brain_model": "<string>",
"barge_sensitivity": "<string>",
"ack_mode": "<string>",
"recordings_enabled": true,
"consent_line": "<string>",
"metadata": {},
"vocabulary": [
"<string>"
],
"keyterms": [
"<string>"
],
"goals": [
"<string>"
],
"extraction_schema": {},
"extraction_webhook_url": "<string>",
"tools": [
{
"tool_id": "<string>",
"enabled": true,
"config": {},
"name": "<string>",
"description": "<string>",
"input_schema": {}
}
],
"continuity": true
}
'import requests
url = "https://api.pyai.com/v1/agents/{id}"
payload = {
"name": "<string>",
"persona_system_prompt": "<string>",
"greeting": "<string>",
"greeting_variants": ["<string>"],
"voice_id": "<string>",
"voice_instruct": "<string>",
"brain_model": "<string>",
"barge_sensitivity": "<string>",
"ack_mode": "<string>",
"recordings_enabled": True,
"consent_line": "<string>",
"metadata": {},
"vocabulary": ["<string>"],
"keyterms": ["<string>"],
"goals": ["<string>"],
"extraction_schema": {},
"extraction_webhook_url": "<string>",
"tools": [
{
"tool_id": "<string>",
"enabled": True,
"config": {},
"name": "<string>",
"description": "<string>",
"input_schema": {}
}
],
"continuity": True
}
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({
name: '<string>',
persona_system_prompt: '<string>',
greeting: '<string>',
greeting_variants: ['<string>'],
voice_id: '<string>',
voice_instruct: '<string>',
brain_model: '<string>',
barge_sensitivity: '<string>',
ack_mode: '<string>',
recordings_enabled: true,
consent_line: '<string>',
metadata: {},
vocabulary: ['<string>'],
keyterms: ['<string>'],
goals: ['<string>'],
extraction_schema: {},
extraction_webhook_url: '<string>',
tools: [
{
tool_id: '<string>',
enabled: true,
config: {},
name: '<string>',
description: '<string>',
input_schema: {}
}
],
continuity: true
})
};
fetch('https://api.pyai.com/v1/agents/{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.pyai.com/v1/agents/{id}",
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([
'name' => '<string>',
'persona_system_prompt' => '<string>',
'greeting' => '<string>',
'greeting_variants' => [
'<string>'
],
'voice_id' => '<string>',
'voice_instruct' => '<string>',
'brain_model' => '<string>',
'barge_sensitivity' => '<string>',
'ack_mode' => '<string>',
'recordings_enabled' => true,
'consent_line' => '<string>',
'metadata' => [
],
'vocabulary' => [
'<string>'
],
'keyterms' => [
'<string>'
],
'goals' => [
'<string>'
],
'extraction_schema' => [
],
'extraction_webhook_url' => '<string>',
'tools' => [
[
'tool_id' => '<string>',
'enabled' => true,
'config' => [
],
'name' => '<string>',
'description' => '<string>',
'input_schema' => [
]
]
],
'continuity' => true
]),
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.pyai.com/v1/agents/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"persona_system_prompt\": \"<string>\",\n \"greeting\": \"<string>\",\n \"greeting_variants\": [\n \"<string>\"\n ],\n \"voice_id\": \"<string>\",\n \"voice_instruct\": \"<string>\",\n \"brain_model\": \"<string>\",\n \"barge_sensitivity\": \"<string>\",\n \"ack_mode\": \"<string>\",\n \"recordings_enabled\": true,\n \"consent_line\": \"<string>\",\n \"metadata\": {},\n \"vocabulary\": [\n \"<string>\"\n ],\n \"keyterms\": [\n \"<string>\"\n ],\n \"goals\": [\n \"<string>\"\n ],\n \"extraction_schema\": {},\n \"extraction_webhook_url\": \"<string>\",\n \"tools\": [\n {\n \"tool_id\": \"<string>\",\n \"enabled\": true,\n \"config\": {},\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"input_schema\": {}\n }\n ],\n \"continuity\": true\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.pyai.com/v1/agents/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"persona_system_prompt\": \"<string>\",\n \"greeting\": \"<string>\",\n \"greeting_variants\": [\n \"<string>\"\n ],\n \"voice_id\": \"<string>\",\n \"voice_instruct\": \"<string>\",\n \"brain_model\": \"<string>\",\n \"barge_sensitivity\": \"<string>\",\n \"ack_mode\": \"<string>\",\n \"recordings_enabled\": true,\n \"consent_line\": \"<string>\",\n \"metadata\": {},\n \"vocabulary\": [\n \"<string>\"\n ],\n \"keyterms\": [\n \"<string>\"\n ],\n \"goals\": [\n \"<string>\"\n ],\n \"extraction_schema\": {},\n \"extraction_webhook_url\": \"<string>\",\n \"tools\": [\n {\n \"tool_id\": \"<string>\",\n \"enabled\": true,\n \"config\": {},\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"input_schema\": {}\n }\n ],\n \"continuity\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pyai.com/v1/agents/{id}")
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 \"name\": \"<string>\",\n \"persona_system_prompt\": \"<string>\",\n \"greeting\": \"<string>\",\n \"greeting_variants\": [\n \"<string>\"\n ],\n \"voice_id\": \"<string>\",\n \"voice_instruct\": \"<string>\",\n \"brain_model\": \"<string>\",\n \"barge_sensitivity\": \"<string>\",\n \"ack_mode\": \"<string>\",\n \"recordings_enabled\": true,\n \"consent_line\": \"<string>\",\n \"metadata\": {},\n \"vocabulary\": [\n \"<string>\"\n ],\n \"keyterms\": [\n \"<string>\"\n ],\n \"goals\": [\n \"<string>\"\n ],\n \"extraction_schema\": {},\n \"extraction_webhook_url\": \"<string>\",\n \"tools\": [\n {\n \"tool_id\": \"<string>\",\n \"enabled\": true,\n \"config\": {},\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"input_schema\": {}\n }\n ],\n \"continuity\": true\n}"
response = http.request(request)
puts response.read_body{
"object": "agent",
"agent_id": "agent_7f3a0b12",
"name": "<string>",
"persona_system_prompt": "<string>",
"greeting": "<string>",
"greeting_variants": [
"<string>"
],
"voice_id": "<string>",
"voice_instruct": "<string>",
"brain_model": "default",
"barge_sensitivity": "<string>",
"ack_mode": "<string>",
"idle_check_in": "auto",
"persona_perspective": "agent",
"mode": "default",
"role": "<string>",
"continuity": true,
"recordings_enabled": true,
"consent_line": "<string>",
"language": "en",
"vocabulary": [
"<string>"
],
"keyterms": [
"<string>"
],
"goals": [
"<string>"
],
"metadata": {},
"extraction_schema": {},
"extraction_webhook_url": "<string>",
"tools": [
{
"tool_id": "<string>",
"enabled": true,
"config": {},
"name": "<string>",
"description": "<string>",
"input_schema": {},
"execution": "hosted"
}
],
"created_at": 123
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "invalid_request_error",
"param": "<string>"
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "invalid_request_error",
"param": "<string>"
}
}Authorizations
Use Authorization: Bearer pyai_live_... (or pyai_test_...).
Path Parameters
Body
Writable agent fields. On update, present fields are set, null clears, absent fields are untouched.
Display name. Required on create.
200The agent's entire character, role, policies, and business context.
32000Role archetype. Adds PyAI's role operating standard beneath your persona and derives the runtime mode (receptionist, sales, and collections enable their matching deterministic conversation guards; everything else runs the default mode). Your stored persona is unchanged and remains authoritative for identity and business policy. Null clears the role.
receptionist, support, sales, collections, ea, concierge, custom, null Greeting message, opening line spoken at turn 0 when a call connects (before the caller speaks). Stored on the agent profile; played automatically when connecting with session_label={agent_id}. May also be sent inline in the Omni configure frame.
1000Approved opening-line variants. PyAI selects one for each newly resolved call profile; null or empty falls back to greeting. Recording consent is fixed and never rotated.
151000A stock voice_id, one of its permanent aliases from GET /v1/voices, or a cloned voice id. Omni reports the canonical served stock id in configured.voice_id.
TTS delivery direction for this managed Agent on instruct-capable voice tiers. Omit or set null for PyAI's natural conversational pace; an inline Omni configure.voice_instruct wins for that session.
200Per-agent model selection. Omit for the platform default.
Deprecated compatibility field. Stored values are not applied to Omni runtime.
Deprecated compatibility field. Stored values are not applied to Omni runtime.
How patient the agent is before checking in on a silent caller ("Sorry, are you still there?"). auto checks in after a few seconds of silence; patient waits far longer, for callers who routinely think, read, or look something up mid-call; off disables the check-in entirely, so the agent stays silent until the caller speaks. When unset, most roles render auto; support agents render patient. Independent of ack_mode. May also be sent inline in the Omni configure frame, which wins for that session.
auto, patient, off, null Which side of the call the persona is on. agent (default) means the persona is the business being called, so PyAI adds its conversation layer for handling a caller (capability honesty, handoffs, turn discipline). caller means the persona is the individual on the call instead, as in QA and simulation callers, mystery shopping, or training partners; PyAI drops that operator-voice layer so it cannot contradict an inverted persona. May also be sent inline in the Omni configure frame, which wins for that session.
agent, caller, null Enable stereo call recordings. Default false.
Recording disclosure spoken before recording starts when recordings_enabled is true. Required for compliance when recordings are on and must contain a meaningful spoken phrase (at least 10 characters and 5 letters). Playback order: consent_line, then greeting, then conversation.
10 - 500Requested language for this Agent's Omni sessions. null or absent means en. Availability is staged: as of 2026-08-13 public serving is en, fr, es, and hi; de falls back to English. Inspect the session's configured.language_active and language_fallback fields before assuming the requested language is active. See the Language support reference.
en, fr, es, de, hi, null Up to 16 key/value annotations (keys ≤64 chars, values ≤512 chars).
Show child attributes
Show child attributes
Optional custom vocabulary for this Agent's Omni speech recognition. A non-empty list is the opt-in. PyAI keeps at most five effective terms, with at most five words per term. It trims whitespace, deduplicates without regard to case while preserving the first spelling and order, and drops common-only phrases. Set [] or null to turn it off. The list is fixed when a session starts. Organization Hear vocabulary is never applied to Omni.
54 - 64Deprecated stored compatibility field. It does not affect speech recognition. Use vocabulary.
100Goal checklist for post-call outcome scoring (stored now; scoring ships with summaries).
20JSON Schema of fields to capture from each completed call's transcript. When set with extraction_webhook_url, PyAI runs a post-call extraction pass and POSTs the structured JSON to your webhook (signed with X-PyAI-Signature). Null disables extraction.
HTTPS URL that receives the signed post-call extraction result (event omni.call.extracted). Requires extraction_schema. The call's agent is resolved from the connect-URL session_label when it equals this agent's id.
Tool bindings for this agent profile (references tools from GET /v1/tools). Omni configure.tools[] may list hosted catalog names or client-loop schemas; server webhooks must be registered here. An inline configure endpoint is not supported.
Show child attributes
Show child attributes
Reuse a tiny caller card on the next call when PyAI can resolve the caller (phone number or a signed customer id). The card is advisory — the agent may recall a name or open thread, and must not refund, book, or transfer from it. Default false.
Response
Updated agent
"agent"
"agent_7f3a0b12"
15Effective TTS delivery direction for instruct-capable voice tiers. Renders PyAI's natural conversational pace when no override is stored.
"default"
Idle check-in patience. Renders auto when unset, except support agents render patient.
auto, patient, off Which side of the call the persona is on. Renders the effective default (agent) when unset.
agent, caller Read-only runtime mode derived from the agent's role (default, receptionist, sales, or collections). Set indirectly via the writable role field.
default, receptionist, sales, collections "default"
Role archetype the agent runs as, or null. Writable on create and update.
Whether this agent reuses a prior-call caller card when a caller key is available. Default false.
Session language for this agent's calls. Renders the effective default (en) when unset.
en, fr, es, de, hi Sanitized Agent vocabulary. An empty list means speech-recognition biasing is off.
54 - 64Show child attributes
Show child attributes
Post-call extraction JSON Schema, or null.
Signed delivery target for post-call extraction, or null.
Show child attributes
Show child attributes
Unix seconds.