curl --request POST \
--url https://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"responses": {
"treatment_need": [
"weight loss"
],
"treatment_reason": "Patient seeking GLP-1 therapy for weight management",
"current_meds": "none",
"has_allergies": "no",
"attest_accurate": true,
"attest_telehealth": true
},
"pharmacy_product_id": "063b65ad-d92a-4120-9784-869f21f9c3ea"
}
'import requests
url = "https://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit"
payload = {
"responses": {
"treatment_need": ["weight loss"],
"treatment_reason": "Patient seeking GLP-1 therapy for weight management",
"current_meds": "none",
"has_allergies": "no",
"attest_accurate": True,
"attest_telehealth": True
},
"pharmacy_product_id": "063b65ad-d92a-4120-9784-869f21f9c3ea"
}
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({
responses: {
treatment_need: ['weight loss'],
treatment_reason: 'Patient seeking GLP-1 therapy for weight management',
current_meds: 'none',
has_allergies: 'no',
attest_accurate: true,
attest_telehealth: true
},
pharmacy_product_id: '063b65ad-d92a-4120-9784-869f21f9c3ea'
})
};
fetch('https://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit', 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://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit",
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([
'responses' => [
'treatment_need' => [
'weight loss'
],
'treatment_reason' => 'Patient seeking GLP-1 therapy for weight management',
'current_meds' => 'none',
'has_allergies' => 'no',
'attest_accurate' => true,
'attest_telehealth' => true
],
'pharmacy_product_id' => '063b65ad-d92a-4120-9784-869f21f9c3ea'
]),
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://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit"
payload := strings.NewReader("{\n \"responses\": {\n \"treatment_need\": [\n \"weight loss\"\n ],\n \"treatment_reason\": \"Patient seeking GLP-1 therapy for weight management\",\n \"current_meds\": \"none\",\n \"has_allergies\": \"no\",\n \"attest_accurate\": true,\n \"attest_telehealth\": true\n },\n \"pharmacy_product_id\": \"063b65ad-d92a-4120-9784-869f21f9c3ea\"\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://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"responses\": {\n \"treatment_need\": [\n \"weight loss\"\n ],\n \"treatment_reason\": \"Patient seeking GLP-1 therapy for weight management\",\n \"current_meds\": \"none\",\n \"has_allergies\": \"no\",\n \"attest_accurate\": true,\n \"attest_telehealth\": true\n },\n \"pharmacy_product_id\": \"063b65ad-d92a-4120-9784-869f21f9c3ea\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit")
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 \"responses\": {\n \"treatment_need\": [\n \"weight loss\"\n ],\n \"treatment_reason\": \"Patient seeking GLP-1 therapy for weight management\",\n \"current_meds\": \"none\",\n \"has_allergies\": \"no\",\n \"attest_accurate\": true,\n \"attest_telehealth\": true\n },\n \"pharmacy_product_id\": \"063b65ad-d92a-4120-9784-869f21f9c3ea\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"intake_id": "<string>",
"status": "<string>",
"pushed_to_idn": true
}
}{
"error": {
"code": "validation_failed",
"message": "One or more fields are invalid"
}
}{
"error": {
"code": "idn_not_joined",
"message": "Your organization hasn't joined the Internal Doctor Network yet."
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "validation_failed",
"message": "One or more fields are invalid"
}
}Submit referral intake answers (you collect them)
Submit intake answers your patient completed on YOUR OWN site. Creates a submitted intake and automatically routes the referral to the Internal Doctor Network — no hosted intake link needed. Use this instead of Send a referral intake link when you collect the questionnaire yourself. The IDN prescriber still reviews and writes or declines the script. Requires rx:write (a key with intakes:write also works). Vita Clinics use Submit intake answers. The body accepts only responses, pharmacy_product_id and external_intake_id; any other field returns 400 validation_failed. Test keys run in a full sandbox (no real records created).
curl --request POST \
--url https://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"responses": {
"treatment_need": [
"weight loss"
],
"treatment_reason": "Patient seeking GLP-1 therapy for weight management",
"current_meds": "none",
"has_allergies": "no",
"attest_accurate": true,
"attest_telehealth": true
},
"pharmacy_product_id": "063b65ad-d92a-4120-9784-869f21f9c3ea"
}
'import requests
url = "https://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit"
payload = {
"responses": {
"treatment_need": ["weight loss"],
"treatment_reason": "Patient seeking GLP-1 therapy for weight management",
"current_meds": "none",
"has_allergies": "no",
"attest_accurate": True,
"attest_telehealth": True
},
"pharmacy_product_id": "063b65ad-d92a-4120-9784-869f21f9c3ea"
}
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({
responses: {
treatment_need: ['weight loss'],
treatment_reason: 'Patient seeking GLP-1 therapy for weight management',
current_meds: 'none',
has_allergies: 'no',
attest_accurate: true,
attest_telehealth: true
},
pharmacy_product_id: '063b65ad-d92a-4120-9784-869f21f9c3ea'
})
};
fetch('https://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit', 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://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit",
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([
'responses' => [
'treatment_need' => [
'weight loss'
],
'treatment_reason' => 'Patient seeking GLP-1 therapy for weight management',
'current_meds' => 'none',
'has_allergies' => 'no',
'attest_accurate' => true,
'attest_telehealth' => true
],
'pharmacy_product_id' => '063b65ad-d92a-4120-9784-869f21f9c3ea'
]),
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://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit"
payload := strings.NewReader("{\n \"responses\": {\n \"treatment_need\": [\n \"weight loss\"\n ],\n \"treatment_reason\": \"Patient seeking GLP-1 therapy for weight management\",\n \"current_meds\": \"none\",\n \"has_allergies\": \"no\",\n \"attest_accurate\": true,\n \"attest_telehealth\": true\n },\n \"pharmacy_product_id\": \"063b65ad-d92a-4120-9784-869f21f9c3ea\"\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://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"responses\": {\n \"treatment_need\": [\n \"weight loss\"\n ],\n \"treatment_reason\": \"Patient seeking GLP-1 therapy for weight management\",\n \"current_meds\": \"none\",\n \"has_allergies\": \"no\",\n \"attest_accurate\": true,\n \"attest_telehealth\": true\n },\n \"pharmacy_product_id\": \"063b65ad-d92a-4120-9784-869f21f9c3ea\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://vitarelay.com/api/public/v1/rx/patients/{patientId}/intake/submit")
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 \"responses\": {\n \"treatment_need\": [\n \"weight loss\"\n ],\n \"treatment_reason\": \"Patient seeking GLP-1 therapy for weight management\",\n \"current_meds\": \"none\",\n \"has_allergies\": \"no\",\n \"attest_accurate\": true,\n \"attest_telehealth\": true\n },\n \"pharmacy_product_id\": \"063b65ad-d92a-4120-9784-869f21f9c3ea\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"intake_id": "<string>",
"status": "<string>",
"pushed_to_idn": true
}
}{
"error": {
"code": "validation_failed",
"message": "One or more fields are invalid"
}
}{
"error": {
"code": "idn_not_joined",
"message": "Your organization hasn't joined the Internal Doctor Network yet."
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "validation_failed",
"message": "One or more fields are invalid"
}
}Authorizations
API key issued by VitaRelay. Send as Authorization: Bearer vr_live_…
(production) or Authorization: Bearer vr_test_… (sandbox).
Path Parameters
Body
The questionnaire answers. The six required fields must be present or the request is rejected 422. Send the rest of the questionnaire too, using the keys in the Intake answers reference.
Show child attributes
Show child attributes
Optional. The requested 503A product id (from /rx/catalog). The prescriber still decides.
Optional idempotency key.
Response
Intake submitted and routed to the IDN.
Show child attributes
Show child attributes

