Ambient Content Retrieval
Get Note Content
Retrieve accumulated Ambient note section content, including the latest edits
GET
/
api
/
v1
/
ambient
/
note
/
{note_id}
/
content
Gets the content for a note.
curl --request GET \
--url https://sdp.suki.ai/api/v1/ambient/note/{note_id}/content \
--header 'sdp_suki_token: <api-key>'import requests
url = "https://sdp.suki.ai/api/v1/ambient/note/{note_id}/content"
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/note/{note_id}/content', 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/note/{note_id}/content",
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/note/{note_id}/content"
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/note/{note_id}/content")
.header("sdp_suki_token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sdp.suki.ai/api/v1/ambient/note/{note_id}/content")
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{
"summary": [
{
"content": "Asthma exacerbation",
"loinc_code": "18776-5",
"source_transcripts": [
"asthma",
"exacerbation"
],
"title": "ASSESSMENT AND PLAN"
}
]
}{
"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 get accumulated section content across ambient sessions in a note.
If clinicians edit sections in a headed product such as the Web SDK, the response returns the latest edited section content. Use
composition_id from Create ambient session as note_id.
Prefer this endpoint when clinicians edit the note in the other headed products and you need the latest section content in your integration. Session-scoped content endpoints return content for a single ambient session only.
Code examples
- Python
- TypeScript
import json
import requests
BASE_URL = "https://sdp.suki.ai"
# Use composition_id from Create Ambient Session as note_id
note_id = "<composition_id>"
# Get sdp_suki_token from Login: POST /api/v1/auth/login
sdp_suki_token = "<sdp_suki_token>"
# Required for single_auth partners
sdp_provider_id = "<sdp_provider_id>"
url = f"{BASE_URL}/api/v1/ambient/note/{note_id}/content"
headers = {
"sdp_suki_token": sdp_suki_token,
"sdp_provider_id": sdp_provider_id,
}
response = requests.get(url, headers=headers, timeout=60)
print("HTTP status:", response.status_code)
try:
response_body = response.json()
except ValueError:
print("Response was not JSON:")
print(response.text)
raise SystemExit(1)
print("Response body:")
print(json.dumps(response_body, indent=2))
if response.status_code == 200:
summary = response_body.get("summary") or []
print(f"Sections found: {len(summary)}")
for section in summary:
print("title:", section.get("title"))
print("loinc_code:", section.get("loinc_code"))
print("content:", section.get("content"))
print("source_transcripts:", section.get("source_transcripts"))
else:
print("Get Note Content failed.")
if isinstance(response_body, dict):
print("code:", response_body.get("code"))
print("message:", response_body.get("message"))
const BASE_URL = "https://sdp.suki.ai";
// Use composition_id from Create Ambient Session as note_id
const noteId = "<composition_id>";
// Get sdp_suki_token from Login: POST /api/v1/auth/login
const sdpSukiToken = "<sdp_suki_token>";
// Required for single_auth partners
const sdpProviderId = "<sdp_provider_id>";
type ContentBlock = {
title?: string;
loinc_code?: string;
content?: string;
source_transcripts?: string[];
};
type GetNoteContentResponse = {
summary?: ContentBlock[];
};
type ApiErrorResponse = {
code?: number;
message?: string;
};
const response = await fetch(
`${BASE_URL}/api/v1/ambient/note/${noteId}/content`,
{
method: "GET",
headers: {
sdp_suki_token: sdpSukiToken,
sdp_provider_id: sdpProviderId,
},
}
);
const responseText = await response.text();
let responseBody: GetNoteContentResponse | ApiErrorResponse | unknown;
try {
responseBody = responseText ? JSON.parse(responseText) : {};
} catch {
console.error("Response was not JSON:");
console.error(responseText);
throw new Error("Get Note Content returned non-JSON response");
}
console.log("HTTP status:", response.status);
console.log("Response body:", JSON.stringify(responseBody, null, 2));
if (response.status === 200) {
const payload = responseBody as GetNoteContentResponse;
const summary = payload.summary || [];
console.log(`Sections found: ${summary.length}`);
for (const section of summary) {
console.log("title:", section.title);
console.log("loinc_code:", section.loinc_code);
console.log("content:", section.content);
console.log("source_transcripts:", section.source_transcripts);
}
} else {
const error = responseBody as ApiErrorResponse;
console.error("Get Note Content failed.");
console.error("code:", error.code);
console.error("message:", error.message);
}
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
Note identifier. Use the composition_id returned from Ambient session create (same value as note ID for note-level APIs).
Response
Success Response
Accumulated note content across sessions in the note. For sections that were edited (for example in Web SDK), returns the latest edited section content.
Summary of the note (section content blocks rendered from the composition).
Show child attributes
Show child attributes
Last modified on August 13, 2026
Was this page helpful?
⌘I
Gets the content for a note.
curl --request GET \
--url https://sdp.suki.ai/api/v1/ambient/note/{note_id}/content \
--header 'sdp_suki_token: <api-key>'import requests
url = "https://sdp.suki.ai/api/v1/ambient/note/{note_id}/content"
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/note/{note_id}/content', 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/note/{note_id}/content",
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/note/{note_id}/content"
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/note/{note_id}/content")
.header("sdp_suki_token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sdp.suki.ai/api/v1/ambient/note/{note_id}/content")
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{
"summary": [
{
"content": "Asthma exacerbation",
"loinc_code": "18776-5",
"source_transcripts": [
"asthma",
"exacerbation"
],
"title": "ASSESSMENT AND PLAN"
}
]
}{
"code": 400,
"message": "invalid request"
}{
"code": 401,
"message": "invalid token"
}{
"code": 404,
"message": "not found"
}{
"code": 500,
"message": "internal server error"
}