MARKETING · MARKETING
Order real handwritten cards, mailed from the account they connected.
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
handwrytten_delete_qrcode_by_idWRITEDelete a QR Code. Handwrytten DELETE /v2/qrCode/{id}.
handwrytten_get_auth_getuserREADReturns profile and account information for the user associated with the API key, including name, email, billing address, and credits. Most integrations won't need this — the main use case is checking remaining credits. Handwrytten GET /v2/auth/getUser.
handwrytten_get_basket_countREADGet the number of items in the user's basket. Handwrytten GET /v2/basket/count.
handwrytten_get_bundles_listREADReturns the list of active, in-stock bundles — physical items (such as a box of cookies) shipped to your recipient together with your card. The `id` field is what's passed as `bundle_id` on order calls. Handwrytten GET /v2/bundles/list.
handwrytten_get_cards_listREADGet a list of all cards available to the user, including any custom or privately-available cards. Handwrytten GET /v2/cards/list.
handwrytten_get_cards_list_sectionsREADGet a list of cards available to the user, grouped by categories. Handwrytten GET /v2/cards/list/sections.
handwrytten_get_cards_listcustomuserimagesREADList all custom images uploaded by the user. Handwrytten GET /v2/cards/listCustomUserImages.
handwrytten_get_cards_viewREADGet detailed information about a card. Handwrytten GET /v2/cards/view.
handwrytten_get_categories_listREADGet list of available card categories. Handwrytten GET /v2/categories/list.
handwrytten_get_checkauth_authREADVerifies that the provided API key or token is valid. Useful for validating a saved API key before storing it, or checking whether a `uid` token is still active before making other calls. Handwrytten GET /v2/checkauth/auth.
handwrytten_get_countries_listREADReturns the list of all supported countries, including available states/provinces and delivery costs. Handwrytten GET /v2/countries/list.
handwrytten_get_countries_liststatesREADReturns the list of states or provinces for a given country. Only applicable to countries that have states/provinces in the system (currently the United States, Canada, and Mexico). Handwrytten GET /v2/countries/listStates.
handwrytten_get_design_dimensionsREADReturns available card sizes and formats. Use the `id` (dimension_id) when creating a custom card. The `format` field indicates whether the card is flat (front and back) or folded (four surfaces: front, back, inside top, inside bottom). Handwrytten GET /v2/design/dimensions.
handwrytten_get_design_presetimagesREADReturns preset cover images available for a given card dimension. Use `preset_cover_id` or `preset_back_cover_id` in the Create Custom Card call to use one of these instead of a custom uploaded image. Handwrytten GET /v2/design/presetImages.
handwrytten_get_fonts_listREADReturns the list of available handwriting styles for use in orders. The `id` field is the font identifier to use in order calls; `label` is the human-readable name. Note: this endpoint returns order fonts only — card customizer fonts are a separate call. Handwrytten GET /v2/fonts/list.
handwrytten_get_giftcards_listREADGet list of gift cards and available denominations for purchase and inclusion in order. Handwrytten GET /v2/giftCards/list.
handwrytten_get_inserts_listREADGet list of custom inserts available for the account. Handwrytten GET /v2/inserts/list.
handwrytten_get_orders_detailsREADReturns full details for a given order, including status, recipient address, card, pricing, and delivery information. Most commonly used to check order status or delivery confirmation status (if delivery confirmation was added to the order). Handwrytten GET /v2/orders/details.
handwrytten_get_profile_addressREADGet user's default sender address. Handwrytten GET /v2/profile/address.
handwrytten_get_profile_listaddressesREADList Sender Addresses. Handwrytten GET /v2/profile/listAddresses.
handwrytten_get_profile_recipientslistREADGet list of recipient addresses in user's Address Book. Handwrytten GET /v2/profile/recipientsList.
handwrytten_get_profile_signaturesREADReturns the list of signatures available to the user. Signature IDs can be used in order calls to include a signature in the message or wishes fields. Handwrytten GET /v2/profile/signatures.
handwrytten_get_qrcodeREADGet a list of QR Codes on the account. Handwrytten GET /v2/qrCode.
handwrytten_get_qrcode_dashboardREADGet the statistics for the QR Codes on the account. Handwrytten GET /v2/qrCode/dashboard.
handwrytten_get_qrcode_framesREADGet a list of available QR Code frames. Handwrytten GET /v2/qrCode/frames.
handwrytten_get_shipping_stampoptionsREADReturns the list of available stamp options. The `id` field is what's passed as `stamp_option_id` on order calls. Stamp options apply to US orders; the field is ignored for international destinations. Handwrytten GET /v2/shipping/stampOptions.
handwrytten_post_auth_settestmodeWRITESwitches test mode on or off for the user associated with the API key. Pass `1` to enable test mode or `0` to return to live mode. In test mode, orders are accepted and processed normally but are not fulfilled. Handwrytten POST /v2/auth/setTestMode.
handwrytten_post_basket_clearWRITERemoves all items from the basket. Returns the list of items that were cleared. Handwrytten POST /v2/basket/clear.
handwrytten_post_basket_sendWRITESubmits all orders currently in the basket for processing. Credits are applied first; if the order total exceeds the available credit balance, the remainder is charged to the credit card on file or the one provided in the request. Handwrytten POST /v2/basket/send.
handwrytten_post_cards_checkuploadedcustomlogoWRITEValidates the print quality of an uploaded image. Returns a warning if the image resolution is below recommended, or an error if it is too low to use. Call this after uploading a cover image to catch quality issues before creating a card. Handwrytten POST /v2/cards/checkUploadedCustomLogo.
handwrytten_post_cards_createcustomcardWRITECreates a custom card using previously uploaded images and configuration. Use `dimension_id` to select the card size and format — see /cards/listDimensions for available options. Flat cards (e.g. dimension_id 1) have a front and back surface. Foldable cards (e.g. Handwrytten POST /v2/cards/createCustomCard.
handwrytten_post_cards_deletecustomlogoWRITEDelete a custom uploaded image. Handwrytten POST /v2/cards/deleteCustomLogo.
handwrytten_post_design_deleteWRITEDeletes a custom card created by the user. Handwrytten POST /v2/design/delete.
handwrytten_post_orders_cancelWRITECancel order by order id. Only orders with status `paid` can be canceled. Orders that have already been processed cannot be canceled and will return 400 error. Handwrytten POST /v2/orders/cancel.
handwrytten_post_orders_placebasketWRITEAdds an order to the basket without submitting. Supports both single and bulk recipients. Once all orders are added, call `/basket/send` to process payment and submit the orders. Handwrytten POST /v2/orders/placeBasket.
handwrytten_post_orders_singlesteporderWRITECreates and submits a complete order in a single API call. This is the most commonly used endpoint — for most integrations, it's the only one you'll need. Requires an API key in the `Authorization` header. See the [Integrations](https://app.handwrytten.com/integrations) page in your dashboard to generate one. Handwrytten POST /v2/orders/singleStepOrder.
handwrytten_post_outbound_addtobasketWRITEAdd prospecting campaign order to basket. Use `Send Basket` call to submit all orders in basket for processing. Handwrytten POST /v2/outbound/addToBasket.
handwrytten_post_outbound_calctargetsWRITECalculate targets for prospecting campaign. Handwrytten POST /v2/outbound/calcTargets.
handwrytten_post_outbound_processWRITEPreview prospecting campaign order pricing. Handwrytten POST /v2/outbound/process.
handwrytten_post_profile_addrecipientWRITEAdd a new recipient address to user's Address Book. Handwrytten POST /v2/profile/addRecipient.
handwrytten_post_profile_createaddressWRITEAdd a new sender address to user's Address Book. Handwrytten POST /v2/profile/createAddress.
handwrytten_post_profile_deleteaddressWRITEDelete a sender address from user's Address Book. Handwrytten POST /v2/profile/deleteAddress.
handwrytten_post_profile_deleterecipientWRITEDelete Recipient Address. Handwrytten POST /v2/profile/deleteRecipient.
handwrytten_post_profile_setdefaultaddressWRITESet user's default sender address. Handwrytten POST /v2/profile/setDefaultAddress.
handwrytten_post_profile_updaterecipientWRITEUpdate a recipient address in Address Book. Handwrytten POST /v2/profile/updateRecipient.
handwrytten_post_qrcodeWRITECreate a new QR Code. Handwrytten POST /v2/qrCode.
handwrytten_put_profile_updateaddressWRITEUpdate a sender address in user's Address Book. Handwrytten PUT /v2/profile/updateAddress.
Put Handwrytten behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.