Skip to content

V1 to V2 Server Migration Guide

Important Notice

The V1 server (NyanCat backend) will be deprecated on June 30, 2026.

All developers must migrate to the V2 server (CrimsonLion backend) before this date to ensure continued service availability.

Additionally, the beta phase for V2 server will end on June 30, 2026, at which point V2 will become the stable, production-ready backend.

Overview

This guide helps you migrate from the V1 server (NyanCat backend) to the V2 server (CrimsonLion backend). The V2 server offers enhanced features, improved performance, and additional vital signs measurements.

Key Dates

DateEvent
June 30, 2026V1 server (NyanCat) end of life
June 30, 2026V2 server (CrimsonLion) beta period ends
After June 30, 2026Only V2 server will be supported

Why Migrate to V2?

The V2 server (CrimsonLion backend) provides:

  • Enhanced vital signs: Additional measurements including physical wellness, mental wellness, and more
  • Improved accuracy: Better signal processing and analysis algorithms
  • Better performance: Optimized cloud infrastructure
  • Future updates: All new features will only be available on V2

Migration Steps

Step 1: Enable Precision Mode (One-Line Change!)

Migrating to V2 is Simple

Just add one line of code to your configuration:

typescript
precisionMode: PrecisionMode.relaxed

When you set precisionMode, the SDK automatically uses the V2 server (CrimsonLion backend). You do not need to manually set the serverId.

That's it! This single line enables V2 and all its enhanced features.

To migrate to V2, simply add this one line to your SDK configuration:

typescript
const config = {
  sdkCredentials: {
    apiKey: "YOUR_API_KEY",
    userId: "YOUR_USER_ID"
  },
  precisionMode: PrecisionMode.relaxed  // ← ADD THIS ONE LINE - That's it!
}
javascript
const config = {
  sdkCredentials: {
    apiKey: "YOUR_API_KEY",
    userId: "YOUR_USER_ID"
  },
  precisionMode: PrecisionMode.relaxed  // ← ADD THIS ONE LINE - That's it!
}
kotlin
camera.configure {
    sdkCredentials = SdkCredentials(
        apiKey = "YOUR_API_KEY",
        userId = "YOUR_USER_ID"
    )
    precisionMode = PrecisionMode.Relaxed  // ← ADD THIS ONE LINE - That's it!
}
swift
camera.setup { camera in
    camera.sdkCredentials = .init(
        apiKey: "YOUR_API_KEY",
        userId: "YOUR_USER_ID"
    )
    camera.precisionMode = .relaxed  // ← ADD THIS ONE LINE - That's it!
}
dart
VitalSignCamera(
  sdkCredentials: SdkCredentials(
    apiKey: 'YOUR_API_KEY',
    userId: 'YOUR_USER_ID',
  ),
  precisionMode: PrecisionMode.relaxed,  // ← ADD THIS ONE LINE - That's it!
  // ...
)

Precision Mode Options

  • PrecisionMode.relaxed (TypeScript / JavaScript / Flutter) or PrecisionMode.Relaxed (Android): Recommended for most applications. Uses V2 server with balanced performance and accuracy.
  • PrecisionMode.strict (TypeScript / JavaScript / Flutter) or PrecisionMode.Strict (Android): Uses V2 server with stricter quality requirements for maximum accuracy.

Setting Up Credentials with SdkCredentials

Recommended

Always supply your API key and user ID using the SdkCredentials object, as shown in the examples above. This is the recommended approach for V2 authentication.

PlatformUsage
TypeScript / JavaScriptsdkCredentials: { apiKey: "...", userId: "..." }
Android (Kotlin)sdkCredentials = SdkCredentials(apiKey = "...", userId = "...")
iOS (Swift)camera.sdkCredentials = SdkCredentials(apiKey: "...", userId: "...")
Flutter (Dart)sdkCredentials: SdkCredentials(apiKey: '...', userId: '...')

Passing apiKey or userId as top-level configuration properties is still supported but will be deprecated in a future release. We strongly recommend migrating to SdkCredentials now to avoid breaking changes later.

Step 2: Update User Information Requirements

V2 server has stricter requirements for user information. Ensure you provide:

  • Age (required)
  • Gender (required)
  • Weight (required)
  • Height (required)

Important

While these fields were optional in V1, they are required in V2 for accurate measurements, especially for blood pressure and other vital signs.

Example:

typescript
const userInfo = {
  age: 30,
  gender: Gender.Male,
  weight: 70,  // in kg
  height: 175  // in cm
}

Step 3: Test Your Integration

After making the changes:

  1. Test all vital sign measurements
  2. Verify scan conditions and signal quality
  3. Check health results accuracy
  4. Ensure error handling works correctly
  5. Test on all supported platforms

Step 4: Update SDK Version (If Needed)

Ensure you're using the latest SDK version that fully supports V2 server:

  • Check the Downloads page for the latest SDK versions
  • Review the Changelog for V2-related updates

API Differences

Scan Conditions

In V1, scan conditions were accessed via array indices. In V2, use named properties:

V1 (Deprecated):

typescript
const conditions = healthResult.health.scanParameters.conditions
const hrSteadiness = conditions[0]
const goodSnr = conditions[1]

V2 (Recommended):

typescript
const signalConditions = healthResult.health.scanParameters.signalConditions
const hrSteadiness = signalConditions.hrSteadiness
const goodSnr = signalConditions.goodSnr

Additional Vital Signs in V2

V2 server provides additional vital signs not available in V1:

  • Physical wellness metrics
  • Mental wellness assessments
  • Enhanced cardiovascular analysis
  • Additional risk assessments

Refer to the Interpreting Results section for the complete list of V2 vital signs.

Common Issues and Solutions

Issue: Missing Required User Information

Problem: V2 requires age, gender, weight, and height.

Solution: Ensure all user information fields are provided:

typescript
const userInfo = {
  age: userAge,
  gender: userGender,
  weight: userWeight,
  height: userHeight
}

Issue: Different Scan Condition Structure

Problem: Code accessing scan conditions by array index fails.

Solution: Update to use named properties in signalConditions.

Issue: Precision Mode Not Set

Problem: Defaulting to legacy mode (V1).

Solution: Explicitly set precision mode in configuration.

Support

If you encounter issues during migration:

  1. Review this guide and the Vitals Cloud Service documentation
  2. Check the FAQ for common questions
  3. Contact our support team at support@panoptic.ai
  4. Refer to sample code in the Downloads section

Timeline Reminder

Critical Dates

  • Now: Begin migration to V2 server
  • June 30, 2026: V1 server deprecated, V2 beta ends
  • After June 30, 2026: Only V2 server available

Plan your migration early to avoid service interruption. We recommend completing migration at least one month before the deprecation date.

Next Steps

  • Review Vitals Cloud Service for V2 features
  • Update your application configuration
  • Test thoroughly on V2 server
  • Deploy updated version to production