> ## Documentation Index
> Fetch the complete documentation index at: /docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Test VPP programs

> Three test-mode VPP programs from Antarctic Energy: enroll devices, trigger VPP events and check rewards.

Antarctic Energy, the [test energy supplier](/docs/energy-api/guides/platform/test-supplier.md), runs three VPP programs in test mode. They behave like live programs: devices enroll through Connect, get telemetry duties, receive VPP events and accrue rewards. Use a `sk_test_` secret key.

The programs are offered only at the Antarctic Way address, and only to devices with a `battery` capability block. They ignore the VPP switch in your Console.

## Programs

| | Antarctic Smart | Antarctic VPP | Antarctic Export |
| :- | :- | :- | :- |
| Type | A battery import tariff granted for telemetry and control | Export and turndown events | Export events |
| User joins from | The VPP operator's side, by universal link | The VPP Programs page in Connect | The VPP Programs page in Connect |
| Managed tariff | Yes: plans and VPP events | No: VPP events only | No: VPP events only |
| Event types | Export, turndown | Export, turndown | Export |
| `enrollment.dispatch_test_required` | `true` | `true` | `false` |
| `terms.opt_out_policy` | `NOT_ALLOWED` | `ALLOWED_BEFORE_LOCK` | `ALLOWED` |
| `enrollment.join_days` | 1 | 3 | 3 |
| `terms.notice_days` | 30 | 7 | 7 |
| State interval | 60 s | 300 s | 300 s |
| State heartbeat, derived | 300 s | 900 s | 900 s |
| Device meter interval | 300 s | 900 s | 900 s |
| `currency_code` | `GBP` | `GBP` | `GBP` |
| `estimate` | 18 per month, 20 events per month | 120 per year, 12 events per month | 6 per month, 8 events per month |
| `terms.rewards` | `DELIVERED_KWH` at 0.10 | `EVENT` at 1.00 | `DELIVERED_KWH` at 0.25 |
| Consent scopes | `TELEMETRY`, `CONTROL`, `LOCATION`, `SETTINGS` | `TELEMETRY`, `CONTROL` | `TELEMETRY`, `CONTROL` |

## Enroll from Connect

For Antarctic VPP and Antarctic Export:

1. Connect an Antarctic Energy tariff at the location.
2. [Create a Connect session](/docs/energy-api/reference/connect-sessions/create.md) for a battery device and start it with `flow=VPP`. The [VPP Programs page](/docs/energy-api/reference/connect/vpp/programs.md) lists both programs.
3. Complete the steps. The enrollment stays `PENDING` through `AWAITING_TELEMETRY`, `TESTING_DISPATCH` (Antarctic VPP only) and `AWAITING_APPROVAL`, then goes `ACTIVE`. `AWAITING_TELEMETRY` ends when your backend submits the first device state and meter records.

To unenroll, start another `flow=VPP` session, where the [VPP summary](/docs/energy-api/reference/connect/vpp/summary.md) lets the user leave.

## Enroll in Antarctic Smart

The user signs up for a managed tariff with the VPP operator, who hands them to your app by [universal link](/docs/energy-api/reference/connect/vpp/universal-links.md). Flatpeak hosts a stand-in for the Antarctic Energy app.

1. Set `universal_link_url` in the [Console](https://console.flatpeak.com/settings) and handle the link in your app. Test-mode links carry test-mode sessions.
2. Open `https://test.antarctic.flatpeak.com` and sign in as `smart@test.antarctic` with password `valid`. The portal lists your eligible test devices by `hardware_id`.
3. Accept the offer for a device. Antarctic Energy creates a Connect session and redirects to your `universal_link_url` with the `connect_session` parameter.
4. Your app retrieves the session and starts it. Connect returns the [consent](/docs/energy-api/reference/connect/vpp/consent.md) page with all four scopes, then the enrollment steps.

On completion, the Antarctic Smart tariff replaces the location's import tariff and the enrollment is created. Your backend receives `connect_session.complete` and `vpp_enrollment.update`.

The user leaves Antarctic Smart through the VPP summary, and the previous import tariff is restored.

## Trigger a VPP event

In the [Console](https://console.flatpeak.com), in test mode, open **VPP events** and create an event for a program with a start time, duration and power. Flatpeak runs the full loop for every enrolled device:

1. `vpp_event.update` fires on creation and on each status change. At `LOCKED`, `allocation` lists each device's share, and [retrieve device instructions](/docs/energy-api/reference/instructions/retrieve.md) returns it.
2. You [confirm](/docs/energy-api/reference/instructions/confirm.md) what each device will deliver.
3. If your feeds fall behind the program's intervals, the `telemetry` delay flags on the device turn `true` and `device.update` fires.
4. A [reward](/docs/energy-api/reference/vpp-enrollments/list-rewards.md) appears once your meter records prove delivery.

A turndown event carries a positive `power_kw` cap, and an export event carries a negative target. An event can ask for more than your devices can deliver, which tests declines and shortfall.

Test events appear in [list all VPP events](/docs/energy-api/reference/vpp-events/list.md) and the [device's deliveries](/docs/energy-api/reference/vpp-events/list-deliveries.md), so you can test the allocation of shares and opt-out.

## Test behavior

* Rewards are approved 1 hour after the event completes and marked paid 1 day later. No money moves.
* Telemetry flags (`state_data_delayed`, `device_meters_data_delayed`) follow the program's intervals. Feeds stalled for 48 hours suspend the enrollment.
* Enrollment and unenrollment complete in minutes, though the user still sees the stated `join_days` and `notice_days`.
* The programs never appear to live-mode devices.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.