Blog
Test your enrichment integration on the five free credits, before you wire up billing
An auth failure, a rate limit, and a malformed identifier all cost zero credits. So you can exercise almost your whole integration on the five signup credits.
You get five credits on signup and no card is asked for. The more useful number is a different one: an authentication failure, a bad request, a rate limit, and an outage all cost zero credits. Only an answered lookup bills. So you can build and test almost your entire integration before you spend a single credit, and the happy path itself is one credit per lookup.
What a smoke test actually costs
One credit per answered lookup, at $0.005 per credit. A 404 is an answered lookup too, because searching for an identifier that turns out to have no record is the same retrieval as finding one. Everything that fails before a lookup is free.
| Response | Credits |
|---|---|
| Profile or company returned (200) | 1 |
| No record for a valid identifier (404) | 1 |
| Bad key (401) or no balance (402) | 0 |
| Malformed request (400) | 0 |
| Rate limited (429) or unavailable (502 / 503) | 0 |
That table is the whole testing strategy. The two rows that cost a credit are the two you want to trigger deliberately and rarely. Every other row you can hammer while you build. The exact per credit pricing and the free tier live on the pricing page.
The happy path is one or two credits
Confirm your key works and the shape is what you expect. Two GET endpoints, an ApiKey header,
and the provenance in the response headers rather than the body:
$ curl -sD- -H "ApiKey: $KEY" \
"https://api.triguna.ai/v1/people/profile?profile_id=williamhgates"
HTTP/2 200
X-Data-Source: store
X-Fetched-At: 2026-07-28T09:14:22Z
X-Data-Age-Seconds: 331088
X-Credits-Charged: 1
Read X-Credits-Charged on every response and you never have to infer the bill. One call to
/v1/people/profile and one to /v1/companies/details proves both the person
API and the company API end to end for two
credits. If you only want to confirm the key and see your balance, GET /v1/credits is free and
spends nothing.
Exercise the error path without spending
The part of an integration that is hardest to test is usually the failure handling, because triggering real failures against a paid API feels expensive. Here it is free. Send a bad key and you get a plain-text body and a header that confirms the cost:
$ curl -sD- -H "ApiKey: not-a-real-key" \
"https://api.triguna.ai/v1/people/profile?profile_id=williamhgates"
HTTP/2 401
content-type: text/plain; charset=utf-8
X-Credits-Charged: 0
invalid api key
Errors are plain text, not JSON, so parse the status code and not a body field. A malformed request is rejected before it reaches a lookup, so it never bills. Omit a required parameter and the request is validated and refused:
$ curl -s -H "ApiKey: $KEY" "https://api.triguna.ai/v1/people/profile"
{"detail":[{"type":"missing","loc":["query","profile_id"],"msg":"Field required","input":null}]}
Because 401, 402, 429, 502, and 503 are all free, you can wire up and prove your full retry and backoff logic on the signup credits: retry 429, 502, and 503, and never retry 401, 402, or 404. The reasoning for each code is in which enrichment errors to retry.
Then integrate for real
Once the smoke test passes, the production concerns are pacing and picking what to call. Both are covered by the shipping patterns. The plain-text errors and the small two-endpoint surface are a deliberate design choice you can read about on the about page.
Next
- Enrich on signup: the pattern for a first real enrichment call.
- Why lookups return 404: the identifier traps that turn a free test into a billed mistake.
- Pricing: one credit per answered lookup, five free on signup.
- API reference: the full parameter and header detail, and sign up for a key.