Group stats for your website, blog or profile: raw JSON and restylable copy-paste widgets.
Read-only JSON over GET with open CORS works in browsers on any site.
Base URL https://detf.com. Publicly hidden groups stay hidden here.
GET/api/v1/groups/{id}/statsno key
Public group stats: members, proposals by status, votes cast, hiring, stored treasury; cached ~5 minutes.
GET/api/v1/users/{username}/groupsno key
A member's listed groups, each with public stats and their tier, role and member-since.
GET/api/v1/me/groupsAPI key
All the key owner's groups, including hidden ones, with per-group contribution counts; uses the key's daily limit.
GET/api/v1/widgets/badge?group={id}&metric=membersno key
Script-free SVG badge for READMEs and forums. Metrics: members, votes, proposals, active, hiring. Optional label= and color= (hex).
GET/api/v1/store/items?group={id}no key
A listed group's sale items for your site: stored prices, options (sizes, colours) if any, plain pay links and checkout switches (shipping, promo codes). Repository-governing groups list items in .d8a's items: block; others use their Admin tab.
POST/api/v1/store/checkoutno key
{ group, item, quantity?, variant?, returnUrl? } or { group, lines: [{ item, quantity?, variant? }], returnUrl? } → { url }. One card checkout at stored prices, up to 20 cart lines; listed options require a selection. Any origin, 10/min per IP. Proceeds enter the group's shared credit balance; shipping address and promo codes follow its Admin-tab switches.
GET/api/v1/store/orders/{orderId}?group={id}no key
Verifies a paid order belongs to this group: { paid: true, order } or 404. Paid buyers return with ?d8a_order=<id>; the widget verifies it here and fires group-store:paid.
Example response
GET /api/v1/groups/{id}/statssample{
"group": {
"id": "harbour-works",
"name": "Harbour Works",
"url": "https://detf.com/g/harbour-works",
"logoUrl": "/uploads/harbour-works.png",
"network": null,
"createdAt": "2026-02-14T09:12:03.000Z"
},
"members": 128,
"proposals": { "total": 41, "active": 3, "passed": 29, "rejected": 9 },
"votesCast": 612,
"hiringOpen": true,
"treasuryUsd": 18400,
"treasury": null,
"updatedAt": "2026-08-11T07:45:00.000Z"
}All widgets read this payload; Raw JSON prints it unchanged.
Keys appear only at creation and can be revoked anytime.
Create keys in Settings → API & widgets.
Keyless endpoints
No key or daily quota. The ~5-minute group stats cache prevents overload and stale data. Badge and username lookups allow 300 requests/minute per viewer IP; excess JSON requests return 429 withRetry-After, while badges return 200 with a grey “rate limited” image, avoiding broken README images.
Keyed endpoints
Personal requests: 100/key/day, resetting midnight UTC. Rate headers (X-RateLimit-*) accompany every keyed response. Public-page keys are visible to every visitor: fetch server-side; revoke and replace leaked keys in Settings.
null.Connect a chat account in Notifications. Send the bot /stats on Telegram or Discord (or DM stats where supported) for current stats across your groups; channels that can't receive commands offer an optional weekly digest.
Copy plain HTML, CSS and JS that fetch the JSON above, replace the id and restyle — no installation.
All widgets below run live against a real group on this site.
Unstyled payload
Raw JSON
The whole response, pretty-printed. Everything below is this same payload, styled.
Every stat, linked to group tabs
Hero banner
Gradient banner, big numbers, light body. Four palettes ship in the snippet comments.
Aurora glass
Animated gradient ring, glass stat tiles, pass-rate bar.
Code editor
The stats as syntax-highlighted JSON in an editor window.
Editorial
Stark magazine layout with a huge member count.
For footers, sidebars or READMEs
Stats card
The plain starting point — four numbers in a box, easiest to restyle.
Stats strip
One line of text for a footer, a sidebar, or under a headline.
Badge image
An SVG image, so it works where scripts don't — READMEs, forums, most blog engines.
One member's groups, not one group
Member's groups
Every listed group a username belongs to, with their role. Keyless.
My groups + contributions
Your own groups — hidden ones included — with what you've contributed to each. Needs a key.
Buy buttons: card payments into your group's credit balance
Sell on your site
Your listed items with a Buy button each — card checkout, proceeds into the group's credit balance.