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 catalogue 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. Leave design_id out and the card is sent on plain stock."
}#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": "miriam",
"styles": ["Everyday", "Quick", "Flowing", "Print", "Classic", "Wildcard"],
"data": [
{
"id": "miriam",
"object": "handwriting",
"name": "Miriam",
"style": "Print",
"is_default": true,
"sample_font_url": "https://scribblecards.com/fonts/all_fonts/miriam.ttf"
}
]
}Every hand is named after a person, and there are around two hundred of them. Group your picker by style — two hundred first names in alphabetical order tells nobody whether Adelaide is a tidy print hand or a looping cursive. The styles array is the full set, in the order we show them.
#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.