Metricool Subscriptions Api Service API

The Subscriptions Api Service API from Metricool — 6 operation(s) for subscriptions api service.

Business capability
Subscription Lifecycle Management BC-4240

Operations 9

GET /v2/settings/subscription-plans Get subscription plans #
GET /v2/settings/subscription/coupon/{couponCode} Apply coupon #
GET /v2/settings/subscriptions This method is deprecated #
PUT /v2/settings/subscriptions Update subscription #
POST /v2/settings/subscriptions Create subscription #
DELETE /v2/settings/subscriptions Cancel subscription #
GET /v2/settings/subscriptions/comparison Get kept and lost brands on subscription downgrade #
GET /v2/settings/subscriptions/current Get current subscription #
GET /v2/settings/subscriptions/prorated-discount Get prorated discount #

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/metricool:metricool-subscriptions-api-service-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

metricool-subscriptions-api-service-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Metricool Subscriptions Api Service API
  description: 'Metricool API


    The base URL for all endpoints is: https://app.metricool.com/api


    All endpoints require authentication.'
  version: 2.0.0
servers:
- url: https://app.metricool.com/api
tags:
- name: Subscriptions Api Service
paths:
  /v2/settings/subscription-plans:
    get:
      tags:
      - Subscriptions Api Service
      operationId: getSubscriptionPlans
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonOkListResponseSubscriptionPlan'
      summary: Get subscription plans
      x-summary-source: derived
  /v2/settings/subscription/coupon/{couponCode}:
    get:
      tags:
      - Subscriptions Api Service
      operationId: applyCoupon
      parameters:
      - name: couponCode
        in: path
        required: true
        schema:
          type: string
      - name: planId
        in: query
        required: true
        schema:
          minLength: 1
          type: string
      - name: addons.twitter
        in: query
        required: false
        schema:
          type: integer
          format: int32
      - name: addons.advancedAnalytics
        in: query
        required: false
        schema:
          type: boolean
      - name: previousBalance
        in: query
        required: false
        schema:
          type: number
          format: double
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonOkResponseCouponResult'
      summary: Apply coupon
      x-summary-source: derived
  /v2/settings/subscriptions:
    get:
      tags:
      - Subscriptions Api Service
      summary: This method is deprecated
      description: Deprecated. Use `GET /v2/settings/subscriptions/current` instead.
      operationId: getUserSubscriptions
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonOkListResponseSubscription'
      deprecated: true
    put:
      tags:
      - Subscriptions Api Service
      operationId: updateSubscription
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionChangeRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
      summary: Update subscription
      x-summary-source: derived
    post:
      tags:
      - Subscriptions Api Service
      operationId: createSubscription
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSubscriptionRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema: {}
      summary: Create subscription
      x-summary-source: derived
    delete:
      tags:
      - Subscriptions Api Service
      operationId: cancelSubscription
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionCancelRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonOkResponseBoolean'
      summary: Cancel subscription
      x-summary-source: derived
  /v2/settings/subscriptions/comparison:
    get:
      tags:
      - Subscriptions Api Service
      summary: Get kept and lost brands on subscription downgrade
      operationId: getBrandsComparisonOnDowngrade
      parameters:
      - name: subscriptionPlanId
        in: query
        description: Subscription plan ID to compare against, e.g. EUR_STARTER_5_2026. Defaults to FREE if not recognized.
        required: true
        schema:
          minLength: 1
          type: string
      responses:
        '200':
          description: Brands comparison with kept and lost lists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonOkResponseSubscriptionDowngradeBrandsLostComparisonResult'
  /v2/settings/subscriptions/current:
    get:
      tags:
      - Subscriptions Api Service
      operationId: getCurrentSubscription
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonOkResponseSubscription'
      summary: Get current subscription
      x-summary-source: derived
  /v2/settings/subscriptions/prorated-discount:
    get:
      tags:
      - Subscriptions Api Service
      operationId: getProratedDiscount
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JsonOkResponseFloat'
      summary: Get prorated discount
      x-summary-source: derived
