Skip to content

External APIs (0.0.1)

Comprehensive API documentation for managing subscriptions, payments, and related operations. These APIs allow you to programmatically manage subscription lifecycles, handle payments, configure products, and integrate subscription functionality into your applications.

Languages
Servers
https://subscription-admin.appstle.com

Subscription Management

Core APIs for managing the complete subscription lifecycle including creation, updates, pausing, resuming, and cancellation of subscriptions.

Operations

Subscription Payments

APIs for managing subscription payment methods, processing payments, handling payment retries, and updating billing information.

Operations

Subscription Contracts

APIs for managing subscription contracts including delivery schedules, pricing, order notes, billing cycles, and shipping addresses.

Operations

Subscription Products

APIs for managing products within subscriptions including adding, removing, updating quantities, and swapping products.

Operations

Billing & Payments

APIs for handling billing operations, payment processing, and financial transactions related to subscriptions.

Operations

Subscription Discounts

APIs for managing discounts and promotional codes applied to subscriptions.

Operations

Subscription One-Time Products

APIs for managing one-time add-on products that can be purchased alongside recurring subscription items.

Operations

Subscription Plans

APIs for managing subscription plans, pricing tiers, and plan configurations.

Operations

Build-a-Box & Bundles

APIs for managing customizable product boxes and bundles where customers can select multiple items.

Operations

Product Catalog

APIs for managing the product catalog including product information, variants, and inventory.

Operations

Operations & Settings

APIs for managing operational settings, configurations, and administrative functions.

Operations

Create a new shipping/delivery profile (V2)

Request

Creates a new shipping or delivery profile for subscription orders using the V2 request format. This version provides enhanced configuration options for delivery methods, zones, and pricing.

Enhancements in V2:

  • Improved zone configuration
  • Better support for multiple delivery methods
  • Enhanced rate definition capabilities
  • Support for conditional delivery rates

Key Features:

  • Define custom shipping rates per zone
  • Configure local delivery options
  • Set up local pickup methods
  • Manage shipping zones and countries
  • Assign profiles to specific products or variants

Authentication: Requires valid X-API-Key header

Query
api_keystring

API Key (Deprecated - Use Header X-API-Key instead)

Headers
X-API-Keystring
Bodyapplication/jsonrequired
namestring
locationInfosArray of objects(LocationInfo)
idstring
curl -i -X POST \
  'https://subscription-admin.appstle.com/api/external/v2/delivery-profiles/v2/create-shipping-profile?api_key=string' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: string' \
  -d '{
    "name": "string",
    "locationInfos": [
      {
        "locationId": "string",
        "countryInfos": [
          {
            "shouldIncludeAllProvince": true,
            "code": "string",
            "deliveryMethodInfo": [
              {
                "amount": 0.1,
                "currencyCode": "USD",
                "carrierServiceId": "string",
                "name": "string",
                "carrierRate": true,
                "deliveryConditionType": "string",
                "priceConditions": [
                  null
                ],
                "weightConditions": [
                  null
                ]
              }
            ],
            "restOfWorld": true,
            "provinceCode": "string"
          }
        ]
      }
    ],
    "id": "string"
  }'

Responses

Delivery profile created successfully

Bodyapplication/json
idinteger(int64)
shopstringrequired
deliveryProfileIdstringrequired
sellerGroupIdsArray of stringsunique
namestring
Response
application/json
{ "id": 0, "shop": "string", "deliveryProfileId": "string", "sellerGroupIds": [ "string" ], "name": "string" }

Create a new shipping/delivery profile

Request

Creates a new shipping or delivery profile for subscription orders. This endpoint allows you to configure custom shipping rates, delivery methods, and shipping zones for your subscription products. Delivery profiles control how subscription products are shipped to customers.

Key Features:

  • Define custom shipping rates per zone
  • Configure local delivery options
  • Set up local pickup methods
  • Manage shipping zones and countries
  • Assign profiles to specific products or variants

Delivery Method Types:

  • SHIPPING: Standard shipping with carrier rates or custom rates
  • LOCAL_DELIVERY: Local delivery service within specific areas
  • PICKUP: Customer pickup from store locations

Important Notes:

  • Each delivery profile must have a unique name
  • At least one delivery method is required
  • Shipping rates can be set per zone and per weight/price range
  • Profiles can be assigned to subscription products to control their shipping behavior

Authentication: Requires valid X-API-Key header

Query
api_keystring

