Exclaimer Subscription Transfers API

The Subscription Transfers API from Exclaimer — 3 operation(s) for subscription transfers.

Operations 3

PUT /1.0/subscriptions/{SubscriptionID}/transfer/cancel Cancel Subscription Transfer
POST /1.0/subscriptions/transfer/claim Claim Subscription Transfer
POST /1.0/subscriptions/{SubscriptionID}/transfer Initiate Subscription Transfer

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/exclaimer-subscription-transfers-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

exclaimer-subscription-transfers-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Exclaimer Cloud Subscription Transfers API
  version: '1'
  description: The Subscription Transfers operations of the Exclaimer Cloud API, the partner/distributor provisioning API for Exclaimer Cloud tenants. Split by tag from the provider-published OpenAPI at https://cloudapi.exclaimer.com/openapi.json (documentation version 5.2, published 2025-07-23). Operation content is carried verbatim from the source specification.
servers:
- url: https://cloudapi.exclaimer.com/exclaimerapi
  description: Local
security:
- Exclaimer: []
tags:
- name: Subscription Transfers
paths:
  /1.0/subscriptions/{SubscriptionID}/transfer/cancel:
    put:
      tags:
      - Subscription Transfers
      summary: Cancel Subscription Transfer
      description: This request allows you to cancel a subscription transfer that you've previously issued a transfer request for. <p> Once the transfer request is cancelled, the subscription will no longer show as pending transfer. If someone tries to claim the subscription, their request will be rejected. </p>
      parameters:
      - name: SubscriptionID
        in: path
        description: Your reference for the subscription to cancel. This is the same ID you specified when issuing the transfer request.
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request / Missing Field
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '415':
          description: Unsupported Media Type
        '500':
          description: Internal Server Error
      x-documentation:
        routeExamples:
          Basic usage:
            value: /subscriptions/Subscription-FKV-201/transfer/cancel
        curlExamples:
          Basic usage - cURL:
            description: /subscriptions/Subscription-FKV-201/transfer/cancel
            value: '{}'
  /1.0/subscriptions/transfer/claim:
    post:
      tags:
      - Subscription Transfers
      summary: Claim Subscription Transfer
      description: This request allows you to claim a subscription that's currently owned by someone else. <p> You can optionally specify additional details for the subscription, such as providing a meaningful ID, or associating it with one of your existing resellers, and/or end users. </p><p> This is the second half or a two part transfer handshake. See <b>Initiate Subscription Transfer</b> for the first half of the process. </p><p> In order to claim a subscription you must first have a valid token that can be used in the transfer process. This token will be provided either by the current subscription owner, or by Exclaimer. Once the token has been used, it will be invalidated, and cannot be reused. </p><p><b>Self claiming:</b> It's possible to claim a subscription that you've previously issued a transfer request for, right up until the point at which the subscription has been claimed by someone else. While we would recommend you use the <b>Cancel Subscription Transfer</b> API instead, if you do use this we recommend only specifying the <b>TransferToken</b> and no other details. In this case, all existing subscription details, including Subscription ID, Reseller, and End User, will remain unchanged. </p>
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClaimSubscriptionTransfer'
            examples:
              Use an auto-generated ID, and do not associate with a reseller or end user:
                value: '{"TransferToken":"e0c2669f107745b1bf1253332b4ca205"}'
              Don't associate with existing any End User or Reseller:
                value: '{"TransferToken":"4e9db0647cc54f51b537000a41ca4f1","SubscriptionID":"Subscription-WON-196"}'
              Associate with an existing End User and Reseller:
                value: '{"TransferToken":"6a5dad1dd73904c1cb6830cef161710","SubscriptionID":"Subscription-PPX-394","ResellerID":"R-55782","EndUserID":"U-ABC-592"}'
              Specify End User and Reseller in full:
                value: '{"TransferToken":"37a5dad1dd73904c1cb6830cef16171","SubscriptionID":"Subscription-DFU-292","Reseller":{"ResellerID":"R-55555","CompanyName":"Resellers & Co.","CountryCode":"GBR"},"EndUser":{"EndUserID":"U-ABC-321","CompanyName":"Users Ltd","CountryCode":"GBR"}}'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClaimSubscriptionTransferResponse'
              examples:
                Auto-generated:
                  value: '{"SubscriptionID":"77dmEGy5yE5apa38WMXt8udALobQoS"}'
                Specified:
                  value: '{"SubscriptionID":"Subscription-CVZ-996"}'
        '400':
          description: Bad Request / Missing Field
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '415':
          description: Unsupported Media Type
        '500':
          description: Internal Server Error
      x-documentation:
        curlExamples:
          Use an auto-generated ID, and do not associate with a reseller or end user - cURL:
            description: /subscriptions/transfer/claim
            value: '{"TransferToken":"e0c2669f107745b1bf1253332b4ca205"}'
          Don't associate with existing any End User or Reseller - cURL:
            description: /subscriptions/transfer/claim
            value: '{"TransferToken":"4e9db0647cc54f51b537000a41ca4f1","SubscriptionID":"Subscription-WON-196"}'
          Associate with existing End User and Reseller - cURL:
            description: /subscriptions/transfer/claim
            value: '{"TransferToken":"6a5dad1dd73904c1cb6830cef161710","SubscriptionID":"Subscription-PPX-394","ResellerID":"R-55782","EndUserID":"U-ABC-592"}'
          Specify End User and Reseller in full - cURL:
            description: /subscriptions/transfer/claim
            value: '{"TransferToken":"37a5dad1dd73904c1cb6830cef16171","SubscriptionID":"Subscription-DFU-292","Reseller":{"ResellerID":"R-55555","CompanyName":"Resellers & Co.","CountryCode":"GBR"},"EndUser":{"EndUserID":"U-ABC-321","CompanyName":"Users Ltd","CountryCode":"GBR"}}'
  /1.0/subscriptions/{SubscriptionID}/transfer:
    post:
      tags:
      - Subscription Transfers
      summary: Initiate Subscription Transfer
      description: This request initiates a subscription transfer. <p> This is the first half or a two part transfer handshake. See <b>Claim Subscription Transfer</b> for the second half of the process. </p><p> This requests puts the target subscription into a state of transfer until it gets claimed. The request returns a Transfer Token that may be used by another consumer to take ownership of the subscription. </p>
      parameters:
      - name: SubscriptionID
        in: path
        description: Your reference for the subscription. This is the same ID you specified, or was automatically generated, when the subscription was created, i.e., when calling <b>Add Subscription</b>.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InitiateSubscriptionTransferResponse'
              examples:
                Basic usage:
                  value: '{"TransferToken":"27sfPOh6bR0ium66SMCr5sdPLdyQxC"}'
        '400':
          description: Bad Request / Missing Field
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '415':
          description: Unsupported Media Type
        '500':
          description: Internal Server Error
      x-documentation:
        routeExamples:
          Basic usage:
            value: /subscriptions/Subscription-QAM-784/transfer
        curlExamples:
          Basic usage - cURL:
            description: /subscriptions/Subscription-QAM-784/transfer
            value: '{}'
