Ambient Content Retrieval
Get Ambient Session Section Structured Data
Retrieve filled Embedded Form values for a completed ambient session
Listen to this pageabout 1 min
GET
/
api
/
v1
/
ambient
/
session
/
{ambient_session_id}
/
structured-data
/
section-structured-data
cURL
curl --request GET \
--url https://sdp.suki.ai/api/v1/ambient/session/<ambient_session_id>/structured-data/section-structured-data \
--header 'sdp_suki_token: <sdp_suki_token>' \
--header 'sdp_provider_id: <sdp_provider_id>'import requests
url = "https://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data"
headers = {"sdp_suki_token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {sdp_suki_token: '<api-key>'}};
fetch('https://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data', 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://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"sdp_suki_token: <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://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("sdp_suki_token", "<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://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data")
.header("sdp_suki_token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["sdp_suki_token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"section_structured_values": [
{
"loinc_code": "10164-2",
"forms": [
{
"template_id": "hpi-mood-v1",
"values": [
{
"id": "slot-symptoms",
"key": "symptoms",
"value": [
"low mood",
"poor sleep"
]
},
{
"id": "slot-duration",
"key": "symptom_duration",
"value": "in the last two weeks"
},
{
"id": "slot-onset",
"key": "onset_date",
"value": null
}
]
}
]
}
]
}{
"code": 400,
"message": "invalid request"
}{
"code": 401,
"message": "invalid token"
}{
"code": 404,
"message": "not found"
}{
"code": 500,
"message": "internal server error"
}Use this endpoint to retrieve filled Embedded Form values for a specific .
Call this endpoint once Session status reaches
completed state, or you receive a _links.section_structured_data link from the ambient SUCCESS webhook. To retrieve values from the latest completed ambient session for an encounter, use the Encounter Section Structured Data endpoint instead.
For how to seed templates, read the response, and map values back to your form, refer to Seed and read Embedded Forms.
Code examples
- Python
- TypeScript
import requests
ambient_session_id = "<ambient_session_id>"
url = f"https://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data"
headers = {
"sdp_suki_token": "<sdp_suki_token>",
"sdp_provider_id": "<sdp_provider_id>",
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
sections = response.json().get("section_structured_values") or []
if not sections:
print("No Embedded Form values for this session.")
for section in sections:
print(f"Section {section.get('loinc_code')}")
for form in section.get("forms") or []:
print(f" Template {form.get('template_id')}")
for field in form.get("values") or []:
# value is a string, a list of strings, or None
print(f" {field.get('key')} ({field.get('id')}): {field.get('value')}")
else:
print(f"Failed to get section structured data: {response.status_code}")
print(response.json())
type FilledValue = { id?: string; key: string; value?: string | string[] | null };
type SectionStructuredData = {
loinc_code?: string;
forms?: Array<{ template_id?: string; values?: FilledValue[] }>;
};
const ambientSessionId = "<ambient_session_id>";
const response = await fetch(
`https://sdp.suki.ai/api/v1/ambient/session/${ambientSessionId}/structured-data/section-structured-data`,
{
headers: {
sdp_suki_token: "<sdp_suki_token>",
sdp_provider_id: "<sdp_provider_id>",
},
}
);
if (response.ok) {
const body: { section_structured_values?: SectionStructuredData[] } = await response.json();
const sections = body.section_structured_values ?? [];
if (sections.length === 0) {
console.log("No Embedded Form values for this session.");
}
sections.forEach((section) => {
console.log(`Section ${section.loinc_code}`);
section.forms?.forEach((form) => {
console.log(` Template ${form.template_id}`);
form.values?.forEach((field) => {
// value is a string, a list of strings, or null
console.log(` ${field.key} (${field.id}): ${JSON.stringify(field.value ?? null)}`);
});
});
});
} else {
const error = await response.json();
console.error(`Failed to get section structured data: ${response.status}`, error);
}
Authorizations
Suki access token (suki_token) from Login or Register. Expires after one hour.
Headers
Optional for standard partners.
Required for:
- Bearer authentication. Use the same
provider_idreturned by the Login or Register API. - Single Auth Token authentication. Include the same
provider_idon every request assdp_provider_id.
Example:
"provider-123"
Path Parameters
UUID for the ambient session. Use the ambient_session_id returned from Create Ambient Session, or the UUID you supplied in that request.
Response
Request succeeded.
Response body for the /session/{ambient_session_id}/structured-data/section-structured-data endpoint
Embedded Form results for the ambient session, grouped by section LOINC.
Show child attributes
Show child attributes
Last modified on October 16, 2026
Was this page helpful?
cURL
curl --request GET \
--url https://sdp.suki.ai/api/v1/ambient/session/<ambient_session_id>/structured-data/section-structured-data \
--header 'sdp_suki_token: <sdp_suki_token>' \
--header 'sdp_provider_id: <sdp_provider_id>'import requests
url = "https://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data"
headers = {"sdp_suki_token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {sdp_suki_token: '<api-key>'}};
fetch('https://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data', 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://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"sdp_suki_token: <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://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("sdp_suki_token", "<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://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data")
.header("sdp_suki_token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/structured-data/section-structured-data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["sdp_suki_token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"section_structured_values": [
{
"loinc_code": "10164-2",
"forms": [
{
"template_id": "hpi-mood-v1",
"values": [
{
"id": "slot-symptoms",
"key": "symptoms",
"value": [
"low mood",
"poor sleep"
]
},
{
"id": "slot-duration",
"key": "symptom_duration",
"value": "in the last two weeks"
},
{
"id": "slot-onset",
"key": "onset_date",
"value": null
}
]
}
]
}
]
}{
"code": 400,
"message": "invalid request"
}{
"code": 401,
"message": "invalid token"
}{
"code": 404,
"message": "not found"
}{
"code": 500,
"message": "internal server error"
}