Billing & Credits
How Fiber's credit-based pricing works — per-item costs, free operations, and cost-control levers.
Billing & Credits
Fiber runs on a credit-based model. You hold a credit balance; chargeable operations consume credits per result/item; many supporting operations are free. Pricing is designed to be transparent and predictable, with free previews/estimates and authoritative post-call reconciliation.
How credits work
- Per-item pricing. Chargeable operations bill per result or per item found (e.g., per company returned, per email revealed), not per API call. A search that returns nothing costs nothing.
chargeInfois authoritative. Every chargeable response includesoutput.chargeInfo(orchargeInfo) — the real amount charged. Always surface it verbatim rather than estimating from published rates.- Check balance (free):
GET /v1/get-org-credits?apiKey=xxx. - Estimate before charging: where an estimate endpoint exists (e.g., the
audience
estimateEnrichmentCost), call it and confirm before committing. - Some operations are volume-tiered. The per-unit price for an operation
can step down once you pass a threshold within a period, so a large job's
average cost may land below the published rate.
chargeInforeflects what you actually paid. - Costs can be fractional. Credits are tracked at sub-credit precision, so an operation may cost 1.5 credits rather than rounding up to 2.
Managing billing over the API
Six endpoints cover balance, purchase, and limits:
| Operation | Call | Cost |
|---|---|---|
getOrgCredits | GET /v1/get-org-credits | Free |
getRateLimits | GET /v1/rate-limits | Free |
buyCredits | POST /v1/buy-credits | Charges your card |
getAutoTopupSettings | GET /v1/auto-topup/settings | Free |
updateAutoTopupSettings | POST /v1/auto-topup/configure | Free |
cardsAttach | POST /v1/cards/attach | Free |
getOrgCredits returns one entry per subscription — max, used,
available, and usagePeriodResetsOn, plus creditsPerOperation carrying
your organization's actual per-operation pricing, which supersedes the
representative table below.
getRateLimits returns the effective limit for every endpoint as
method/path/max/window, so a client can read live values instead of
hardcoding them.
Reads allow 120 requests/minute; settings changes allow 10/minute.
Representative per-item costs
| Operation | Credits |
|---|---|
| Work email reveal | 2 |
| Personal email reveal | 2 |
| Phone number reveal | 3 |
| Live fetch (profile or company) | 2 |
| Company search result | 1 |
| People search result | 1 |
| Job posting search | 1 / posting returned |
| Job posting count | 1 / request |
| Audience build | 1 / company found + 1 / prospect found |
| Tracker entity check | 2 / entity / refresh |
| Hotel search page | 2 |
| Hotel property lookup | 2 |
Actual per-org pricing may differ. Always trust the live estimate endpoints
and the chargeInfo in each response over static tables.
Some products bill per operation/request instead of per item (for example,
market-intelligence lookups like hotels/flights/finance and social media APIs
bill per call). The response's chargeInfo tells you exactly what a given call
cost.
Free operations
Many operations cost nothing:
- Account/observability: check credits (
get-org-credits), rate limits, health check, reference enums. - Search previews:
companyCount,peopleSearchCount,jobPostingSearchCount— see counting before you spend. - Audience setup: create audience, set search params, estimate enrichment cost, poll status.
- Tracker: adding entities, reading signals, managing lists, firing dummy signals, previewing signal payloads.
- Reverse phone lookup: only charges when a result is found — no charge for invalid numbers or misses.
Running out of credits
A chargeable call with an empty balance returns HTTP 402 with an
outOfCreditsAlert containing a purchase URL. Handle this in production code so
long-running jobs can pause and resume rather than crash.
Top-ups
Top-ups add credits to your balance immediately, charged to your card on file.
No plan change, no interruption to your current cycle. Buy them with
buyCredits (POST /v1/buy-credits).
- Purchase bounds: a single top-up is between 1,000 and 1,000,000 credits. Machine-initiated pay-as-you-go purchases can go as low as 100.
- Price depends on your plan: $20 per 1,000 credits on a subscription, $30 per 1,000 on pay-as-you-go. Organization-specific pricing may differ, and the checkout amount is authoritative.
- Safe retries: purchase requests are idempotent — retrying a timed-out request won't double-charge you.
- Rate limit: 2 requests/minute. Deliberately low, because this endpoint charges real money.
buyCredits charges a real card immediately. There is no confirmation
step and no dry run. Put a human approval in front of it when calling from
an agent or an automated job.
Auto top-up
Manual top-ups don't scale to high-volume API usage — one burst of parallel jobs can drain a balance before anyone notices. Auto top-up removes the cliff: when your balance dips below a threshold you choose, Fiber automatically charges your card and adds credits, keeping jobs running without intervention.
Configure it with updateAutoTopupSettings
(POST /v1/auto-topup/configure) and read it back with
getAutoTopupSettings (GET /v1/auto-topup/settings):
| Field | What it does |
|---|---|
creditThreshold | The balance that triggers a top-up (e.g. top up when under 5,000). Required when enabling |
creditsToBuy | How many credits each automatic top-up buys, between 1,000 and 1,000,000. Required when enabling |
maxPerDay | Cap on the number of top-ups in a rolling 24-hour window. Null for no daily limit |
maxPerMonth | Cap on the number of top-ups per calendar month, UTC. Null for no monthly limit |
The caps count top-ups, not dollars. maxPerDay: 3 means at most three
automatic purchases in 24 hours; with creditsToBuy: 50000 that is up to
150,000 credits per day. Multiply the two for your maximum exposure.
Good to know:
- Settings are per subscription, not per organization. Each carries its own
subscriptionId, so an org with several subscriptions configures each one separately, andgetAutoTopupSettingsreturns a list. A subscription that has never been configured returnsconfigured: false. - Hitting a cap pauses, it doesn't disable. Daily caps release when the rolling window passes; monthly caps release at the start of the next calendar month. Manual purchases never count against either.
- The threshold check runs alongside charging, so a balance that crosses it is refilled within moments rather than on a nightly schedule.
- It never un-pauses a paused account. If your subscription is paused, auto top-up won't charge you — reactivation is always an explicit action.
- Auto top-up and automatic cycle resets are mutually exclusive on the same subscription. Turning one on means the other stops firing for that subscription; different subscriptions in the same org can use different strategies.
Early reset & plan changes
Two situations restart your billing period now instead of at its natural end:
- Plan change — switching tiers starts a fresh period from the moment of the switch, with no proration: you aren't charged for unused time on the old plan and don't get partial credit for it either.
- Early reset — you can also deliberately start a fresh period early, reactivating a paused account this way if needed.
Use an early reset when you've exhausted your allocation mid-cycle and want the new period's credits immediately rather than topping up à la carte — which one is cheaper depends on your volume, so compare against the top-up rate first.
Other things worth knowing
- You get a 14-day grace period. When a usage period ends, credits stay usable for 14 days before restrictions apply, so in-flight work isn't cut off at the boundary and a renewal landing inside that window rolls over cleanly.
- Trials start with 500 credits, regardless of which plan you're trialling.
- You'll hear before you run dry. Low-balance alerts fire around 500 credits remaining, and a separate notification goes out when you're down to 10% of your allocation.
- Everything is visible.
fiber.ai/app/usageshows credits used, exported rows, and every API call;fiber.ai/app/subscriptionhandles plans, balances, and top-up settings. - Check balance programmatically.
GET /v1/get-org-credits?apiKey=xxxis free — poll it around big jobs if you want hard guarantees before fanning out. - Trust
chargeInfo, not estimates. Published rates are representative; thechargeInfoon each response is what was actually charged.
Cost-control levers
- Size before you spend. Use the free
*Countendpoints and audience cost estimates to iterate on filters before pulling results. - Cap volumes. Set sensible limits on every bulk job:
maxCompanies,maxProspects,maxProspectsToEnrich,maxRowsToExport, Tracker refresh interval, Google Maps "Max locations". - Scope enrichment. Request only the
enrichmentTypefields you need — skipping personal emails or phone numbers saves credits. - Pick the right tier. For reveals, start with Quick Reveal and escalate only when needed — see the decision ladder.
- Prefer batch/audience flows over many single calls for bulk work — fewer, larger jobs are cheaper to orchestrate and easier to reconcile.
- Read your real prices.
getOrgCreditsreturnscreditsPerOperationfor your organization; budget against that rather than the table above.
Related
- Search — per-result pricing and the free count endpoints.
- Live Fetch — what a fetch costs and when a not-found still counts.
- Contact Reveal — the tier ladder, where most credit spend goes.