Stigg Subscriptions API

Subscription lifecycle management.

Operations 6

POST /graphql Execute GraphQL Query or Mutation #
POST /api/v1/subscriptions Provision subscription #
GET /api/v1/subscriptions List subscriptions #
GET /api/v1/subscriptions/{id} Get subscription by ID #
POST /api/v1/subscriptions/{id}/cancel Cancel subscription #
POST /api/v1/subscriptions/preview Preview subscription #

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 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.

OpenAPI Specification

stigg-subscriptions-api-openapi.yml Raw ↑
openapi: 3.2.0
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:
    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.
    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
    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.
    ForbiddenErrorResponseDto:
      type: object
      properties:
        message:
          type: string
        code:
          type:
          - string
          - 'null'
          enum:
          - IdentityForbidden
          - AccessDeniedError
          - NoFeatureEntitlementError
      required:
      - message
      - code
      description: Authorization error response.
    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
          - 'null'
          format: date-time
          description: When the subscription should start (defaults to now).
        trialPeriodDays:
          type:
          - integer
          - 'null'
          description: Number of trial days before billing begins.
        metadata:
          type: object
          additionalProperties:
            type: string
          description: Additional metadata.
      required:
      - customerId
      - planId
      additionalProperties: false
      description: Creates a new subscription for an existing customer.
    CancelSubscriptionRequestDto:
      type: object
      properties:
        endDate:
          type:
          - string
          - 'null'
          format: date-time
          description: When to cancel the subscription (defaults to immediate cancellation).
        cancelAt:
          type:
          - string
          - 'null'
          enum:
          - END_OF_BILLING_PERIOD
          - IMMEDIATE
          description: Cancellation timing strategy.
      additionalProperties: false
      description: Options for canceling a subscription.
    UnauthenticatedErrorResponseDto:
      type: object
      properties:
        message:
          type: string
        code:
          type:
          - string
          - 'null'
          enum:
          - Unauthenticated
      required:
      - message
      - code
      description: Authentication error response.
    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.
    NotFoundErrorResponseDto:
      type: object
      properties:
        message:
          type: string
        code:
          type:
          - string
          - 'null'
      required:
      - message
      - code
      description: Resource not found 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
          - 'null'
          format: date-time
          description: Subscription end date (if applicable).
        trialEndDate:
          type:
          - string
          - 'null'
          format: date-time
          description: Trial period end date.
        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.
    BadInputErrorResponseDto:
      type: object
      properties:
        message:
          type: string
          description: Human-readable error message.
        code:
          type:
          - string
          - 'null'
          description: Machine-readable error code.
      required:
      - message
      - code
      description: Bad request error response.
    SubscriptionResponseDto:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/SubscriptionDto'
      required:
      - data
      description: Single subscription response.
    PaginationDto:
      type: object
      properties:
        next:
          type:
          - string
          - 'null'
          format: uuid
          description: Cursor for fetching the next page of results, or null if no additional pages exist.
        prev:
          type:
          - string
          - 'null'
          format: uuid
          description: Cursor for fetching the previous page of results, or null if at the beginning.
      required:
      - next
      - prev
      description: Pagination metadata including cursors for navigating through results.
    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.
    TooManyRequestsErrorResponseDto:
      type: object
      properties:
        message:
          type: string
        code:
          type:
          - string
          - 'null'
          enum:
          - RateLimitExceeded
      required:
      - message
      - code
      description: Rate limit exceeded error response.
    ConflictErrorResponseDto:
      type: object
      properties:
        message:
          type: string
        code:
          type:
          - string
          - 'null'
          enum:
          - DuplicatedEntityNotAllowed
          - EntitlementBelongsToFeatureGroupError
      required:
      - message
      - code
      description: Conflict error response (e.g., duplicate resource).
    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'
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-API-KEY
      description: Full access key from the Stigg dashboard (Integrations > API keys).