Quickstart
A first result in the sandbox, in five steps.
1. Get your test key
Wave Up gives you a wu_sk_test_… key when your account is opened. Keep it on your server: it must never appear in a browser, a mobile app or a code repository.
2. Create a session from your server
curl https://sandbox.api.waveup-health.fr/v1/sessions \
-H "Authorization: Bearer $WAVEUP_KEY" \
-H "Content-Type: application/json" \
-d '{
"zone": "thoracolumbar_spine",
"patient": { "sex": "female", "height_cm": 165, "weight_kg": 62 },
"locale": "fr-FR",
"modules": ["cartography", "questionnaires"],
"reference": "DOSSIER-2026-0042"
}'
const res = await fetch('https://sandbox.api.waveup-health.fr/v1/sessions', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.WAVEUP_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
zone: 'thoracolumbar_spine',
patient: { sex: 'female', height_cm: 165, weight_kg: 62 },
locale: 'fr-FR',
modules: ['cartography', 'questionnaires'],
reference: 'DOSSIER-2026-0042',
}),
})
const { id, client_token } = await res.json()
import os, requests
res = requests.post(
"https://sandbox.api.waveup-health.fr/v1/sessions",
headers={"Authorization": f"Bearer {os.environ['WAVEUP_KEY']}"},
json={
"zone": "thoracolumbar_spine",
"patient": {"sex": "female", "height_cm": 165, "weight_kg": 62},
"locale": "fr-FR",
"modules": ["cartography", "questionnaires"],
"reference": "DOSSIER-2026-0042",
},
)
session = res.json()
$ch = curl_init('https://sandbox.api.waveup-health.fr/v1/sessions');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('WAVEUP_KEY'), 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'zone' => 'thoracolumbar_spine',
'patient' => ['sex' => 'female', 'height_cm' => 165, 'weight_kg' => 62],
'locale' => 'fr-FR',
'modules' => ['cartography', 'questionnaires'],
'reference' => 'DOSSIER-2026-0042',
]),
]);
$session = json_decode(curl_exec($ch), true);
201 response:
{
"id": "ses_UZaJ3Siu2NWNtHBxRaicid4T",
"client_token": "eyJhbGciOiJFZERTQSJ9…",
"embed_url": "https://sandbox.embed.waveup-health.fr/v1/s/ses_UZaJ3Siu2NWNtHBxRaicid4T",
"expires_at": "2026-10-04T14:32:00.000Z"
}
Pass only client_token to your page.
3. Display the component
<div id="evaluation"></div>
<script src="https://embed.waveup-health.fr/v1/sdk.js"></script>
<script>
const ev = WaveUp.mount('#evaluation', { clientToken: '…' })
ev.on('completed', ({ sessionId }) => fetch(`/my-server/assessments/${sessionId}/retrieve`, { method: 'POST' }))
</script>
The SDK infers the environment from the token: nothing else to configure.
4. Retrieve the result
On the completed event, your server calls:
curl https://sandbox.api.waveup-health.fr/v1/sessions/ses_UZaJ3Siu2NWNtHBxRaicid4T/result \
-H "Authorization: Bearer $WAVEUP_KEY"
The result is deleted 15 minutes after it is first retrieved (or 15 minutes after sending). The co-branded PDF is at report_url, with the same key.
5. Keep the resume bundle
Store resume_bundle in your patient record. It lets you reopen the assessment or regenerate the PDF in another language, although Wave Up has kept nothing.