Stigg Subscriptions API

Subscription lifecycle management.

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/stigg-subscriptions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

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

OpenAPI Specification

stigg-subscriptions-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Stigg Coupons Subscriptions API
  description: Stigg is a pricing and packaging platform providing feature management, entitlements, and usage-based billing for SaaS and API products. The Stigg API exposes GraphQL and REST endpoints for customer provisioning, subscription management, entitlement checking, and usage reporting. Authentication requires a Full access key passed via the X-API-KEY header.
  version: '1.0'
  contact:
    url: https://www.stigg.io/
  termsOfService: https://www.stigg.io/terms
servers:
- url: https://api.stigg.io
  description: Stigg Production API
security:
- ApiKey: []
tags:
- name: Subscriptions
  description: Subscription lifecycle management.
paths:
  /graphql:
    post:
      operationId: executeGraphQL
      summary: Execute GraphQL Query or Mutation
      description: Execute any Stigg GraphQL query or mutation. Stigg uses GraphQL as its primary API. Send a JSON body with a query/mutation string and optional variables. Supports customer management, subscription operations, entitlement checks, and usage reporting.
      tags:
      - Subscriptions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphQLRequest'
            examples:
              provisionCustomer:
                summary: Provision a Customer
                value:
                  query: "mutation ProvisionCustomer($input: ProvisionCustomerInput!) {\n  provisionCustomer(input: $input) {\n    customer { id name email }\n    subscription { id status plan { id name } }\n  }\n}\n"
                  variables:
                    input:
                      customerId: customer-123
                      name: Acme Corp
                      email: admin@acme.com
              checkEntitlement:
                summary: Check Feature Entitlement
                value:
                  query: "query GetCustomerEntitlement($customerId: String!, $featureId: String!) {\n  customerEntitlement(customerId: $customerId, featureId: $featureId) {\n    isGranted\n    usageLimit\n    currentUsage\n    resetPeriod\n  }\n}\n"
                  variables:
                    customerId: customer-123
                    featureId: feature-api-calls
              reportUsage:
                summary: Report Feature Usage
                value:
                  query: "mutation ReportUsage($input: ReportUsageInput!) {\n  reportUsage(input: $input) { id }\n}\n"
                  variables:
                    input:
                      customerId: customer-123
                      featureId: feature-api-calls
                      value: 100
      responses:
        '200':
          description: GraphQL response (may contain data or errors).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GraphQLResponse'
        '401':
          description: Invalid or missing X-API-KEY header.
  /api/v1/subscriptions:
    post:
      tags:
      - Subscriptions
      summary: Provision subscription
      description: Creates a new subscription for an existing customer. When payment is required and no payment method exists, returns a checkout URL.
      operationId: SubscriptionController_provisionSubscription
      parameters:
      - name: X-ACCOUNT-ID
        in: header
        required: false
        schema:
          type: string
      - name: X-ENVIRONMENT-ID
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProvisionSubscriptionRequestDto'
            examples:
              basic:
                summary: Provision a subscription
                value:
                  customerId: customer-123
                  planId: plan-pro
      responses:
        '201':
          description: The newly created subscription object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionResponseDto'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadInputErrorResponseDto'
        '401':
          description: User is not authenticated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedErrorResponseDto'
        '403':
          description: User is not allowed to access this resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDto'
        '409':
          description: Subscription conflict error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConflictErrorResponseDto'
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponseDto'
    get:
      tags:
      - Subscriptions
      summary: List subscriptions
      description: Retrieves a paginated list of subscriptions, with optional filters for customer, status, and plan.
      operationId: SubscriptionController_getSubscriptions
      parameters:
      - name: after
        required: false
        in: query
        schema:
          format: uuid
          type: string
      - name: before
        required: false
        in: query
        schema:
          format: uuid
          type: string
      - name: limit
        required: false
        in: query
        schema:
          minimum: 1
          maximum: 100
          default: 20
          type: integer
      - name: customerId
        required: false
        in: query
        description: Filter by customer ID
        schema:
          type: string
      - name: status
        required: false
        in: query
        description: Filter by subscription status
        schema:
          type: string
          enum:
          - active
          - canceled
          - trial
          - paused
      - name: X-ACCOUNT-ID
        in: header
        required: false
        schema:
          type: string
      - name: X-ENVIRONMENT-ID
        in: header
        required: false
        schema:
          type: string
      responses:
        '200':
          description: A paginated list of subscription objects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionListResponseDto'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadInputErrorResponseDto'
        '401':
          description: User is not authenticated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedErrorResponseDto'
        '403':
          description: User is not allowed to access this resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDto'
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponseDto'
  /api/v1/subscriptions/{id}:
    get:
      tags:
      - Subscriptions
      summary: Get subscription by ID
      description: Retrieves a subscription by its unique identifier, including plan details, billing period, status, and add-ons.
      operationId: SubscriptionController_getSubscription
      parameters:
      - name: id
        required: true
        in: path
        description: The unique identifier of the subscription
        schema:
          minLength: 1
          maxLength: 255
          type: string
      - name: X-ACCOUNT-ID
        in: header
        required: false
        schema:
          type: string
      - name: X-ENVIRONMENT-ID
        in: header
        required: false
        schema:
          type: string
      responses:
        '200':
          description: The subscription object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionResponseDto'
        '401':
          description: User is not authenticated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedErrorResponseDto'
        '403':
          description: User is not allowed to access this resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDto'
        '404':
          description: Subscription not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDto'
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponseDto'
  /api/v1/subscriptions/{id}/cancel:
    post:
      tags:
      - Subscriptions
      summary: Cancel subscription
      description: Cancels an active subscription, either immediately or at a specified time such as end of billing period.
      operationId: SubscriptionController_cancelSubscription
      parameters:
      - name: id
        required: true
        in: path
        description: The unique identifier of the subscription
        schema:
          minLength: 1
          maxLength: 255
          type: string
      - name: X-ACCOUNT-ID
        in: header
        required: false
        schema:
          type: string
      - name: X-ENVIRONMENT-ID
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelSubscriptionRequestDto'
      responses:
        '200':
          description: The canceled subscription object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionResponseDto'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadInputErrorResponseDto'
        '401':
          description: User is not authenticated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedErrorResponseDto'
        '403':
          description: User is not allowed to access this resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDto'
        '404':
          description: Subscription not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDto'
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponseDto'
  /api/v1/subscriptions/preview:
    post:
      tags:
      - Subscriptions
      summary: Preview subscription
      description: Previews the pricing impact of creating or updating a subscription without making changes. Returns estimated costs, taxes, and proration details.
      operationId: SubscriptionController_previewSubscription
      parameters:
      - name: X-ACCOUNT-ID
        in: header
        required: false
        schema:
          type: string
      - name: X-ENVIRONMENT-ID
        in: header
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PreviewSubscriptionRequestDto'
      responses:
        '200':
          description: Subscription pricing preview.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreviewSubscriptionResponseDto'
        '400':
          description: Bad request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadInputErrorResponseDto'
        '401':
          description: User is not authenticated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedErrorResponseDto'
        '403':
          description: User is not allowed to access this resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDto'
        '429':
          description: Too many requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequestsErrorResponseDto'