components:
  schemas:
    ClaimSubscriptionTransfer:
      title: ClaimSubscriptionTransferRequest
      required:
      - TransferToken
      properties:
        TransferToken:
          type: string
          description: This token grants you the rights to transfer the subscription, and will be provided either by the current subscription owner, or by Exclaimer. The token can only be used for one valid request. This excludes validation errors, in which case the token will remain valid.
        SubscriptionID:
          type: string
          description: Your reference for the subscription once it's been transferred. If not specified, or a subscription with the same ID already exists, this will be automatically generated.
        ResellerID:
          type: string
          description: Allows you to associate the transferred subscription with an existing custom reseller record. <p><b>N.B. ResellerID</b> and <b>Reseller</b> are mutually exclusive. If both are provided, this will result in an error. If neither are provided, then the subscription will not be associated with a reseller. </p>
        Reseller:
          allOf:
          - $ref: '#/components/schemas/ClaimSubscriptionTransferReseller'
          - description: Allows you to associate the transferred subscription with a custom reseller record. <p><b>N.B. Reseller</b> and <b>ResellerID</b> are mutually exclusive. If both are provided, this will result in an error. If neither are provided, then the subscription will not be associated with a reseller. </p>
          - {}
        EndUserID:
          type: string
          description: Allows you to associate the transferred subscription with an existing custom user record. <p><b>N.B. EndUserID</b> and <b>EndUser</b> are mutually exclusive. If both are provided, this will result in an error. If neither are provided, then the subscription will not be associated with an end user. </p>
        EndUser:
          allOf:
          - $ref: '#/components/schemas/ClaimSubscriptionTransferEndUser'
          - description: Allows you to associate the transferred subscription with a custom user record. <p><b>N.B. EndUser</b> and <b>EndUserID</b> are mutually exclusive. If both are provided, this will result in an error. If neither are provided, then the subscription will not be associated with an end user. </p>
          - {}
      description: This request allows you to claim a subscription that's currently owned by someone else. <p> You can optionally specify additional details for the subscription, such as providing a meaningful ID, or associating it with one of your existing resellers, and/or end users. </p><p> This is the second half or a two part transfer handshake. See <b>Initiate Subscription Transfer</b> for the first half of the process. </p><p> In order to claim a subscription you must first have a valid token that can be used in the transfer process. This token will be provided either by the current subscription owner, or by Exclaimer. Once the token has been used, it will be invalidated, and cannot be reused. </p><p><b>Self claiming:</b> It's possible to claim a subscription that you've previously issued a transfer request for, right up until the point at which the subscription has been claimed by someone else. While we would recommend you use the <b>Cancel Subscription Transfer</b> API instead, if you do use this we recommend only specifying the <b>TransferToken</b> and no other details. In this case, all existing subscription details, including Subscription ID, Reseller, and End User, will remain unchanged. </p>
    ClaimSubscriptionTransferResponse:
      title: ClaimSubscriptionTransferResponse
      properties:
        SubscriptionID:
          type: string
          description: This is the ID that's been assigned to the transferred subscription. If you specified a <b>SubscriptionID</b> when claiming the subscription, then that value will be returned. However, if you already have a subscription with the same <b>SubscriptionID</b>, or you did not specify a <b>SubscriptionID</b>, then an automatically generated value will have been used.
    InitiateSubscriptionTransferResponse:
      title: InitiateSubscriptionTransferResponse
      properties:
        TransferToken:
          type: string
          description: The issued token that can be used to claim the subscription.
    ClaimSubscriptionTransferReseller:
      title: Reseller
      required:
      - ResellerID
      - CompanyName
      - CountryCode
      properties:
        ResellerID:
          type: string
          description: Your reference for the reseller. This will associate the reseller with the transferred subscription. <p> If a reseller with the <b>ResellerID</b> already exists, it will be updated; otherwise it will be created. </p>
        CompanyName:
          type: string
          description: The name of the company to associated the transferred subscription with.
        CountryCode:
          type: string
          description: The country code where the reseller is based.<br /> Specify in ISO 3166-1 alpha-2/alpha-3 or numeric.
    ClaimSubscriptionTransferEndUser:
      title: EndUser
      required:
      - EndUserID
      - CompanyName
      - CountryCode
      properties:
        EndUserID:
          type: string
          description: Your reference for the user. This will associate the user with the transferred subscription. <p> If a user with the <b>EndUserID</b> already exists, it will be updated; otherwise it will be created. </p>
        CompanyName:
          type: string
          description: The name of the company to associate the transferred subscription with.
        CountryCode:
          type: string
          description: The country code where the user is based.<br /> Specify in ISO 3166-1 alpha-2/alpha-3 or numeric.
  securitySchemes:
    Exclaimer:
      type: apiKey
      name: ExApiToken
      in: header