the authenticity API
Anyone can tell you whether a token can mint more supply. That is a public RPC call and it is free everywhere. Nobody else can tell you whether the artwork is real, who actually drew it, and whether that person endorsed the coin wearing it. That answer needs a provenance corpus, resolved creator identities, an attested rubric, and Telegram's own set-id math. It is one call.
the endpoint
GET /api/v1/authenticity/ton/{token_address}
{
"verdict": {
"grade": "F",
"score": 8,
"flags": ["DISPUTED_BY_CREATOR", "MINTABLE"],
"headline": "Impersonation — the artist rejects this
token's claim to their artwork.",
"plain_english": "This token uses artwork from a sticker
set whose real creator has disputed any connection to
it. The people selling this do not have the artist's
endorsement."
},
"asset_provenance": {
"short_name": "…",
"authorship_basis": "set_id >> 32 (Telegram protocol)",
"creator": {
"handle": "@…",
"attested_this_token": false,
"disputed_this_token": true
},
"lore_marks": ["telegram-official"],
"record_url": "https://www.stickercap.io/set/…"
},
"supply_integrity": { "grade": "D", "capped_by": "MINTABLE", … },
"market_context": { "market_cap_usd": …, "liquidity_usd": … }
}Open during early access, because an authenticity answer nobody can reach protects nobody. Send X-API-Key: keys are free and becoming required (with higher limits and webhooks) before general availability. Responses cache for 10 minutes.
linking to a record
GET /api/v1/set/{short_name}
{
"known": true,
"record_url": "https://www.stickercap.io/set/certifiedglowie",
"title": "certified glowie",
"thumbnail_url": "https://www.stickercap.io/api/thumbs/certifiedglowie",
"telegram_url": "https://t.me/addstickers/certifiedglowie",
"creator": {
"telegram_id": 6330629460,
"handle": null, // "@hollowtradr" with a key
"authorship_basis": "set_id >> 32 (Telegram protocol)"
},
"token": null
}If the pack is not on the docket yet you get known: false, expected at launch since nobody has pasted it. With a key we queue it and file it within minutes (filing: "queued"); retry then, and the record URL is permanent from that point. Use this one at launch. The authenticity call keys on a token address, which only exists once a token is filed and linked. At the moment a launchpad wants to link out, that is not true yet. The set's short name is the only identifier that is already true, and the record it returns is permanent: filing a pack is free, and the URL survives the token.
curl -H "X-API-Key: $KEY" https://www.stickercap.io/api/v1/set/certifiedglowie
# a set nobody has filed yet: an honest unknown, never a guess.
# with a key we queue it and file it within minutes.
curl -H "X-API-Key: $KEY" https://www.stickercap.io/api/v1/set/nobody_filed_this
{ "known": false, "filing": "queued", "record_url": null,
"file_it_url": "https://t.me/stickercapbot" }Send a key. During early access these rails may answer without one, and that is closing. Keys are free, granted on request, and take a minute: ask @stickercapbot. Building against a key today means nothing changes for you when it becomes required. Rate limits are generous and per caller, and a X-API-Key raises the ceiling and returns resolved creator handles. Machine-readable spec: openapi.json. Import it into Swagger UI, Postman, or any client generator. It describes these two rails and deliberately nothing else.
Logos for partner surfaces, transparent ground, vector and raster: mark (svg) · mark (png 1024) · lockup for dark · lockup for light
the index
GET /api/v1/index/sticker20
{
"index": "STICKER20",
"value": 159.16,
"delta_24h_pct": -5.2,
"regime": "risk-on",
"base": { "date": "2026-07-18", "value": 100.0 },
"as_of": "2026-08-23",
"constituents": 20,
"series": [ { "date": "…", "value": … } ],
"attribution": "STICKER20 by stickercap"
}STICKER20 is the docket's reference index: cap-weighted and chain-linked daily, base 100 at 2026-07-18. Each day's return uses only tokens present on both days, so a newly listed coin enters without moving the level: coverage growth is never mistaken for a rally. Add ?series=false for just the number.
The methodology ships in the response, deliberately. An index is a claim about a market, and rendering the level on your own surface inherits that claim, so say where it came from. Full rubric: the methodology page.
what stays free, and what won't
free forever/api/v1/set, the deep link and what a card needs: title, thumbnail, record_url, and the creator's telegram id. Build on it. A bot that answers with our record and our link is how people find the docketneeds a key (free)the creator's resolved @handle. The id is a Telegram protocol fact anyone can recompute; mapping it to a name has no API at all, and we did that work by hand. Keys are free: it is attribution, not a paywallrate limitsgenerous, per caller, and a key raises the ceiling. Not secrecy, since public facts stay public. It is just so bulk reconstruction costs time and has a name on itkey restrictionsa key can be restricted to your own domain, so one lifted out of your page is useless on someone else's site. Browsers cannot lie about Origin and other clients can, so it scopes a key, it is not a security boundary. Server-side calls send no Origin and are unaffected. Ask and we will bind yourspro at GA/api/v1/authenticity, the verdict: creator attestation, the disputed-artwork case, supply integrity, market context. This is the answer that needs the corpus, and it is the one we sellfree right nowboth, unmetered, no key required, during early access. When the metered tier starts, existing integrations get notice and a key, not a broken buildOne condition on the free tier: say where it came from.
Show powered by stickercap anywhere our data appears, linked to the record it came from: the record_url that comes back on every call, not the homepage. A reader who lands on the exact pack is already reading; one who lands on the front door has to start the search over. That is the whole price, and it is the deal we would rather have than your money. Tell us when you ship and we will run your tool on the docket in return.
powered by stickercap · stickercap.io/set/{short_name}
<a href="https://www.stickercap.io/set/{short_name}">powered by stickercap</a>
logo: stickercap.io/brand/stickercap-mark.svg (transparent)
# the record, not the homepage: record_url comes back on every callWant a key before then? Ask @stickercapbot. Keys are free during early access and exist so your usage is attributed to you, which is what gets your integration considered when limits arrive.
what the verdict can say
DISPUTED_BY_CREATORthe artist rejects this token's claim to their artwork: the impersonation case, and the answer no competitor can returnUNATTESTED_BY_CREATORthe link is an admin filing, not the artist's endorsementMINTABLEa live admin can still create supply, which caps the grade at DCONCENTRATEDtop-10 wallets hold more than half the measured supplySUPERSEDED_LINKa real previous token whose market wound down; kept as historyUNKNOWN_ASSETwe have no filed record. absence is not an accusation. it means unverifiedwho this is for
- marketplaces: a listing that turns out to be unauthorized IP is your risk, and you cannot compute artwork authenticity at any price. Screen at listing time.
- wallets and trading bots: show the artist's own verdict next to the buy button.
- launchpads: refuse the impersonation before it becomes your incident.
Every field is derived from the public record, the same record you can read at the rubric. We publish the method because a grade is a claim, and a claim you cannot check is marketing.
