Developer API & Enterprise Service Agreement

Last updated: 3/30/2026

This Developer API & Enterprise Service Agreement (the “API Agreement”) governs the access and use of the Ship a Postcard LLC API and Enterprise features. By creating an API Key or accessing Team Workspaces, you (“Developer” or “Enterprise Customer”) agree to these terms in addition to our standard Terms of Service.

1. Service Description & License

Ship a Postcard LLC provides a REST API and No-Code Bridge (via Zapier/Webhooks) to allow the automated generation and physical fulfillment of postcards. Company grants Developer a revocable, non-exclusive license to integrate our services into their own applications or internal workflows.

2. Daily Batch & Payment Logic

The platform utilizes a "Daily Batch" processing model to optimize fulfillment and minimize transaction overhead.

  • Batch Cycle: Individual API requests are queued and held in a pending_batch status. The nightly ProcessDailyBatches job executes once per day (typically 12:00 AM EST).
  • Consolidated Billing: For B2B/Enterprise accounts, validated orders within a 24-hour cycle are charged as a single campaign or campaign batch.
  • Cancellations: Orders may be modified or deleted via the API at any time while in pending_batch status. Once the ProcessDailyBatches job begins, orders are transmitted to our print partners (Lob.com) and cannot be canceled, edited, or refunded.
  • Failed Items: If individual postcards within a batch fail due to invalid addressing or API errors, a credit will be issued to the Developer's account balance for use in future campaigns.

3. Usage Limits & Rate Limiting

To ensure system stability, Ship a Postcard LLC employs rate limiting.

  • Standard Limits: Unless otherwise agreed in an Enterprise Order Form, access is limited to 10 requests per second.
  • Response Codes: Exceeding these limits will result in an HTTP 429 (Too Many Requests) response.
  • Abuse: Circumventing rate limits or using the API for high-volume "Postcard Spam" is a violation of these terms and will result in immediate API key revocation.

4. Team Workspaces & RBAC

Enterprise accounts may utilize Team Workspaces with Role-Based Access Control (RBAC).

  • Administrator Responsibility: The Workspace Administrator is legally and financially responsible for all orders placed by invited Team Members.
  • Data Isolation: Ship a Postcard LLC ensures that data within a Workspace is isolated; however, the Administrator acknowledges they have full visibility into all postcards sent by sub-users within their Workspace.

5. API Security

Developer is solely responsible for the security of their API keys (Live and Test).

  • Credential Management: API keys must be stored securely and never exposed in client-side code.
  • Idempotency: We strongly recommend the use of Idempotency Keys to prevent duplicate charges resulting from network retries.

6. INDEMNIFICATION & LIABILITY

  • Content Responsibility: Developer is the "Publisher" of all content sent via the API. Developer shall indemnify Company against any claims arising from postcard content that violates copyright, privacy, or harassment laws.
  • Limitation of Liability: In no event shall Ship a Postcard, LLC be liable for indirect, incidental, or consequential damages (including loss of business) resulting from API downtime, batch processing delays, or USPS delivery failures. Total liability is capped at the amount paid by Developer in the 30 days preceding the claim.

7. TERMINATION

Ship a Postcard LLC reserves the right to suspend API access immediately if Developer's integration causes system instability, engages in "Postcard Spamming," or fails to maintain a valid payment method in Stripe.

🛠️ Developer Documentation: Quick Start Guide

Understanding the Batch Pipeline

Ship a Postcard does not print cards one-by-one in real-time. Instead, we use a high-efficiency Daily Batch Pipeline.

  • Status: pending_batch

When you successfully hit the POST /v1/postcards endpoint, the response will return a status of pending_batch. This means your card is securely queued in our database.

  • The Nightly Job (ProcessDailyBatches)

Every night at 12:00 AM EST, our system aggregates all pending postcards into a single campaign batch. At this moment, we validate the payment and transmit the data to our global print partners.

  • How to Cancel an Order

You have a "Grace Period" between the moment you call the API and the nightly execution. To cancel an order before it is printed:

    1. Use the GET /v1/postcards endpoint to verify the status is still pending_batch.
    2. Call DELETE /v1/postcards/{id}.
    3. If the deletion is successful (204 No Content), you will not be charged.

Note for Developers: Once the nightly job begins, the id will transition to in_transit or printed, and the Delete endpoint will return a 403 Forbidden error.