Handwritten notes API comparison for developers

Handwritten card APIs compared: auth, test mode, webhooks, idempotency, address checks, docs and SDKs at Handwrytten, IgnitePOST, Scribeless and more.

6 min read

If you are wiring handwritten cards into a product, the API matters more than the marketing page. A paper card cannot be recalled once it is mailed, so the details that are minor in most APIs, like retries, duplicate handling, and address checks, decide whether a customer gets one card, two cards, or none. This comparison covers six services that offer an API for pen-written cards: Handwrytten, IgnitePOST, LettrLabs, Simply Noted, Scribeless, and notecardHQ, which we run.

Everything below comes from each vendor's public docs and pages, checked on October 25, 2026. APIs change, so treat this as a starting point and read the current docs. Two labels in the tables are worth defining. "Not found" means we did not find it documented in the pages we reviewed. "Not checked" means we did not review that part, so we make no claim either way.

Auth, test mode, and webhooks

ServiceAuthTest modeWebhooks
HandwryttenAPI key in Authorization, no Bearer prefixYesPer-order webhook_url; no documented events or signatures
IgnitePOSTX-TOKEN headerYesOn fulfilled, up to 5 retries over about 6 minutes
LettrLabsNot checkedNot checkedNot checked
Simply Notedx-api-key and x-user-id headersNot mentionedListed as a plan feature; events not checked
ScribelessX-API-Key headerNot mentionedRecipient lifecycle and QR scan events, with test and resend tools
notecardHQBearer keyYes: test keysSigned (HMAC-SHA256), every status change, retried for about two days

Idempotency, addresses, docs, and SDKs

ServiceIdempotencyAddress checkDocsSDKs
HandwryttenNot foundOptional validate_address; free CASS validation on EnterpriseOpenAPI spec v3.15.0, RedocPython, npm
IgnitePOSTNot foundNot foundPublic docsNot found
LettrLabsNot checkedNCOA add-on per recordPublic docsNot checked
Simply NotedNot foundNot foundHosted on PostmanNone mentioned
ScribelessNot foundNot found in API docsPublic docsNot found
notecardHQIdempotency-Key headerUS addresses verified before acceptancePublic docs, quickstart, recipesNo official SDK listed

Sources for both tables: the Handwrytten OpenAPI spec, Handwrytten API page and pricing; the IgnitePOST API docs; the LettrLabs homepage and pricing; the Simply Noted API page and pricing; and the Scribeless docs.

Which plan gets you the API

  • Handwrytten: included in every business plan, from $449 a month, per its pricing page.
  • IgnitePOST: unlimited API calls on all plans, per its pricing page.
  • LettrLabs: included on the free Starter tier, per its pricing page.
  • Simply Noted: on the Unlimited plan at $497 a month, per its pricing page.
  • Scribeless: subscriptions for integration-based campaigns are priced by its sales team, per its pricing page.
  • notecardHQ: every account, no monthly fee. You pay per card mailed, and canceled notes never bill.

Service by service

Handwrytten

The most complete published spec in the group. Its OpenAPI spec covers 49 paths, and POST /orders/singleStepOrder is described as the only endpoint most integrations need. Test mode accepts orders without fulfilling them and authorizes payments without capturing them. Official SDKs ship on PyPI and npm. The webhook_url is a bare field per order, with no documented event list or signature scheme, and rate limits are not documented. The spec lists an optional validate_address flag on orders, and the Enterprise plan adds free CASS address validation, per its pricing page. Handwrytten also lists a Claude connector on its integrations page.

IgnitePOST

A clean REST design at dashboard.ignitepost.com/api/v1, documented in its public API docs. Test mode works with an X-TESTING: true header or a non-live key, and test orders are not persisted. There are endpoints for templates, fonts, images, inserts, orders, and previews. Messages are capped at 450 characters, and send_on defaults to three business days out. The single webhook fires on fulfillment, so anything earlier in the lifecycle means polling. We compare it with ours in more depth in IgnitePOST alternative.

LettrLabs

LettrLabs points to public API docs from its homepage and includes API access free. We did not review those docs, so we make no claims about its auth, test mode, or webhooks. Its pricing page lists NCOA address updates at $0.025 to $0.03 per record.

Simply Noted

Its API page describes a REST v2 API with x-api-key and x-user-id headers, one curl example, and docs hosted on Postman. No sandbox or SDK is mentioned. Webhooks are listed among the Unlimited plan's features on its pricing page, and its llms.txt describes individual or batch requests "via webhook or scheduled job."

Scribeless

The Scribeless docs describe a campaign-based API at platform.scribeless.co/api: templates, campaigns, recipients (including bulk HTML, PNG previews, and checkout), and partner workflows for creating partner teams. Its webhooks are the broadest among the docs we reviewed, covering recipient lifecycle events and QR scans, with tools to test and resend them. No sandbox is mentioned. Note that how Scribeless produces its handwriting, pen or print, is disputed: its docs describe rendering handwriting as a PNG and do not mention pens.

notecardHQ

One card per request: POST /api/v1/notes with a Bearer key. The Idempotency-Key header means the same key and the same body return the same note, never a second card. US addresses are verified before a note is accepted, and an undeliverable address returns a 422 with nothing created. A note's status is created, card_printed, card_dispatched, or cancelled, and you can GET it at any time. Each note is written by a robot holding a real pen, after OCR has read every word back. Our handwritten notes API guide covers the request in detail.

The gaps, plainly: there is no native CRM marketplace app; Stripe, Shopify, and Zapier work through our recipes. There are four handwriting styles and no custom fonts.

Why idempotency and address checks matter more for paper

In most APIs, a duplicate request makes an extra database row you can delete. Here it makes a second envelope in someone's mailbox. Queues redeliver, workers retry after timeouts, and webhooks from your own systems fire twice. An idempotency key built from something stable, like an order ID plus the reason for the card, turns all of those into one card.

Address checks matter for the same reason. A card mailed to an undeliverable address costs you the card and tells you nothing. Rejecting it at request time puts the error where your code can handle it.

What to test before you choose

  1. Send the same request twice with a deliberate timeout. How many cards would go out?
  2. Submit a bad US address. Do you get an error now, or a returned card later?
  3. Find out which events you can receive, and whether payloads are signed.
  4. Check which plan unlocks the API, and what it costs at your volume. Our roundup of handwritten note services lists published prices.

For broader comparisons, see the compare page and our pricing.

Start with the quickstart, or read the full reference in the notecardHQ API docs.