> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryhuntr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Start monthly plan checkout

> Create a Stripe Checkout session for a monthly plan, or return the billing portal for an existing subscription.



## OpenAPI

````yaml /openapi.json post /plans/checkout
openapi: 3.0.3
info:
  title: Huntr — The GTM Intelligence API
  description: >-
    Give AI agents company, people, contact, and web intelligence through one
    API. Search accounts, build targeted lists, enrich leads, find contacts, and
    uncover buying signals.


    **Authentication:** Authenticated endpoints require an `x-api-key` header
    with your Huntr API key. Get a key by signing up via `POST /keys/create`.
    Public endpoints (pricing, sign-up, health) work without a key.


    **Rate limit:** 5 requests/second per API key on authenticated endpoints.
  version: 2.0.0
servers:
  - url: https://api.tryhuntr.com
security: []
tags:
  - name: Contact APIs
    description: >-
      Search people and enrich work email, phone, and reverse-email contact
      fields.
  - name: Company APIs
    description: >-
      Search companies and retrieve company-level attributes such as detected
      technology stack and active job postings.
  - name: Research APIs
    description: >-
      Research one company, person, team, or focused business question and
      return a sales-ready answer. Lite, standard, and deep tiers.
  - name: LinkedIn APIs
    description: >-
      LinkedIn URL discovery, company and profile pages, posts, reactions, and
      comments.
  - name: X APIs
    description: X profiles, posts, search results, and thread context.
  - name: Web APIs
    description: >-
      Find, scrape, and analyze pages on a domain, plus tech stack, domain
      contacts, and job postings.
  - name: Account
    description: >-
      Sign up, verify email, recover keys, check balance, view usage, add
      credits, and read the public pricing matrix.
  - name: System
    description: Health check.
paths:
  /plans/checkout:
    post:
      tags:
        - Account
      summary: Start monthly plan checkout
      description: >-
        Create a Stripe Checkout session for a monthly plan, or return the
        billing portal for an existing subscription.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - plan
              properties:
                plan:
                  type: string
                  enum:
                    - starter
                    - unlimited_gtm
                    - unlimited_phone
                  description: Monthly plan to activate after successful Stripe checkout.
            example:
              plan: unlimited_gtm
      responses:
        '200':
          description: Stripe Checkout URL.
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - checkout_url
                  - plan
                  - label
                  - current_plan
                  - current_plan_expires_at
                properties:
                  success:
                    type: boolean
                  checkout_url:
                    type: string
                  plan:
                    type: string
                    enum:
                      - starter
                      - unlimited_gtm
                      - unlimited_phone
                  label:
                    type: string
                  current_plan:
                    type: string
                  current_plan_expires_at:
                    type: string
                    nullable: true
                additionalProperties: false
              example:
                checkout_url: https://checkout.stripe.com/pay/cs_live_xxx
                plan: unlimited_gtm
                label: Unlimited GTM
                current_plan: pay_as_you_go
                current_plan_expires_at: null
        '400':
          description: Invalid plan.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >-
            An active subscription already exists for this key. Redirect the
            user to the returned billing portal URL.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - type: object
                    properties:
                      portal_url:
                        type: string
                        format: uri
                        description: >-
                          Stripe billing portal URL for managing the existing
                          subscription.
              example:
                error: >-
                  An active subscription already exists for this API key. Manage
                  it in the billing portal.
                portal_url: https://billing.stripe.com/p/session/...
        '503':
          description: Payments are not enabled.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.tryhuntr.com/plans/checkout \
              --header 'x-api-key: <api-key>' \
              --header 'Content-Type: application/json' \
              --data '{
              "plan": "unlimited_gtm"
            }'
      x-code-samples:
        - lang: Shell
          label: cURL
          source: |-
            curl --request POST \
              --url https://api.tryhuntr.com/plans/checkout \
              --header 'x-api-key: <api-key>' \
              --header 'Content-Type: application/json' \
              --data '{
              "plan": "unlimited_gtm"
            }'
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          description: Human-readable error message.
      required:
        - error
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Your Huntr API key. Get one at tryhuntr.com. Pass as x-api-key header on
        all authenticated requests.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.