Skip to main content

Documentation Index

Fetch the complete documentation index at: https://appstleinc-aeca3e0a.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

This guide covers everything you need to build a full integration with Appstle Subscriptions. It assumes you already have an API key — if not, see the Authentication page first.

Base URL

All Admin API endpoints share this base URL:
https://subscription-admin.appstle.com/api/external/v2/

Authentication

Pass your API key in the X-API-Key header on every request:
curl -H "X-API-Key: apst_your-api-key-here" \
  "https://subscription-admin.appstle.com/api/external/v2/..."
For partner integrations (third-party products connecting on behalf of merchants), add the X-App-Key header as well:
curl -H "X-API-Key: apst_merchant-api-key" \
     -H "X-App-Key: your-partner-key" \
     "https://subscription-admin.appstle.com/api/external/v2/..."
See the Authentication page for full details on key management and partner keys.

Looking up customer subscriptions

Get all subscriptions for a customer

curl -X GET \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-customers/{customerId}" \
  -H "X-API-Key: YOUR_API_KEY"
The response includes active, paused, and cancelled subscriptions along with products, next billing date, shipping address, and delivery method.

Check if a customer has active subscriptions

Returns an array of subscription contract IDs. An empty array means no active subscriptions.
curl -X GET \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-customers/valid/{customerId}" \
  -H "X-API-Key: YOUR_API_KEY"

Get full contract details

curl -X GET \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contract-details?contractId={contractId}" \
  -H "X-API-Key: YOUR_API_KEY"

Get upcoming orders

curl -X GET \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-billing-attempts/top-orders?contractId={contractId}" \
  -H "X-API-Key: YOUR_API_KEY"

Subscription management

Cancel a subscription

curl -X DELETE \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contracts/{contractId}" \
  -H "X-API-Key: YOUR_API_KEY"

Pause a subscription

curl -X PUT \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contracts-update-status" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contractId": "{contractId}", "status": "PAUSED"}'

Resume a subscription

curl -X PUT \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contracts-update-status" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contractId": "{contractId}", "status": "ACTIVE"}'
Valid status values are ACTIVE, PAUSED, and CANCELLED.

Reschedule the next billing date

curl -X PUT \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contracts-update-billing-date" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contractId": "{contractId}", "nextBillingDate": "2026-03-15T00:00:00Z"}'

Update billing frequency

curl -X PUT \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contracts-update-billing-interval" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contractId": "{contractId}", "billingIntervalCount": 2, "billingInterval": "MONTH"}'
Valid billingInterval values: DAY, WEEK, MONTH, YEAR.

Skip an upcoming order

curl -X PUT \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-billing-attempts/skip-order/{billingAttemptId}" \
  -H "X-API-Key: YOUR_API_KEY"

Product management

Add a product to a subscription

curl -X PUT \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contracts-add-line-item" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contractId": "{contractId}", "variantId": "{variantId}", "quantity": 1}'

Remove a product from a subscription

curl -X PUT \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contracts-remove-line-item" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contractId": "{contractId}", "lineId": "{lineId}"}'

Update product quantity

curl -X PUT \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contracts-update-line-item-quantity" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contractId": "{contractId}", "lineId": "{lineId}", "quantity": 3}'

Discounts

Apply a discount code

curl -X PUT \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contracts-apply-discount" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contractId": "{contractId}", "discountCode": "SAVE10"}'

Remove a discount

curl -X PUT \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contracts-remove-discount" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contractId": "{contractId}"}'

Shipping

Update shipping address

curl -X PUT \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-contracts-update-shipping-address" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contractId": "{contractId}",
    "address1": "123 Main St",
    "city": "San Francisco",
    "province": "California",
    "country": "United States",
    "zip": "94105"
  }'

Past orders

Get order history

curl -X GET \
  "https://subscription-admin.appstle.com/api/external/v2/subscription-billing-attempts/past-orders?contractId={contractId}" \
  -H "X-API-Key: YOUR_API_KEY"

Rate limits

Requests are rate-limited per store. If you receive a 429 Too Many Requests response, implement exponential backoff before retrying. Do not immediately retry at full speed.

Partner integrations

If you are building a platform that connects to Appstle on behalf of multiple merchants, you can apply for a dedicated partner key. Partner keys:
  • Allow your customers (merchants) to connect to your platform without needing an Appstle API subscription
  • Are provisioned by Appstle and remain constant across all merchants using your integration
  • Must be sent alongside the merchant’s X-API-Key in every request
Current integration partners include ShipInsure, Zapiet, Zaymo, and OrderLogix. To apply, email support@appstle.com with your company name, product description, and expected API call volume per merchant. Partner keys are typically provisioned within 1–2 business days.

Further reading

Webhooks

Receive real-time events when subscriptions change.

Shopify Flow

No-code automation using Shopify’s built-in workflow engine.

Authentication

Key creation, rotation, and partner key details.