components:
  schemas:
    CreateSubscriptionRequest:
      type: object
      properties:
        provider:
          type: string
        paymentMethodToken:
          type: string
        planId:
          type: string
        couponCode:
          type: string
        taxData:
          $ref: '#/components/schemas/TaxData'
        addons:
          type: object
          additionalProperties:
            type: integer
            format: int32
    TaxData:
      type: object
      properties:
        vatRate:
          type: number
          format: double
        company:
          type: string
        country:
          type: string
        state:
          type: string
        address:
          type: string
        vatNumber:
          type: string
        addOn:
          type: string
    JsonOkResponseSubscriptionDowngradeBrandsLostComparisonResult:
      type: object
      properties:
        metadata:
          type: object
        page:
          $ref: '#/components/schemas/JsonPaging'
        data:
          $ref: '#/components/schemas/SubscriptionDowngradeBrandsLostComparisonResult'
    BrandLite:
      type: object
      properties:
        id:
          type: integer
          format: int32
        userId:
          type: integer
          format: int32
        ownerUserId:
          type: integer
          format: int32
        label:
          type: string
        title:
          type: string
        description:
          type: string
        image:
          type: string
        ownerUsername:
          type: string
        hash:
          type: string
        joinDate:
          $ref: '#/components/schemas/DateTimeInfo'
        firstConnectionDate:
          $ref: '#/components/schemas/DateTimeInfo'
        timezone:
          type: string
        brandRole:
          $ref: '#/components/schemas/BrandRole'
        engagementRatio:
          type: integer
          format: int32
        networksData:
          $ref: '#/components/schemas/NetworksData'
        isShared:
          type: boolean
      description: Brands the user will lose after the downgrade
    UserAgencyData:
      type: object
      properties:
        agencyId:
          type: integer
          description: Unique identifier of the agency
          format: int32
        isOwner:
          type: boolean
          description: Indicates if the user is the owner of the agency
        teamMemberRoleId:
          type: integer
          description: Unique identifier of the team member role assigned to the user
          format: int64
        agencyOwnerUserId:
          type: integer
          description: Unique identifier of the agency owner user
          format: int32
    OrganizationRoleActionsDto:
      type: object
      properties:
        manageBrands:
          type: boolean
          description: Whether the role can create and manage brands at the organization level.
        manageRoles:
          type: boolean
          description: Whether the role can create and manage other brand roles at the organization level.
        manageTeamMembers:
          type: boolean
          description: Whether the role can manage team members at the organization level.
        manageAgencyConfig:
          type: boolean
          description: Whether the role can manage the agency configuration.
        manageAgencyClients:
          type: boolean
          description: Whether the role can manage agency clients.
      description: Organization-level permissions granted by a brand role, on top of the per-brand actions. Never null in a read response - a role that never had organization permissions set is reported with every field false.
    VendastaData:
      type: object
      properties:
        accountId:
          type: string
        productNavBarDataUrl:
          type: string
    JsonOkListResponseSubscriptionPlan:
      type: object
      properties:
        metadata:
          type: object
        page:
          $ref: '#/components/schemas/JsonPaging'
        data:
          type: array
          items:
            $ref: '#/components/schemas/SubscriptionPlan'
    BrandRole:
      required:
      - actions
      - name
      - organizationActions
      - userId
      type: object
      properties:
        id:
          type: integer
          format: int64
        userId:
          type: integer
          format: int32
        name:
          minLength: 1
          type: string
        description:
          type: string
        color:
          type: string
        type:
          type: string
        assignable:
          type: boolean
        teamMemberOnly:
          type: boolean
        deletedDate:
          $ref: '#/components/schemas/DateTimeInfo'
        deleted:
          type: boolean
        actions:
          $ref: '#/components/schemas/BrandRoleActions'
        organizationActions:
          $ref: '#/components/schemas/OrganizationRoleActionsDto'
        assignedUsersCount:
          type: integer
          format: int32
        assignedEnabledCount:
          type: integer
          format: int32
        assignedDisabledCount:
          type: integer
          format: int32
    JsonOkResponseBoolean:
      type: object
      properties:
        metadata:
          type: object
        page:
          $ref: '#/components/schemas/JsonPaging'
        data:
          type: boolean
    JsonPaging:
      type: object
      properties:
        next:
          type: string
    NetworksData:
      type: object
      properties:
        webData:
          type: string
        facebookData:
          type: string
        instagramData:
          type: string
        threadsData:
          type: string
        blueskyData:
          type: string
        twitterData:
          type: string
        linkedinData:
          type: string
        pinterestData:
          type: string
        tiktokData:
          type: string
        gbpData:
          type: string
        youtubeData:
          type: string
        twitchData:
          type: string
        facebookAdsData:
          type: string
        googleAdsData:
          type: string
        tiktokAdsData:
          type: string
    AddonData:
      type: object
      properties:
        id:
          type: string
          enum:
          - twitter
          - advanced_analytics
          - twitter_2026
          - flows
        quantity:
          type: integer
          format: int32
        version:
          type: string
          enum:
          - v2025
          - v2026
    FeatureSegmentAssigned:
      required:
      - name
      - segmentAssigned
      type: object
      properties:
        name:
          type: string
          description: Feature name
          example: new_dashboard
        segmentAssigned:
          type: integer
          description: Segment assigned to the user
          format: int32
          example: 1
      description: Feature segment assigned
    JsonOkResponseFloat:
      type: object
      properties:
        metadata:
          type: object
        page:
          $ref: '#/components/schemas/JsonPaging'
        data:
          type: number
          format: float
    JsonOkResponseSubscription:
      type: object
      properties:
        metadata:
          type: object
        page:
          $ref: '#/components/schemas/JsonPaging'
        data:
          $ref: '#/components/schemas/Subscription'
    User:
      type: object
      properties:
        id:
          type: integer
          format: int32
        userName:
          type: string
        role:
          type: string
        enabled:
          type: boolean
        name:
          type: string
        lastName:
          type: string
        mail:
          type: string
        phone:
          type: string
        language:
          type: string
        timezone:
          type: string
        accountLogo:
          type: string
        headerLogo:
          type: string
        profilePicture:
          type: string
          description: Public URL of the user's 400x400 profile picture. Absent when they have none, in which case the frontend renders its initials fallback.
        btCustomerId:
          type: string
        stripeCustomerId:
          type: string
        taxData:
          $ref: '#/components/schemas/TaxData'
        affiliated:
          type: boolean
        whiteLabel:
          type: boolean
        academic:
          type: boolean
        beta:
          type: boolean
        sendToAlternativeEmail:
          type: boolean
        alternativeEmail:
          type: string
        billEmails:
          type: array
          items:
            type: string
        marketingNotifications:
          type: boolean
        token:
          type: string
        created:
          $ref: '#/components/schemas/DateTimeInfo'
        deleted:
          $ref: '#/components/schemas/DateTimeInfo'
        isDeleted:
          type: boolean
        locked:
          type: boolean
        changePasswordRequired:
          type: boolean
        onboarding:
          $ref: '#/components/schemas/OnboardingData'
        activeBrands:
          type: integer
          format: int32
        registeredFromTkAppCenter:
          type: boolean
        firstDayOfTheWeek:
          type: integer
          format: int32
        whiteLabelIntegrator:
          type: boolean
        requiresEmailAddress:
          type: boolean
        vendastaSettings:
          $ref: '#/components/schemas/VendastaData'
        crispWorkspaceId:
          type: string
        crispTokenId:
          type: string
          description: Opaque token identifying this user to Crisp for chat history preservation across login.
        agencyCKId:
          type: integer
          format: int32
        integratedIn:
          type: string
        accountManagerMail:
          type: string
        passwordExpirationDate:
          $ref: '#/components/schemas/DateTimeInfo'
        blogId:
          type: integer
          format: int32
        customBrandMail:
          type: string
        brandLabel:
          type: string
        userAgencyData:
          $ref: '#/components/schemas/UserAgencyData'
        featureSegmentAssigned:
          type: array
          items:
            $ref: '#/components/schemas/FeatureSegmentAssigned'
        internalTag:
          type: string
        newsletters:
          type: boolean
          description: True when the user accepts commercial communications. Absent when the flag does not apply to the requesting surface; for an account's own info it is always present, and an account with no stored choice reads as true.
    SubscriptionDowngradeBrandsLostComparisonResult:
      type: object
      properties:
        keptBrands:
          type: array
          description: Brands the user will keep after the downgrade
          items:
            $ref: '#/components/schemas/BrandLite'
        lostBrands:
          type: array
          description: Brands the user will lose after the downgrade
          items:
            $ref: '#/components/schemas/BrandLite'
      description: Brands comparison result for a subscription downgrade
    InfluencersRestrictions:
      type: object
      properties:
        twitter:
          type: integer
          format: int32
        facebook:
          type: integer
          format: int32
        youtube:
          type: integer
          format: int32
        instagram:
          type: integer
          format: int32
        twitch:
          type: integer
          format: int32
    OnboardingData:
      type: object
      properties:
        required:
          type: boolean
        finished:
          type: boolean
        buyerPersona:
          type: string
        size:
          type: string
        goal:
          type: array
          items:
            type: string
        networks:
          type: array
          items:
            type: string
        phone:
          type: string
        partnersOnboardings:
          type: array
          items:
            type: object
            additionalProperties:
              type: object
    SubscriptionPlan:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        billingCycles:
          type: integer
          format: int32
        price:
          type: number
          format: float
        profiles:
          type: integer
          format: int32
        tweets:
          type: integer
          format: int32
        maxPostsPerBrand:
          type: integer
          format: int32
        shareProfiles:
          type: boolean
        whiteLabel:
          type: boolean
        influencers:
          type: boolean
        instagramBioLink:
          type: boolean
        reportTemplate:
          type: boolean
        currency:
          type: string
        reportDownload:
          type: boolean
        historyMaxDays:
          type: integer
          format: int64
        influencersRestrictions:
          $ref: '#/components/schemas/InfluencersRestrictions'
        stripePriceId:
          type: string
        level:
          type: integer
          format: int32
        annualDiscountPercent:
          type: number
          format: float
        maxAICopiesByBrandPerMonth:
          type: integer
          format: int32
        api:
          type: boolean
        dataLockerStudio:
          type: boolean
        zapier:
          type: boolean
        addons:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/AddonData'
    SubscriptionCancelRequest:
      required:
      - message
      type: object
      properties:
        message:
          minLength: 1
          type: string
    Subscription:
      type: object
      properties:
        id:
          type: string
        provider:
          type: string
        providerUrl:
          type: string
        userId:
          type: integer
          format: int32
        created:
          type: string
        planId:
          type: string
        status:
          type: string
        paymentMethodToken:
          type: string
        nextPaymentDateInDays:
          type: integer
          format: int32
        nextPaymentDate:
          $ref: '#/components/schemas/DateTimeInfo'
        nextPaymentAmount:
          type: number
          format: float
        taxData:
          $ref: '#/components/schemas/TaxData'
        usedProfiles:
          type: integer
          format: int32
        usedPosts:
          type: integer
          format: int32
        maxProfiles:
          type: integer
          format: int32
        maxPosts:
          type: integer
          format: int32
        maxPostsPerBrand:
          type: integer
          format: int32
        maxAICreditsPerBrand:
          type: integer
          format: int32
        plan:
          $ref: '#/components/schemas/SubscriptionPlan'
        immediatelyCancelable:
          type: boolean
        downgradeSubscription:
          $ref: '#/components/schemas/Subscription'
        addons:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/AddonData'
        adhocPlan:
          type: boolean
        trialInProgress:
          type: boolean
    JsonOkListResponseSubscription:
      type: object
      properties:
        metadata:
          type: object
        page:
          $ref: '#/components/schemas/JsonPaging'
        data:
          type: array
          items:
            $ref: '#/components/schemas/Subscription'
    BrandRoleActions:
      type: object
      properties:
        viewAnalytics:
          type: boolean
        viewInbox:
          type: boolean
        viewPlanner:
          type: boolean
        viewAds:
          type: boolean
        viewSmartlinks:
          type: boolean
        fullAccessReports:
          type: boolean
        fullAccessInbox:
          type: boolean
        fullAccessPlanner:
          type: boolean
        fullAccessAds:
          type: boolean
        fullAccessSmartlinks:
          type: boolean
        fullAccessHashtagTracker:
          type: boolean
        editBrand:
          type: boolean
        schedulePosts:
          type: boolean
        publishPosts:
          type: boolean
        approvePosts:
          type: boolean
        viewCondensedAnalytics:
          type: boolean
        fullAccessDashboards:
          type: boolean
        viewDashboards:
          type: boolean
        editFlow:
          type: boolean
        viewFlow:
          type: boolean
        fullAccessStudio:
          type: boolean
    SubscriptionChangeRequest:
      required:
      - updateOperation
      type: object
      properties:
        updateOperation:
          type: string
        couponCode:
          type: string
        planId:
          type: string
        proration:
          type: boolean
        currency:
          type: string
        provider:
          type: string
        paymentMethodToken:
          type: string
        addons:
          type: object
          additionalProperties:
            type: integer
            format: int32
    JsonOkResponseCouponResult:
      type: object
      properties:
        metadata:
          type: object
        page:
          $ref: '#/components/schemas/JsonPaging'
        data:
          $ref: '#/components/schemas/CouponResult'
    DateTimeInfo:
      required:
      - dateTime
      type: object
      properties:
        dateTime:
          type: string
          description: 'Local Date-time represented with a certain timezone '
        timezone:
          type: string
          description: Timezone applied to the datetime
    CouponResult:
      type: object
      properties:
        finalPriceWithoutTaxes:
          type: number
          format: double
        isFreeCoupon:
          type: boolean
        coupon:
          $ref: '#/components/schemas/Coupon'
    Coupon:
      type: object
      properties:
        id:
          type: integer
          format: int32
        code:
          type: string
        amount:
          type: number
          format: float
        billingCycles:
          type: integer
          format: int32
        expiration:
          $ref: '#/components/schemas/DateTimeInfo'
        maxDiscounts:
          type: integer
          format: int32
        forNewUsers:
          type: boolean
        hashtagsBalance:
          type: integer
          format: int32
        ownerId:
          type: integer
          format: int32
        label:
          type: string
        discountsCount:
          type: integer
          format: int32
        revenue:
          type: number
          format: double
        creation:
          $ref: '#/components/schemas/DateTimeInfo'
        user:
          $ref: '#/components/schemas/User'
        percentage:
          type: boolean
        trial:
          type: integer
          format: int32
        enabled:
          type: boolean
        assignedTeamCouponTracking:
          type: string
        appliedAt:
          $ref: '#/components/schemas/DateTimeInfo'
        onlyAnnualPlans:
          type: boolean