← Back to DevelopersMigration Guide

Cardiac VHS — V2 to V3 Migration Guide

Step-by-step plan for transitioning your cardiac integration from the legacy /eu endpoint to the new /vhs/v3 endpoint.

VHS / VLAS v3 is live in production as of May 1, 2026. The V2 migration timeline below remains in effect.

Timeline

DateMilestone
May 1, 2026V3 GA — production-ready for all customers
May 8, 2026Migration announcement sent to all V2 customers
June 1, 2026Migration reminder — 60 days until V2 shutdown
July 1, 2026Final warning — 30 days until V2 shutdown
July 15, 2026V2 responses include deprecation headers
August 1, 2026V2 service scaled to zero (still accessible via cold start as a grace period for stragglers)
August 15, 2026V2 infrastructure fully deleted

Current State

AspectV2V3
Endpoint/eu/predict/vhs/v3/predict
RegionsEUUS + EU
ModelSingle model with test-time augmentation3-fold deep learning ensemble
FeaturesSingle-image prediction, server-side renderSingle + 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

FeatureParameter / EndpointDescription
BatchPOST /vhs/v3/predict with {"images": [...]}Send up to 10 images in a single request
StreamingPOST /vhs/v3/predict/streamStream results as server-sent events
PoP SessionPOST /vhs/v3/pop-session/start + POST /vhs/v3/pop-sessionPicture-of-Picture capture session
Signed-URL Frame UploadPOST /vhs/v3/pop-session/frame/upload-url + POST /vhs/v3/pop-session/frame/by-keyV3.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)

  1. Update the endpoint URL from /eu/predict to /vhs/v3/predict. The request body format is identical — image and uuid work as before.
  2. Remove any unsupported parameters (extended_run, enhancement_iterations) from request bodies.

Recommended Migration

  1. Complete the minimal migration above.
  2. Replace vhs_confidence / vlas_confidence parsing with model_confidence (optimal / good / review).
  3. Update landmark handling to expect 7 landmarks (indices 0–6) instead of 11.
  4. Map your error handling to the new result_code values (0–7) and use result_description for user-facing messages.

Advanced Migration (PoP Session Flow)

  1. Create a PoP session via POST /vhs/v3/pop-session/start before sending images. This enables the full Picture-of-Picture pipeline.
  2. Send frames to POST /vhs/v3/pop-session with the session ID. Continue sending until session_status returns "complete" or "failed".
  3. Sessions auto-expire after 5 minutes of inactivity or 20 frames.
  4. Optional — Signed-URL Upload (V3.6+): On mobile clients, replace each POST /vhs/v3/pop-session call with a three-step flow: mint a signed URL via POST /vhs/v3/pop-session/frame/upload-url, PUT the raw JPEG to the returned URL, then call POST /vhs/v3/pop-session/frame/by-key with 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

RiskLikelihoodMitigation
Customer misses migration deadlineMediumThree-stage email campaign (May, June, July) plus deprecation headers. Direct outreach for high-volume customers.
V3 cold-start latency on scale-to-zeroLowCold 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 V3LowV3.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 landmarksLowRemoved landmarks were auxiliary. Core measurement landmarks are preserved.
Integration breaks on new result codesMediumResult 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.