Tokfluence
Tokfluence
API Docs
Concepts

Credits

How it works

Each successful API call debits credits from your wallet. Most endpoints debit before the work is done; search and semantic search debit after the page is built, for the call and the profiles with contact details in it. Out-of-credits short-circuits with 402 insufficient_credits and never invokes the underlying service.

Every response, including errors, includes X-Credits-Remaining so you can pace your client without polling the wallet.

http
HTTP/1.1 200 OK
X-Credits-Remaining: 9876
Content-Type: application/json

Refunds

Every metered call that does not end in 200, 201 or 204 is refunded in full, and so is a call that raises. That includes 4xx responses (for example 404 creator_not_found or 422 page_out_of_range) and 502 upstream errors. Each refund writes a negative-cost row to your ledger. You only pay when value is delivered.

A request refused by validation before it is metered is never charged in the first place.

Search billing

A search call costs 1 credit, plus 1 per profile with contact details it returns. That holds for creators.search, creators.semantic_search and the MCP search_creators tool.

  • A profile with contact details is a row that carries a contact_email, contact_emails, contact_phone or contact_phones value. Rows without one are free. A page of 50 with 14 emails on it costs 15; the same page with none costs 1.
  • Every page and every cursor call is its own call. An empty response costs 0. include=recent_posts adds nothing.
  • Control the cost with the contact filters. has_email=true returns only creators with an email, so every credit buys someone you can reach. has_email=false&has_phone=false returns only creators without contact details, at 1 credit a page of up to 100.
  • Creators removed by the stated-minors filter are neither served nor charged. On REST search, the same goes for creators removed by the below-minimum-engagement filter when you pass include_unknown_engagement.
  • If your balance cannot cover the call and every profile with contact details, the page still comes back whole. The first profiles with contact details that your balance covers keep their contact values. The others come back without them (has_email and has_phone stay true). Nothing is dropped, so a page keeps its place and a cursor keeps its next_cursor. Top up and ask for the same page again to read the rest.
  • At a balance of 0 the call returns 402 insufficient_credits and nothing runs.
  • A key created with contacts hidden never returns contact values, so it pays 1 credit per call.

REST responses carry the details in meta.billing; the MCP tool returns the same object as billing. On semantic search, meta.cost holds the credits this call charged.

ParamTypeNotes
unitstringAlways call.
credits_chargedintCredits this call charged: 1 for the call plus 1 per profile with contact details it paid for.
rows_with_contactsintRows on the page that carry contact details.
rows_with_contacts_chargedintOf those, the ones your balance paid for. The rest are returned without contact values.
capped_by_balancebooltrue when your balance did not cover every profile with contact details.
notestringWhen capped, a plain-language line saying what was left out.

X-Credits-Remaining is sent on every call.

Cost per endpoint

ParamTypeNotes
creators.search1 credit / call + 1 / profile with contact detailsPer page or cursor call. An empty page costs nothing. See search billing.
creators.show1 credit
creators.posts25 creditsCharged once even if many posts come back. A 202 analysis_pending is not charged.
posts.show1 creditCached read from the local index.
posts.comments2 creditsPer page of comments.
posts.analyze25 credits / URLCharged per URL submitted in the batch.
campaigns.create1 creditPlus 25 credits per post URL in the body.
campaigns.show1 credit
campaigns.metrics2 creditsAggregates the entire campaign.
campaigns.posts2 creditsSame cost for /influencers.
campaigns.delete0 creditsDestructive ops are free.
posts.refresh25 creditsExplicit re-fetch of a cached post.
creators.semantic_search1 credit / call + 1 / profile with contact detailsAn empty result costs nothing. See search billing.
seed_campaigns.create250 creditsStarts a crawl. Reading or updating a seed campaign is free.

On the MCP server, each tool is priced as the endpoint it wraps. suggest_campaign_keywords, which has no REST endpoint, costs 1 credit per call. Tools that read your own lists, crawls and Ultra Search results, plan_creator_list and get_credits are free. See MCP.

Ultra Search is not in this table: it uses your plan's monthly Ultra Searches, never credits. See Ultra Search.

Prices are per call unless the notes say otherwise. creators.posts is charged once per call, for up to 50 posts. posts.analyze is charged per URL submitted.

Refills & rollover

Your wallet refills on a 30-day cycle anchored to your subscription start. Each refill grants your plan's monthly credits on top of whatever is left over from the previous cycle. The exact next-refill date is shown on the Credits page.

Free: 50 credits a month, shared by the app, the API and MCP, no rollover. A free account can create an API key. Its 50 credits pay for web contact reveals, REST calls and MCP calls alike, and each cycle resets the balance to exactly 50: nothing carries over. A Developer plan adds a larger grant for the API.

On a paid plan, unused credits roll forward, but only up to one full monthly grant. After a refill your balance is capped at 2x your monthly grant. A quiet month doesn't double your runway forever; a busy month right after a quiet one gets a full extra cushion to draw on.

Example
On a 10,000-credit plan: if you used 3,000 in cycle 1 (7,000 left), refill brings you to 17,000. If cycle 2 is quiet, refill would naively bring you to 27,000, but the cap clamps the carryover at 10,000 so your post-refill balance is 20,000. The 7,000 above the cap is lost.
Need more credits than your monthly grant? One-shot top-up packs are on the roadmap and will not be subject to the rollover cap. For now, talk to us about a higher-tier plan.