components:
  schemas:
    GraphQLResponse:
      type: object
      properties:
        data:
          type: object
          description: Response data from the GraphQL operation.
          additionalProperties: true
        errors:
          type: array
          description: Array of GraphQL errors if any occurred.
          items:
            $ref: '#/components/schemas/GraphQLError'
    SubscriptionListResponseDto:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/SubscriptionDto'
        pagination:
          $ref: '#/components/schemas/PaginationDto'
      required:
      - data
      - pagination
      description: Paginated list of subscriptions.
    SubscriptionResponseDto:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/SubscriptionDto'
      required:
      - data
      description: Single subscription response.
    NotFoundErrorResponseDto:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
          nullable: true
      required:
      - message
      - code
      description: Resource not found error response.
    PreviewSubscriptionResponseDto:
      type: object
      properties:
        data:
          type: object
          properties:
            immediateInvoice:
              type: object
              properties:
                total:
                  type: number
                  description: Total invoice amount.
                subtotal:
                  type: number
                  description: Subtotal before tax.
                tax:
                  type: number
                  description: Tax amount.
                currency:
                  type: string
                  description: Invoice currency code.
              description: Immediate invoice details.
            nextInvoice:
              type: object
              properties:
                total:
                  type: number
                subtotal:
                  type: number
                tax:
                  type: number
                currency:
                  type: string
              description: Next recurring invoice details.
      description: Subscription pricing preview response.
    TooManyRequestsErrorResponseDto:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
          enum:
          - RateLimitExceeded
          nullable: true
      required:
      - message
      - code
      description: Rate limit exceeded error response.
    SubscriptionDto:
      type: object
      properties:
        id:
          type: string
          description: Unique subscription identifier.
        customerId:
          type: string
          description: The customer this subscription belongs to.
        planId:
          type: string
          description: The plan this subscription is for.
        status:
          type: string
          enum:
          - ACTIVE
          - CANCELED
          - TRIAL
          - PAUSED
          - IN_TRIAL
          description: Subscription lifecycle status.
        billingPeriod:
          type: string
          enum:
          - MONTHLY
          - ANNUALLY
          description: Billing recurrence period.
        startDate:
          type: string
          format: date-time
          description: Subscription start date.
        endDate:
          type: string
          format: date-time
          description: Subscription end date (if applicable).
          nullable: true
        trialEndDate:
          type: string
          format: date-time
          description: Trial period end date.
          nullable: true
        addons:
          type: array
          items:
            $ref: '#/components/schemas/AddonDto'
          description: Add-ons attached to this subscription.
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Additional metadata.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
      - id
      - customerId
      - planId
      - status
      - createdAt
      - updatedAt
      description: A subscription linking a customer to a pricing plan.
    GraphQLRequest:
      type: object
      required:
      - query
      properties:
        query:
          type: string
          description: GraphQL query or mutation string.
        variables:
          type: object
          description: Variables for the GraphQL operation.
          additionalProperties: true
        operationName:
          type: string
          description: Named operation to execute when the document contains multiple.
    GraphQLError:
      type: object
      properties:
        message:
          type: string
          description: Human-readable error message.
        locations:
          type: array
          items:
            type: object
            properties:
              line:
                type: integer
              column:
                type: integer
        path:
          type: array
          items:
            type: string
        extensions:
          type: object
          additionalProperties: true
    ProvisionSubscriptionRequestDto:
      type: object
      properties:
        customerId:
          type: string
          description: The ID of the customer to provision the subscription for.
        planId:
          type: string
          description: The ID of the plan to subscribe the customer to.
        billingPeriod:
          type: string
          enum:
          - MONTHLY
          - ANNUALLY
          description: Billing recurrence period.
        addons:
          type: array
          items:
            $ref: '#/components/schemas/AddonDto'
          description: Add-ons to include in the subscription.
        startDate:
          type: string
          format: date-time
          description: When the subscription should start (defaults to now).
          nullable: true
        trialPeriodDays:
          type: integer
          description: Number of trial days before billing begins.
          nullable: true
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Additional metadata.
      required:
      - customerId
      - planId
      additionalProperties: false
      description: Creates a new subscription for an existing customer.
    ForbiddenErrorResponseDto:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
          enum:
          - IdentityForbidden
          - AccessDeniedError
          - NoFeatureEntitlementError
          nullable: true
      required:
      - message
      - code
      description: Authorization error response.
    CancelSubscriptionRequestDto:
      type: object
      properties:
        endDate:
          type: string
          format: date-time
          description: When to cancel the subscription (defaults to immediate cancellation).
          nullable: true
        cancelAt:
          type: string
          enum:
          - END_OF_BILLING_PERIOD
          - IMMEDIATE
          description: Cancellation timing strategy.
          nullable: true
      additionalProperties: false
      description: Options for canceling a subscription.
    UnauthenticatedErrorResponseDto:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
          enum:
          - Unauthenticated
          nullable: true
      required:
      - message
      - code
      description: Authentication error response.
    PaginationDto:
      type: object
      properties:
        next:
          type: string
          format: uuid
          description: Cursor for fetching the next page of results, or null if no additional pages exist.
          nullable: true
        prev:
          type: string
          format: uuid
          description: Cursor for fetching the previous page of results, or null if at the beginning.
          nullable: true
      required:
      - next
      - prev
      description: Pagination metadata including cursors for navigating through results.
    AddonDto:
      type: object
      properties:
        addonId:
          type: string
          description: The add-on identifier.
        quantity:
          type: integer
          description: The quantity of the add-on.
      description: An add-on attached to a subscription.
    PreviewSubscriptionRequestDto:
      type: object
      properties:
        customerId:
          type: string
          description: The customer ID.
        planId:
          type: string
          description: The plan ID.
        billingPeriod:
          type: string
          enum:
          - MONTHLY
          - ANNUALLY
          description: Billing recurrence period.
        addons:
          type: array
          items:
            $ref: '#/components/schemas/AddonDto'
          description: Add-ons to include in the preview.
      required:
      - customerId
      - planId
      description: Parameters for previewing a subscription without creating it.
    BadInputErrorResponseDto:
      type: object
      properties:
        message:
          type: string
          description: Human-readable error message.
        code:
          type: string
          description: Machine-readable error code.
          nullable: true
      required:
      - message
      - code
      description: Bad request error response.
    ConflictErrorResponseDto:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
          enum:
          - DuplicatedEntityNotAllowed
          - EntitlementBelongsToFeatureGroupError
          nullable: true
      required:
      - message
      - code
      description: Conflict error response (e.g., duplicate resource).
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-API-KEY
      description: Full access key from the Stigg dashboard (Integrations > API keys).