Credits in the API
The API only deducts credits when Webmetic delivers a person's contact details to you.
Only two endpoints cost credits: POST /contacts/reveal and POST /contacts/find. For example, you use /contacts/search to look for the head of sales at a beverage maker that visited your pricing page. That search is free; only unlocking the email address costs credits.
You buy credits in the dashboard, not through the API. Where your credits come from and where you find the invoice is covered under Credits.
From call to deduction
- 1Request the unlockYou call
/contacts/revealor/contacts/findand choose email, phone, or both. - 2Check creditsWebmetic checks whether your credits cover every data type you requested. If they don't, the API answers with status
402. - 3Deliver dataWebmetic looks up the contact details and delivers what it finds.
- 4Deduct creditsWebmetic only deducts credits for the data types it delivered.
Paid and free endpoints
These endpoints cost credits:
POST /contacts/reveal: unlocks the email or phone of a person from your search. You choose the data type withreveal_emailandreveal_phone.POST /contacts/find: finds a matching person and unlocks their details in the same call. You choose withrevealbetweenemail,phone, andboth. Without a value, the call unlocks the email.
All other endpoints cost no credits: /contacts/search, /contacts/lookup, /contacts/credits, the Visitor Intelligence endpoints, and the webhooks. Enrichment currently costs no credits. For details, see Enrichment.
Requests with the demo key wmtc_demo never cost credits, not even on /contacts/reveal and /contacts/find.
Search and unlocking only work once your account has set up contacts. Until then, the API answers with CONTACTS_SETUP_REQUIRED.
The same rules apply in the AI assistant and in n8n, Make, and Zapier, because these connections use the same endpoints.
Deduction rules
Webmetic charges per data type, and email (with the LinkedIn profile when one exists) and phone are two separate types:
- Delivered data only: If Webmetic doesn't find a data type, that data type costs nothing, even when the search marked it as available.
- No match: If
/contacts/findfinds no matching person, the API answers withfound: falseand deducts nothing. - Opening again: Data your account has already unlocked costs nothing again for every user and key of your account. The response then contains
from_cache: true. - New data type: If you later request the phone in addition to the email, you only pay for the phone.
- Never twice: Webmetic deducts repeated or simultaneous requests for the same data only once.
- All or nothing: If you request email and phone in one call, Webmetic deducts both together or not at all.
- Errors: If a call ends with an error, Webmetic deducts nothing.
Another Webmetic account pays for the same data itself. An unlock can't be undone, and the API doesn't return a history of the credits you used.
Credits in responses
Every response from /contacts/search, /contacts/reveal, and /contacts/find contains two fields about your credits:
credits_used: how many credits this call deducted.credits_remaining: how many credits your account has left after the call.
So you don't need a separate credits call after each action.
Credits endpoint
GET /contacts/credits shows how many credits your account has and what each action costs. The call is free and also works before you set up contacts.
curl "https://hub.webmetic.de/contacts/credits" \
-H "Authorization: wmtc_YOUR_API_KEY"| Field | Type | Meaning |
|---|---|---|
balance | Integer | How many credits your account has. An account without credits gets 0, not an error |
costs | Object | Cost per action in credits |
costs.search | Integer | Searching for contacts |
costs.email | Integer | Unlocking the email |
costs.phone | Integer | Unlocking the phone |
costs.email_phone | Integer | Unlocking email and phone together |
Read the costs from costs instead of hard-coding them. The values are the same ones the dashboard shows when you unlock.
Not enough credits
If your credits don't cover the action, the API answers with status 402 and deducts nothing. Webmetic checks this before it fetches any data.
So the API can also answer with 402 when Webmetic wouldn't have found the data at all. As with every API error, the error is in the detail field:
| Field | Meaning |
|---|---|
detail.error | INSUFFICIENT_CREDITS |
detail.message | Readable text about the error |
detail.required | How many credits the action needs |
detail.available | How many credits your account has |
In that case, buy more credits in the dashboard and then repeat the call. The API can't buy credits and doesn't top up your credits automatically. All error codes are listed under Errors.