Timeline
| Date | Milestone |
|---|---|
| May 1, 2026 | V3 GA — production-ready for all customers |
| May 8, 2026 | Migration announcement sent to all V2 customers |
| June 1, 2026 | Migration reminder — 60 days until V2 shutdown |
| July 1, 2026 | Final warning — 30 days until V2 shutdown |
| July 15, 2026 | V2 responses include deprecation headers |
| August 1, 2026 | V2 service scaled to zero (still accessible via cold start as a grace period for stragglers) |
| August 15, 2026 | V2 infrastructure fully deleted |
Current State
| Aspect | V2 | V3 |
|---|---|---|
| Endpoint | /eu/predict | /vhs/v3/predict |
| Regions | EU | US + EU |
| Model | Single model with test-time augmentation | 3-fold deep learning ensemble |
| Features | Single-image prediction, server-side render | Single + batch, streaming, PoP sessions (base64 or signed-URL upload) |
API Differences
Authentication
Authentication is unchanged. Use the same x-api-key header with your existing API key. No new keys are required.
Single Image Prediction
V2 Request:
POST /eu/predict HTTP/1.1
Host: api.radanalyzer.com
Content-Type: application/json
x-api-key: YOUR_API_KEY
{
"image": "base64_encoded_image_data...",
"uuid": "patient-123",
"include_render": true
}V3 Request:
POST /vhs/v3/predict HTTP/1.1
Host: api.radanalyzer.com
Content-Type: application/json
x-api-key: YOUR_API_KEY
{
"image": "base64_encoded_image_data...",
"uuid": "patient-123",
"render": true
}V2 Response:
{
"vhs": 10.2,
"vlas": 2.8,
"vhs_confidence": "HIGH",
"vlas_confidence": "HIGH",
"scores": { "vhs_ebm": 0.92, "vlas_ebm": 0.88 },
"landmarks": [ ... ],
"render": "base64_rendered_image..."
}V3 Response:
{
"vhs": 10.2,
"vlas": 2.8,
"model_confidence": "optimal",
"spread": 0.003,
"pop_detected": false,
"model_version": "3.6.0-ensemble",
"result_code": 1,
"result_description": "VHS and VLAS predicted successfully with high confidence.",
"prediction": [
{ "x": 0.42, "y": 0.15, "class": "heart_top" },
{ "x": 0.41, "y": 0.44, "class": "heart_bottom" },
{ "x": 0.25, "y": 0.30, "class": "heart_right" },
{ "x": 0.57, "y": 0.29, "class": "heart_left" },
{ "x": 0.49, "y": 0.40, "class": "VLAS" },
{ "x": 0.36, "y": 0.12, "class": "Vertebra A" },
{ "x": 0.55, "y": 0.12, "class": "Vertebra B" }
],
"rendered_image": "base64_rendered_image..."
}New V3-Only Features
| Feature | Parameter / Endpoint | Description |
|---|---|---|
| Batch | POST /vhs/v3/predict with {"images": [...]} | Send up to 10 images in a single request |
| Streaming | POST /vhs/v3/predict/stream | Stream results as server-sent events |
| PoP Session | POST /vhs/v3/pop-session/start + POST /vhs/v3/pop-session | Picture-of-Picture capture session |
| Signed-URL Frame Upload | POST /vhs/v3/pop-session/frame/upload-url + POST /vhs/v3/pop-session/frame/by-key | V3.6+. Optional path that uploads raw JPEG bytes directly to GCS via a short-lived signed URL, skipping base64 encoding. Same inference pipeline and billing as POST /vhs/v3/pop-session. |
Migration Steps for B2B Customers
Minimal Migration (5 minutes)
- Update the endpoint URL from
/eu/predictto/vhs/v3/predict. The request body format is identical —imageanduuidwork as before. - Remove any unsupported parameters (
extended_run,enhancement_iterations) from request bodies.
Recommended Migration
- Complete the minimal migration above.
- Replace
vhs_confidence/vlas_confidenceparsing withmodel_confidence(optimal / good / review). - Update landmark handling to expect 7 landmarks (indices 0–6) instead of 11.
- Map your error handling to the new
result_codevalues (0–7) and useresult_descriptionfor user-facing messages.
Advanced Migration (PoP Session Flow)
- Create a PoP session via
POST /vhs/v3/pop-session/startbefore sending images. This enables the full Picture-of-Picture pipeline. - Send frames to
POST /vhs/v3/pop-sessionwith the session ID. Continue sending untilsession_statusreturns"complete"or"failed". - Sessions auto-expire after 5 minutes of inactivity or 20 frames.
- Optional — Signed-URL Upload (V3.6+): On mobile clients, replace each
POST /vhs/v3/pop-sessioncall with a three-step flow: mint a signed URL viaPOST /vhs/v3/pop-session/frame/upload-url,PUTthe raw JPEG to the returned URL, then callPOST /vhs/v3/pop-session/frame/by-keywith the object key. Skips base64 encoding (~25% smaller wire payload) and lets you pipeline upload of frame N against capture of frame N+1.
See the V3 API Reference for complete PoP session documentation including request/response schemas.
Communication Plan
- May 8, 2026 — Migration Announcement: Email to all V2 API key holders announcing V3 availability and the V2 deprecation timeline.
- June 1, 2026 — Reminder: Follow-up email with migration progress check and a link to this guide.
- July 1, 2026 — Final Warning: Urgent notice that V2 will shut down in 30 days. Direct support offered for any remaining migrations.
- July 15, 2026 — Deprecation Headers: V2 responses will include HTTP deprecation headers to alert automated systems:
Sunset: Sat, 01 Aug 2026 00:00:00 GMT
Deprecation: true
Link: <https://radanalyzer.com/developers/migration-guide/>; rel="deprecation"What Happens After V2 Sunset (August 1)
- August 1: V2 service scaled to zero (still accessible via cold start as a grace period for stragglers).
- August 1–15: Grace period — any remaining V2 traffic triggers cold starts. Direct outreach to affected customers.
- August 15: V2 infrastructure fully deleted. All requests must use
/vhs/v3/*endpoints.
Risks & Mitigations
| Risk | Likelihood | Mitigation |
|---|---|---|
| Customer misses migration deadline | Medium | Three-stage email campaign (May, June, July) plus deprecation headers. Direct outreach for high-volume customers. |
| V3 cold-start latency on scale-to-zero | Low | Cold start is approximately 5–12 seconds depending on region. Warm inference is approximately 1.5 seconds per image. Contact us about dedicated capacity for latency-sensitive integrations. |
| Measurement discrepancy between V2 and V3 | Low | V3.6 ensemble achieves MAE 0.135 VHS units on cross-validation — lower variance than V2. Dual-run testing available during the migration window. |
| Customer relies on removed landmarks | Low | Removed landmarks were auxiliary. Core measurement landmarks are preserved. |
| Integration breaks on new result codes | Medium | Result code 1 (success) is unchanged. New codes only appear for edge cases. Breaking changes doc provides full mapping. |
Ready to migrate?
Check the full V3 API Reference for complete endpoint documentation, or reach out to our team for migration support.