API Key (Deprecated - Use Header X-API-Key instead)

Headers
X-API-Keystring
Bodyapplication/jsonrequired
namestring
idinteger(int64)
deliveryMethodInfoArray of objects(DeliveryMethodInfo)
countryInfosArray of objects(DeliveryCountryInfo)
locationInfosArray of objects(LocationInfo)
restOfWorldboolean
curl -i -X POST \
  'https://subscription-admin.appstle.com/api/external/v2/delivery-profiles/create-shipping-profile?api_key=string' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: string' \
  -d '{
    "name": "string",
    "id": 0,
    "deliveryMethodInfo": [
      {
        "amount": 0.1,
        "currencyCode": "USD",
        "carrierServiceId": "string",
        "name": "string",
        "carrierRate": true,
        "deliveryConditionType": "string",
        "priceConditions": [
          {
            "amount": 0.1,
            "deliverCondtion": "string"
          }
        ],
        "weightConditions": [
          {
            "deliveryCondition": "string",
            "weight": 0.1,
            "weightUnit": "string"
          }
        ]
      }
    ],
    "countryInfos": [
      {
        "code": "string",
        "restOfWorld": true,
        "provinceCode": "string",
        "shouldIncludeAllProvince": true
      }
    ],
    "locationInfos": [
      {
        "locationId": "string",
        "countryInfos": [
          {
            "shouldIncludeAllProvince": true,
            "code": "string",
            "deliveryMethodInfo": [
              {
                "amount": 0.1,
                "currencyCode": "USD",
                "carrierServiceId": "string",
                "name": "string",
                "carrierRate": true,
                "deliveryConditionType": "string",
                "priceConditions": [
                  null
                ],
                "weightConditions": [
                  null
                ]
              }
            ],
            "restOfWorld": true,
            "provinceCode": "string"
          }
        ]
      }
    ],
    "restOfWorld": true
  }'

Responses

Delivery profile created successfully

Bodyapplication/json
idinteger(int64)
shopstringrequired
deliveryProfileIdstringrequired
sellerGroupIdsArray of stringsunique
namestring
Response
application/json
{ "id": "12345", "shop": "example-shop.myshopify.com", "name": "Standard Subscription Shipping", "shopifyDeliveryProfileId": "gid://shopify/DeliveryProfile/67890", "default": false, "locationGroupsCount": 1, "productsCount": 15, "profileLocationGroups": [ {} ] }

Replace products in subscriptions in bulk

Request

Replaces old product variants with new product variants across multiple subscription contracts in bulk. This powerful operation allows merchants to update products in active subscriptions when products are discontinued, reformulated, or repackaged.

What is Product Replacement? Product replacement updates the products in active subscriptions by swapping out old variant IDs with new variant IDs. This is commonly needed when:

  • Products are discontinued and replaced with new versions
  • Product packaging changes (size, quantity)
  • Product reformulations or recipe updates
  • SKU consolidation or reorganization
  • Seasonal product variations
  • Price structure changes

Key Features:

  • Bulk Operation: Update thousands of subscriptions simultaneously
  • Multi-Variant Support: Replace multiple old variants with new ones in single request
  • Flexible Mapping: One-to-one, many-to-one, or one-to-many variant replacements
  • Selective or Universal: Target specific subscriptions or all subscriptions
  • Asynchronous Processing: Large batches processed in background
  • Price Preservation Options: Maintain existing subscription pricing or update to new prices
  • Activity Logging: All replacements are logged for audit trail

Operation Modes:

  1. Specific Subscriptions: Provide subscription contract IDs to update only those subscriptions
  2. All Subscriptions: Set allSubscriptions=true to replace products in ALL active subscriptions containing the old variants

How It Works:

  1. Identify old variant IDs that need to be replaced
  2. Identify new variant IDs that will replace them
  3. Optionally specify which subscriptions to update (or use allSubscriptions=true)
  4. Submit the bulk replacement request
  5. System validates all variant IDs exist and are accessible
  6. Bulk automation task is created and queued
  7. Each subscription is updated with new variants
  8. Customers receive updated subscription details
  9. Next orders will include the new products

Variant ID Mapping: The replacement supports flexible mapping between old and new variants:

One-to-One Replacement:

{
  "oldVariantIds": [111111],
  "newVariantIds": [222222]
}

Old variant 111111 is replaced with new variant 222222

Multiple Variants Replacement:

{
  "oldVariantIds": [111111, 333333, 555555],
  "newVariantIds": [222222, 444444, 666666]
}

Each old variant is replaced with its corresponding new variant (by position)

Request Structure:

{
  "subscriptionIds": [
    "gid://shopify/SubscriptionContract/123456",
    "gid://shopify/SubscriptionContract/123457"
  ]
}

Query Parameters:

  • api_key (required): Your API authentication key
  • allSubscriptions (optional): Set to true to update all subscriptions, false/omit to update only specified IDs
  • newVariantIds (required): Comma-separated list of new variant IDs (e.g., 222222,444444,666666)
  • oldVariantIds (required): Comma-separated list of old variant IDs to replace (e.g., 111111,333333,555555)

Use Cases:

1. Product Discontinuation: When a product is being discontinued:

  • Identify replacement product
  • Map old variant IDs to new variant IDs
  • Update all subscriptions containing the old product
  • Notify customers of the change

2. Packaging Updates: When product packaging changes (e.g., 10oz to 12oz):

  • Create new variant for new package size
  • Replace old variant across subscriptions
  • Adjust pricing if needed

3. Product Reformulation: When product recipes or formulas change:

  • Create new product variant for reformulated version
  • Bulk replace old formula with new formula
  • Maintain customer subscription frequency and pricing

4. SKU Consolidation: When consolidating multiple variants into a single SKU:

  • Map multiple old variant IDs to single new variant ID
  • Update all affected subscriptions
  • Simplify inventory management

5. Seasonal Product Rotation: For seasonal subscription boxes:

  • Replace summer variants with fall variants
  • Update all active seasonal subscriptions
  • Maintain subscription continuity

Important Considerations:

  • Pricing Impact: New variants may have different prices - verify pricing strategy
  • Inventory Levels: Ensure adequate inventory for new variants
  • Customer Communication: Consider notifying customers before replacement
  • Variant Compatibility: New variants should be appropriate replacements
  • One Operation at a Time: Only one bulk operation can run per shop simultaneously
  • Irreversible: Product replacements cannot be automatically undone (must be manually reversed)
  • Subscription Contract IDs: Must use Shopify GraphQL ID format

Processing Time:

  • Small batches (<100 subscriptions): Seconds to minutes
  • Medium batches (100-1000): Minutes
  • Large batches (>1000): Minutes to hours
  • Processing time depends on number of subscriptions and line items

Best Practices:

  1. Test First: Test with a small subset of subscriptions before bulk operation
  2. Verify Variants: Confirm all variant IDs are correct and products are active
  3. Check Inventory: Ensure sufficient stock of new variants
  4. Customer Communication: Notify affected customers about product changes
  5. Price Review: Review and confirm pricing for new variants
  6. Backup Data: Export subscription data before making bulk changes
  7. Monitor Progress: Track bulk operation status to completion
  8. Audit Trail: Document reason for replacement for future reference

Error Scenarios:

  • Another bulk operation running: 400 error
  • Invalid variant IDs: Operation may fail or skip invalid variants
  • Mismatched array lengths: Ensure oldVariantIds and newVariantIds have same count
  • Product not found: Variants must exist in your Shopify store
  • Unauthorized access: Can only modify subscriptions belonging to your shop

Customer Impact:

  • Next subscription order will contain new products
  • Previous orders are not affected
  • Subscription price may change if new variant has different price
  • Customer portal reflects the new product immediately
  • Subscription frequency and schedule remain unchanged

Authentication: Requires valid api_key parameter (X-API-Key header support coming soon)

Query
api_keystringrequired

Your API Key

allSubscriptionsboolean

allSubscriptions

newVariantIdsArray of integers(int64)required

New Variant Ids

oldVariantIdsArray of integers(int64)required

Old Variant Ids

Bodyapplication/jsonrequired
subscriptionIdsstring
curl -i -X POST \
  'https://subscription-admin.appstle.com/api/external/v2/bulk-automations/replace-product?api_key=string&allSubscriptions=true&newVariantIds=0&oldVariantIds=0' \
  -H 'Content-Type: application/json' \
  -d '{
    "subscriptionIds": "string"
  }'

Responses

Bulk product replacement operation successfully queued and initiated. Subscriptions will be updated asynchronously.

Bodyapplication/json
Response
application/json
{}

Customer Portal

APIs powering the customer-facing portal where subscribers can manage their own subscriptions.

Operations

Customers

APIs for managing customer information, profiles, and account details.

Operations