PPG Advanced API
PPG Advanced provides blood pressure estimation and vascular health assessment based on ECG + PPG fusion analysis.
The PPG Advanced API requires an Advanced subscription. View pricing
PPG Advanced analysis requires you to provide both ECG and PPG data to improve accuracy.
Blood pressure estimation
POST /api/v1/advanced/ppg/blood-pressure
Based on fusion analysis of ECG and PPG signals, estimate blood pressure values (systolic and diastolic).
Blood pressure estimation is for reference only. It cannot replace a medical blood pressure monitor and is not a medical diagnosis.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| ecgData | array | ✅ | ECG signal data array |
| ecgSampleRate | number | ✅ | ECG sampling rate (Hz) |
| adcGain | number | ❌ | Gain coefficient (default: 1.0) |
| adcZero | number | ❌ | Zero/baseline voltage (default: 0.0) |
| ppgData | object | ✅ | PPG signal data object |
| ppgSampleRate | number | ✅ | PPG sampling rate (Hz) |
ppgData object structure
| Field | Type | Required | Description |
|---|---|---|---|
| red | array | ✅ | Red light PPG data array |
| green | array | ✅ | Green light PPG data array |
| infrared | array | ✅ | Infrared PPG data array |
To estimate blood pressure accurately, provide red, green, and infrared PPG channels at the same time.
Request example
curl -X POST "https://api.heartvoice.com.cn/api/v1/advanced/ppg/blood-pressure" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ecgData": [512, 515, 520, 518, 525, ...],
"ecgSampleRate": 500,
"adcGain": 1.0,
"adcZero": 0.0,
"ppgData": {
"red": [1024, 1028, 1032, ...],
"green": [2048, 2052, 2056, ...],
"infrared": [1536, 1540, 1544, ...]
},
"ppgSampleRate": 100
}'
Response example
{
"errorCode": "0",
"msg": "success",
"data": {
"sqGrade": "0.95",
"sbp": 124,
"dbp": 68
}
}
Response fields
| Field | Type | Description | Unit | Normal range |
|---|---|---|---|---|
| sqGrade | string | Signal quality grade (details) | - | - |
| sbp | number | Systolic blood pressure | mmHg | 90–120 |
| dbp | number | Diastolic blood pressure | mmHg | 60–80 |
Blood pressure classification standards
| Category | Systolic (mmHg) | Diastolic (mmHg) |
|---|---|---|
| Normal | < 120 | < 80 |
| Elevated | 120–129 | < 80 |
| Hypertension Stage 1 | 130–139 | 80–89 |
| Hypertension Stage 2 | ≥ 140 | ≥ 90 |
Recommendations
- Sit quietly during measurement; keep your arm at the same level as your heart
- Avoid measuring immediately after exercise, eating, or drinking alcohol
- Measure multiple times and take the average value
- Calibrate regularly with a standard blood pressure monitor
Vascular health assessment
POST /api/v1/advanced/ppg/vascular-health
Analyze vascular elasticity from ECG and PPG signals to assess vascular age.
Request parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| ecgData | array | ✅ | ECG signal data array |
| ecgSampleRate | number | ✅ | ECG sampling rate (Hz) |
| adcGain | number | ❌ | Gain coefficient (default: 1.0) |
| adcZero | number | ❌ | Zero/baseline voltage (default: 0.0) |
| ppgData | object | ✅ | PPG signal data object |
| ppgSampleRate | number | ✅ | PPG sampling rate (Hz) |
ppgData object structure
| Field | Type | Required | Description |
|---|---|---|---|
| red | array | ✅ | Red light PPG data array |
| green | array | ✅ | Green light PPG data array |
| infrared | array | ✅ | Infrared PPG data array |
Request example
curl -X POST "https://api.heartvoice.com.cn/api/v1/advanced/ppg/vascular-health" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ecgData": [512, 515, 520, 518, 525, ...],
"ecgSampleRate": 500,
"adcGain": 1.0,
"adcZero": 0.0,
"ppgData": {
"red": [1024, 1028, 1032, ...],
"green": [2048, 2052, 2056, ...],
"infrared": [1536, 1540, 1544, ...]
},
"ppgSampleRate": 100
}'
Response example
{
"errorCode": "0",
"msg": "success",
"data": {
"sqGrade": "0.95",
"vascularAge": 61
}
}
Response fields
| Field | Type | Description | Unit |
|---|---|---|---|
| sqGrade | string | Signal quality grade (details) | - |
| vascularAge | number | Vascular age | years |
How to interpret vascular age
| Difference vs. actual age | Assessment | Recommendation |
|---|---|---|
| Diff <= -5 years | Excellent | Very good vascular elasticity—keep it up |
| -5 < Diff <= 0 years | Good | Healthy vascular status |
| 0 < Diff <= 5 years | Fair | Pay attention to vascular care |
| 5 < Diff <= 10 years | Deviation | Improve lifestyle |
| Diff > 10 years | Poor | Consider medical evaluation |
Factors affecting vascular age
- Smoking and alcohol consumption
- Hypertension and hyperlipidemia
- Lack of exercise
- Unhealthy diet habits
- Long-term late nights and high stress
Recommendations
- Quit smoking and limit alcohol
- Do moderate aerobic exercise (3–5 times/week, 30 minutes each time)
- Eat more fresh fruits/vegetables and reduce high-fat/high-salt foods
- Maintain healthy daily routines
- Have regular health checkups
Technical principles
Blood pressure estimation principle
Blood pressure estimation is based on the following physiological principles and technical methods:
-
Pulse Transit Time (PTT)
- Uses the time difference between the ECG R-peak and the PPG pulse peak
- PTT is negatively correlated with blood pressure
- Formula:
PTT = PPG peak time - ECG R-peak time
-
PPG waveform features
- Rising slope (reflects vascular elasticity)
- Peak amplitude (reflects blood flow volume)
- Waveform area (reflects per-beat output)
- Reflected wave characteristics (reflects peripheral resistance)
-
Multi-channel fusion
- Red light: superficial skin blood flow
- Green light: advantages for heart rate detection
- Infrared: deeper tissue penetration
-
Deep learning model
- AI models combining multi-dimensional features
- Trained on large-scale clinical data
Vascular age assessment principle
Vascular elasticity is assessed based on:
-
Pulse Wave Velocity (PWV)
- Uses PTT and the known arterial path length
- Faster PWV indicates stiffer vessels
-
Augmentation Index (AI)
- Analyzes reflected waves in the PPG waveform
- Reflects large-artery stiffness
-
Waveform morphology analysis
- Rise time
- Peak time
- Diastolic-phase waveform
Data requirements
Signal duration
| Analysis type | Minimum duration | Recommended duration |
|---|---|---|
| Blood pressure estimation | 10 seconds | 30 seconds |
| Vascular health assessment | 10 seconds | 30 seconds |
Sampling rate requirements
| Signal type | Minimum sampling rate | Recommended sampling rate |
|---|---|---|
| ECG | 250Hz | 500Hz |
| PPG | 50Hz | 100Hz |
Measurement conditions
To ensure accuracy, please note:
✅ Correct measurement posture
- Sit and rest for 5 minutes before measuring
- Keep your arm relaxed naturally and at the same level as your heart
- Avoid talking and moving
✅ Appropriate environment
- Suitable room temperature (20–25°C)
- Avoid strong direct light shining on the sensor
- Keep quiet
❌ Avoid the following
- Measure immediately after vigorous exercise
- Measure within 30 minutes after eating, drinking alcohol, or smoking
- When you are emotionally excited/overwhelmed
- Cold fingers or sweaty hands
Frequently asked questions
Q: Why do we need to provide both ECG and PPG data?
A:
Blood pressure and vascular health assessments rely on PTT calculation, which requires the ECG R-peak time and the PPG pulse peak time. PPG alone cannot provide an accurate PTT value.
Q: What is the purpose of three PPG channels?
A:
- Red (660nm): Detects superficial skin blood flow for blood pressure estimation
- Green (520nm): Most accurate for heart rate detection and used for PTT calculation
- Infrared (940nm): Deep penetration for vascular state assessment
Q: Are the estimated blood pressure values accurate?
A:
The accuracy of blood pressure estimation is affected by multiple factors:
- Under ideal measurement conditions, the error is typically within ±5–10 mmHg
- For first-time use, we recommend calibrating against a standard blood pressure monitor
- For reference only; cannot replace a medical blood pressure monitor
- Not intended for medical diagnosis
Q: How often is it appropriate to measure?
A:
- Daily monitoring: 1–2 times per day (morning and evening)
- If blood pressure is abnormal: follow your clinician’s advice; you may need more frequent monitoring
- For healthy people: 2–3 times per week is usually sufficient
Next steps
- ECG Basic API - ECG basic analysis
- ECG Advanced API - ECG advanced features
- Authentication - Get API Key
- Usage examples - Complete integration example