Test environment
Run the complete Openhandle API against deterministic synthetic data with a $0.000 actual charge.
Make this request first:
curl "https://api.openhandle.dev/v1/instagram/profiles/@northstar_forge_test" \
-H "Authorization: Bearer $OPENHANDLE_TEST_KEY"A Test API key selects a safe synthetic data universe. It starts with
oh_test_. The key, not a username, header, query parameter, or tool argument,
selects the environment.
Test and Live use the same routes, parameters, response schemas, pagination,
and error handling. A test request still passes through authentication,
validation, rate limits, request history, pricing, and immutable usage logging.
The actual charge is always $0.000 and the normal live-equivalent price is
recorded separately.
Test requests never call an external data service. They do not consume an allowance, move a live price band, take money from your balance, or enter the accounting totals.
What a test answer contains
A test answer fills the same fields a live answer does. We build each one from
a real answer we reviewed, then replace every name, text, handle, ID, link,
phone number, and place with made-up values. Counts, flags, dates, and platform
values such as type keep their real shape.
Nothing in a test answer belongs to a real person or account. Handles are made
up, such as northstar_forge_test. Links use made-up paths, point to
example.openhandle.dev, or point to our test media.
Records with the sparse, nullable_metrics, or omitted_optional_fields
trait keep their empty fields on purpose, so you can test how your code handles
null. See data states.
Response metadata
An answered test request includes these headers:
| Header | Meaning |
|---|---|
Openhandle-Environment: test | The Test environment answered the request. |
Openhandle-Cost: 0.000 | Authoritative actual charge. |
Openhandle-List-Price | Price of the same request in Live, for the source and freshness that answered it. A cache hit shows the cache price. |
Openhandle-Billing-Disposition: test | The request is excluded from billing. |
Openhandle-Dataset-Version | Exact synthetic dataset used. |
X-Request-ID | Identifier used in Requests and Usage. |
Openhandle-Source remains live or cache. In Test, live means a fresh
synthetic read. It does not mean that Openhandle contacted an external service.
Start here
- Create a Test API key.
- Find a documented synthetic record.
- Call a normal endpoint or use the dashboard Playground in Test mode.
- Inspect the request and its
$0.000charge in Requests or Usage.
No payment method or free Live request is required for this flow. You only verify your email with the code we send at signup.