curl --request POST \
--url https://rxnote.ai/api/v1/visits \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"patient_id": 4821,
"clinician_email": "doctor@clinic.example",
"language": "en",
"template_id": 12,
"outputs": [
"transcript",
"note"
],
"transcript": "<string>"
}
'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
patient_id: 4821,
clinician_email: 'doctor@clinic.example',
language: 'en',
template_id: 12,
outputs: ['transcript', 'note'],
transcript: '<string>'
})
};
fetch('https://rxnote.ai/api/v1/visits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://rxnote.ai/api/v1/visits"
payload = {
"patient_id": 4821,
"clinician_email": "doctor@clinic.example",
"language": "en",
"template_id": 12,
"outputs": ["transcript", "note"],
"transcript": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": 90211,
"patient_id": 123,
"status": "recording",
"language": "<string>",
"template_id": 123,
"outputs": [
"transcript"
],
"created_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"icd_codes": {
"code_version": "icd11",
"generated_at": "<string>",
"codes": [
{
"code": "CA02",
"name": "Acute pharyngitis",
"confidence": "high"
}
]
},
"error": {
"code": "TRANSCRIPTION_FAILED",
"message": "<string>"
},
"upload": {
"url": "<string>",
"method": "PUT",
"headers": {
"Content-Type": "audio/webm"
},
"expires_at": "2023-11-07T05:31:56Z"
},
"transcript": {
"text": "<string>",
"duration_seconds": 123,
"segments": [
{
"speaker": 123,
"start_ms": 123,
"end_ms": 123,
"text": "<string>"
}
]
},
"note": {
"template": {
"id": 123,
"name": "<string>"
},
"framework": "soap",
"sections": [
{
"id": "<string>",
"title": "<string>",
"fields": [
{
"id": "<string>",
"label": "<string>",
"text": "<string>"
}
]
}
],
"html": "<string>"
},
"summary": {}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}Create a visit
Starts a consultation for a patient. With transcript, the note is written at once. With audio, the visit waits in recording and the response carries an upload URL: PUT the file there, then call process. Scope visits:write.
curl --request POST \
--url https://rxnote.ai/api/v1/visits \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"patient_id": 4821,
"clinician_email": "doctor@clinic.example",
"language": "en",
"template_id": 12,
"outputs": [
"transcript",
"note"
],
"transcript": "<string>"
}
'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
patient_id: 4821,
clinician_email: 'doctor@clinic.example',
language: 'en',
template_id: 12,
outputs: ['transcript', 'note'],
transcript: '<string>'
})
};
fetch('https://rxnote.ai/api/v1/visits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://rxnote.ai/api/v1/visits"
payload = {
"patient_id": 4821,
"clinician_email": "doctor@clinic.example",
"language": "en",
"template_id": 12,
"outputs": ["transcript", "note"],
"transcript": "<string>"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": 90211,
"patient_id": 123,
"status": "recording",
"language": "<string>",
"template_id": 123,
"outputs": [
"transcript"
],
"created_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"icd_codes": {
"code_version": "icd11",
"generated_at": "<string>",
"codes": [
{
"code": "CA02",
"name": "Acute pharyngitis",
"confidence": "high"
}
]
},
"error": {
"code": "TRANSCRIPTION_FAILED",
"message": "<string>"
},
"upload": {
"url": "<string>",
"method": "PUT",
"headers": {
"Content-Type": "audio/webm"
},
"expires_at": "2023-11-07T05:31:56Z"
},
"transcript": {
"text": "<string>",
"duration_seconds": 123,
"segments": [
{
"speaker": 123,
"start_ms": 123,
"end_ms": 123,
"text": "<string>"
}
]
},
"note": {
"template": {
"id": 123,
"name": "<string>"
},
"framework": "soap",
"sections": [
{
"id": "<string>",
"title": "<string>",
"fields": [
{
"id": "<string>",
"label": "<string>",
"text": "<string>"
}
]
}
],
"html": "<string>"
},
"summary": {}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "<string>",
"request_id": "req_Q2w9Lx7Hc4Vb8Np1Zs3Kt6"
}
}Authorizations
Your API key, created in RxNote under Settings → API: Authorization: Bearer rxn_live_….
Headers
Your unique id for this consultation (for example your appointment id). Retrying with the same key returns the same visit.
1 - 255"appt-2026-10-21-0001"
Body
From POST /patients.
4821
Required with an organization key: the RxNote member acting. With a personal key, omit it or send the owner's own email.
255"doctor@clinic.example"
Language of the consultation.
2 - 10"en"
A template from GET /templates. Omitted: the clinician's default template, as in the app.
12
What to produce. A note always needs the transcript, so note implies it.
1transcript, note, summary Send this to upload a recording: the response carries a URL to PUT the file to.
Show child attributes
Show child attributes
Send this instead of audio to write the note from text you already have. Processing starts at once.
1 - 500000Response
The visit.
90211
recording, pending, processing, transcribing, generating-soap, completed, failed, no-speech transcript, note, summary Set once POST /visits/{id}/icd-codes has run.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Only while the status is recording (waiting for the audio).
Show child attributes
Show child attributes
Omitted unless requested; null until ready.
Show child attributes
Show child attributes
Omitted unless requested; null until ready.
Show child attributes
Show child attributes
Omitted unless requested; null until ready.
Show child attributes
Show child attributes
