Scribble account API: keys, designs, handwritings and credits
For developers
Four small GET endpoints that answer the questions every integration asks first: is this key any good (/me), which card can I send (/designs), which hand can I write in (/handwriting), and can I afford it (/credits). None of them cost a credit or change anything.
On this page
design_id and handwriting on a send both take an id, and for a long time there was no way to find one except by opening the web app and reading a uuid out of the address bar. These endpoints are that missing half. They are also what populates the dropdowns in a Zapier or Make connector, which is why a key scoped only to cards:send can still read the two catalog endpoints.
#GET/api/v1/me
Check a key and read the account it belongs to. Use this as your connection test.
Requires scope any valid key
curl https://scribblecards.com/api/v1/me \
-H "Authorization: Bearer sk_live_U9BXdSSU_your_key_here"{
"object": "account",
"organization": {
"name": "On Top of I.T.",
"default_handwriting": "miriam"
},
"key": {
"name": "Production CRM",
"prefix": "sk_live_U9BXdSSU",
"scopes": ["cards:send", "cards:read"]
},
"credits_available": 625,
"can_send_cards": true
}#GET/api/v1/designs
List your saved card designs. These ids are what design_id takes.
Requires scope cards:read or cards:send
{
"object": "list",
"has_more": false,
"data": [
{
"id": "1cba1acd-6988-443d-af00-46e64ef56d89",
"object": "design",
"name": "Holiday 2026 — clients",
"kind": "card",
"source": "catalog",
"preview_url": null,
"created_at": "2026-08-05T06:54:26.205Z",
"updated_at": "2026-08-05T06:57:20.553Z"
}
],
"note": "Pass an `id` from this list as `design_id` on POST /api/v1/cards. Every card is a greeting card with a printed front — leaving it out uses your most recent design."
}#GET/api/v1/handwriting
List the handwritings on offer. These ids are what handwriting takes.
Requires scope cards:read or cards:send
{
"object": "list",
"has_more": false,
"default": "agnes",
"styles": ["Everyday", "Quick", "Flowing", "Print", "Classic", "Wildcard"],
"data": [
{
"id": "agnes",
"object": "handwriting",
"name": "Agnes",
"style": "Everyday",
"is_default": true,
"sample_font_url": "https://scribblecards.com/fonts/all_fonts/agnes.ttf"
}
]
}This endpoint lists the 30 current handwriting choices. Group a picker by style so people can browse by appearance. The styles array retains all recognized categories, including the legacy Wildcard category. All 198 known handwriting ids remain valid for saved work and API calls. An older house handwriting can therefore appear in default even when it is absent from data.
#GET/api/v1/credits
How many cards you can still send.
Requires scope any valid key
{
"object": "credit_balance",
"available": 625,
"balance": 625,
"reserved_for_campaigns": 0,
"cards_you_can_send": 625,
"top_up_url": "https://scribblecards.com/app/credits"
}Read available, not balance. The difference is credits a scheduled campaign has already promised — spending those would leave the campaign short on the morning it runs.
Last checked against the product on . Something wrong or missing? Tell us.
