hdp_test_. Test consultations are synthetic: they never reach a doctor, create no medical record and are never billed. Nothing moves on its own, so you advance each consultation yourself with the test advance endpoint and receive the same webhook events as in live mode.
Last reviewed: 2026-11-04
What is Partner API test mode?
- You use a key that starts with
hdp_test_. Every resource it creates is a test resource. Consultations, patients and webhook endpoints carry"mode": "test"; uploads, information requests, prescriptions and webhook deliveries have nomodefield and belong to the key’s mode. - Test consultations are synthetic. They never reach a doctor, no medical record is created and nothing is billed.
- Test uploads are checked exactly like live uploads, but are never turned into patient documents.
- Test and live data never mix: a test key gets
404for live resources and a live key gets404for test resources. - Webhook endpoints are registered per mode. Test events go only to test endpoints, and are signed and sent with the same Standard Webhooks headers as live events, so the same verifier works in both modes.
Why does a test consultation not move on its own?
A test consultation stayssubmitted until you move it. There is no automatic simulation, so your tests are deterministic.
Advance a test consultation
POST /v1/partner/test/consultations/{id}/advance/ moves a test consultation to the next status and emits the same webhook event a live consultation would. It requires consultations:write and answers 404 to a live key.
consultation.info_requested, carries it as data.
In which order is the advance body checked?
info_requested creates a synthetic information request that you answer with the normal answer endpoint, so you can test that flow end to end.
How do I cover every branch in a test run?
- Submit a test consultation. It is
submitted, version 1. - Advance to
in_review. You receiveconsultation.in_review. - Advance to
info_requestedwithreason_codeandquestion_keys. You receiveconsultation.info_requested. - Answer the request through the API, or advance to
in_review. The consultation returns toin_review. - Advance to
approved, then toprescription_issued. You receiveconsultation.approvedandprescription.issued. - Repeat with
rejected, and cancel a fresh consultation straight after submission withPOST /v1/partner/consultations/{id}/cancel/(not the advance endpoint), to cover every branch.
How do I move from test to live?
Test mode proves your integration; it does not enable live mode. Live mode is enabled for each partner by Hi Doctor once the Go-live checklist is complete. Until then a live key gets403 partner_not_live.
Frequently asked questions
Do test consultations reach a doctor?
No. Test consultations are synthetic. They never reach a doctor, no medical record is created and nothing is billed.Are test webhooks signed like live webhooks?
Yes. Test events go only to test endpoints and are signed and sent with the same Standard Webhooks headers as live events, so the same verifier works in both modes.How do I test an information request?
Advance the consultation to info_requested with a reason_code and question_keys. It creates a synthetic information request that you answer with the normal answer endpoint.How do I get a test prescription?
Advance the consultation to approved, then to prescription_issued. Each repeat adds another synthetic prescription and the status stays approved.Can a live key use the advance endpoint?
No. The advance endpoint answers 404 to a live key and requires the consultations:write scope.Does finishing test mode enable live mode?
No. Hi Doctor enables live mode for each partner once the go-live checklist is complete. Until then a live key gets 403 partner_not_live.Next steps
Quickstart
Run a first test consultation end to end.
Information requests
Read and answer a doctor’s request.