Handwrite IO · OpenAPI Overlay 1.0.0

API Evangelist enhancements for Handwrite IO Orders API

5 actions 5 updates documentation extends openapi/handwrite-io-orders-api-openapi.yml
Derived by API Evangelist Built from the contracts Handwrite IO publishes. Handwrite IO did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-providerx-apievangelist-artifactsx-spec-provenancex-scheme-prefixx-key-modesdescriptionx-rate-limitx-agentic-access

Targets 5

$.info
$.components.securitySchemes.ApiKeyAuth
$.components.responses.RateLimited
$.paths['/order/{orderId}'].get
$.components.schemas.Order

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for Handwrite IO Orders API
  version: 1.0.0
  x-generated: '2026-08-13'
  x-method: generated
  x-source: >-
    Enhancements derived from https://documentation.handwrite.io/ and API Evangelist artifacts in
    this repo. Applies to openapi/handwrite-io-orders-api-openapi.yml — the original spec is never mutated.
extends: openapi/handwrite-io-orders-api-openapi.yml
actions:
  - target: $.info
    update:
      x-apievangelist-provider: handwrite-io
      x-apievangelist-artifacts:
        conventions: conventions/handwrite-io-conventions.yml
        errors: errors/handwrite-io-problem-types.yml
        rate-limits: rate-limits/handwrite-io-rate-limits.yml
        lifecycle: lifecycle/handwrite-io-lifecycle.yml
        authentication: authentication/handwrite-io-authentication.yml
        sandbox: sandbox/handwrite-io-sandbox.yml
        data-model: data-model/handwrite-io-data-model.yml
      x-spec-provenance: >-
        This OpenAPI is an API Evangelist derivation from Handwrite's published Slate
        documentation (documentation.handwrite.io, source at github.com/handwriteio/API-Docs).
        Handwrite does not publish an OpenAPI of their own — probed 2026-08-13.
  - target: $.components.securitySchemes.ApiKeyAuth
    update:
      x-scheme-prefix: none
      x-key-modes:
        test: test_hw
        live: live_hw
      description: >-
        Raw API key sent as the ENTIRE Authorization header value, with no "Bearer " prefix.
        Keys are prefixed test_hw (not billed, no mail produced) or live_hw (billed, mails a
        card). Content-Type must be application/json. Browser-side use is forbidden by the
        provider. Create keys at https://app.handwrite.io/integrations/api
  - target: $.components.responses.RateLimited
    update:
      x-rate-limit:
        limit: 60
        window: minute
        scope: api-key
        headers:
          - X-RateLimit-Limit
          - X-RateLimit-Remaining
          - X-RateLimit-Reset
        retry_after: false
        error_code: rate_limit_exceeded
        observed: '2026-08-13'
  - target: $.paths['/order/{orderId}'].get
    update:
      x-agentic-access:
        action-class: connected
        consequence: read
        subject: optional
        token:
          max-ttl: 3600
        audit: none
      x-observation-model: >-
        Polling only. Handwrite publishes no webhooks, callbacks or event stream, so fulfillment
        progress (processing -> written -> complete) can only be observed by re-fetching this
        operation. Respect the 60 requests-per-minute key limit when polling.
      x-no-list-endpoint: >-
        There is no list-orders operation. Orders are addressable one at a time by id only, so a
        client MUST persist every _id returned by POST /send or lose the ability to track it.
  - target: $.components.schemas.Order
    update:
      x-provider-payload-divergence: >-
        The provider's own documented response (documentation.handwrite.io/#get-an-order) uses
        `to` where this schema says `recipient`, `createdAt` where this schema says `created_at`,
        and returns `proofs` as an array of {job_type, image_url} objects (job_type is `card` or
        `envelope`) rather than a single `proof_url`. The provider payload also carries an
        `environment` field valued `live` or `test`, which this schema omits. The provider is
        authoritative; see data-model/handwrite-io-data-model.yml.
      x-status-semantics:
        processing: order accepted, not yet written
        written: written but not yet delivered
        complete: has been mailed; proof images available
        problem: rare — technical issue on Handwrite's end which they will resolve
        cancelled: rare — Handwrite does not typically allow cancellations

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/handwrite-io-orders-api-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.