Call2Me Payments API

The Payments API from Call2Me — 11 operation(s) for payments.

Operations 14

GET /v1/payments/providers List Payment Providers #
POST /v1/payments/checkout Create Checkout #
GET /v1/payments/callback/success Checkout Success Callback #
POST /v1/payments/callback/success Checkout Success Callback #
GET /v1/payments/callback/cancel Checkout Cancel Callback #
POST /v1/payments/callback/cancel Checkout Cancel Callback #
GET /v1/payments/methods List Payment Methods #
DELETE /v1/payments/methods/{method_id} Delete Payment Method #
POST /v1/payments/methods/{method_id}/default Set Default Payment Method #
GET /v1/payments/auto-charge Get Auto Charge Settings #
PUT /v1/payments/auto-charge Update Auto Charge Settings #
POST /v1/payments/webhooks/iyzico Iyzico Webhook #
POST /v1/payments/webhooks/paddle Paddle Webhook #
GET /v1/payments/history Get Payment History #

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/call2me-app:call2me-app-payments-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

call2me-app-payments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Call2Me Payments API
  description: '# Call2Me Voice AI Platform API


    Programmatic interface to build, deploy and operate voice AI agents that can place

    and receive phone calls in real time. Designed to be consumed by humans **and** by

    AI agent frameworks (function-calling LLMs, MCP servers, automation platforms like

    Composio, Pipedream, Zapier, n8n).


    ## What you can do


    - **Place outbound calls** — give an agent a phone number to dial; the AI handles

    the conversation end-to-end and returns a transcript + recording.

    - **Manage AI agents** — create personalities, attach voices, system prompts,

    knowledge bases and post-call actions.

    - **Schedule calls** — one-shot or recurring (cron-like) outbound calls.

    - **Knowledge base (RAG)** — upload documents/URLs so the agent answers from your

    data with reduced hallucination.

    - **Inbound** — provision phone numbers that route to your agents.


    ## Common LLM tool-calling use cases


    | Goal | Endpoint |

    |------|----------|

    | "Call this person and read them this script" | `POST /v1/calls` |

    | "Schedule a follow-up tomorrow at 14:00" | `POST /v1/schedules` |

    | "Get the transcript of last call" | `GET /v1/calls/{id}` |

    | "Add this PDF to the agent''s brain" | `POST /v1/knowledge-base/{id}/sources` |


    ## Authentication


    Every request requires a Bearer token issued from the dashboard:


    ```

    Authorization: Bearer c2m_sk_xxxxxxxxxxxxxxxx

    ```


    Get your API key from the API Keys page.

    Keys are scoped per-workspace and can be rotated/revoked any time.


    ## Rate Limits


    | Plan | Requests/min | Concurrent Calls |

    |------|-------------|------------------|

    | Free | 60 | 1 |

    | Pro | 600 | 10 |

    | Enterprise | Unlimited | Unlimited |


    ## SDKs & Integrations


    - Python SDK

    - Node.js SDK

    - OpenAPI 3.1 spec: `/openapi.json` (use it to generate clients or register the

    service with AI tool platforms)


    ## Support


    - Email: support@call2me.app

    - Docs: https://docs.call2me.app

    - Discord: https://discord.gg/call2me'
  version: 1.0.0
  x-logo:
    url: https://call2me.app/logo.png
    altText: Call2Me Logo
  contact:
    name: Call2Me Support
    url: https://call2me.app/support
    email: support@call2me.app
  license:
    name: Commercial — see Terms of Service
    url: https://call2me.app/terms
  termsOfService: https://call2me.app/terms
servers:
- url: https://api.call2me.app
  description: Production
- url: http://localhost:8000
  description: Local Development
security:
- BearerAuth: []
tags:
- name: Payments
paths:
  /v1/payments/providers:
    get:
      tags:
      - Payments
      summary: List Payment Providers
      description: 'Bu kullanıcının kullanabileceği ödeme sağlayıcıları (ilki varsayılan).


        Kural markadan gelir (`branding.payment_providers`, bkz.

        `src/payment/brand_rules.py`). iyzico listedeyse tahmini ₺ kuru da

        döner; kesin TRY tutarı checkout yanıtındadır.'
      operationId: list_payment_providers_v1_payments_providers_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentProvidersResponse'
  /v1/payments/checkout:
    post:
      tags:
      - Payments
      summary: Create Checkout
      description: 'Create a checkout session for adding funds.


        Sağlayıcı markanın kuralından gelir (`allowed_payment_providers`):

        `provider` verilmezse listenin ilki, listede olmayan → 400.

        iyzico: tutar USD seçilir, TCMB kuru + %3 ile TRY tahsil edilir;

        kesin TRY ve kur yanıtta döner. Kur alınamazsa 503 (Paddle etkilenmez).'
      operationId: create_checkout_v1_payments_checkout_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCheckoutRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/src__payment__models__CheckoutResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/payments/callback/success:
    get:
      tags:
      - Payments
      summary: Checkout Success Callback
      description: 'iyzico checkout dönüşü (tarayıcı POST eder, gövdede `token`).


        Kullanıcı kimliği query''den DEĞİL, token ile bizim açtığımız `payments`

        satırından gelir. Sonuç iyzico''dan sunucu tarafında sorgulanır.

        Yönlendirme kullanıcının markasının paneline (850santral →

        panel.850santral.com).'
      operationId: checkout_success_callback_v1_payments_callback_success_get
      parameters:
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Payments
      summary: Checkout Success Callback
      description: 'iyzico checkout dönüşü (tarayıcı POST eder, gövdede `token`).


        Kullanıcı kimliği query''den DEĞİL, token ile bizim açtığımız `payments`

        satırından gelir. Sonuç iyzico''dan sunucu tarafında sorgulanır.

        Yönlendirme kullanıcının markasının paneline (850santral →

        panel.850santral.com).'
      operationId: postV1PaymentsCallbackSuccess
      parameters:
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-operation-id-source: normalized
      x-operation-id-original: checkout_success_callback_v1_payments_callback_success_get
  /v1/payments/callback/cancel:
    get:
      tags:
      - Payments
      summary: Checkout Cancel Callback
      description: 'Vazgeçilen checkout''tan dönüş.


        Sahip ve dönüş adresi `token` → bizim açtığımız `payments` satırından

        bulunur. Önceden `?user_id=` query''si alınıyordu: kimliksiz biri,

        başkasının son 2 saatteki TÜM pending satırlarını ''cancelled''

        işaretleyebiliyordu (güvenlik denetimi 25 Eki, DÜŞÜK) ve dönüş adresi o

        kullanıcının markasından seçiliyordu. Token yoksa/eşleşmezse: hiçbir

        satır değişmez, varsayılan panele dönülür.'
      operationId: checkout_cancel_callback_v1_payments_callback_cancel_get
      parameters:
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Payments
      summary: Checkout Cancel Callback
      description: 'Vazgeçilen checkout''tan dönüş.


        Sahip ve dönüş adresi `token` → bizim açtığımız `payments` satırından

        bulunur. Önceden `?user_id=` query''si alınıyordu: kimliksiz biri,

        başkasının son 2 saatteki TÜM pending satırlarını ''cancelled''

        işaretleyebiliyordu (güvenlik denetimi 25 Eki, DÜŞÜK) ve dönüş adresi o

        kullanıcının markasından seçiliyordu. Token yoksa/eşleşmezse: hiçbir

        satır değişmez, varsayılan panele dönülür.'
      operationId: postV1PaymentsCallbackCancel
      parameters:
      - name: token
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Token
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-operation-id-source: normalized
      x-operation-id-original: checkout_cancel_callback_v1_payments_callback_cancel_get
  /v1/payments/methods:
    get:
      tags:
      - Payments
      summary: List Payment Methods
      description: 'List saved payment methods.


        Returns all saved cards/payment methods for the user.'
      operationId: list_payment_methods_v1_payments_methods_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentMethodsResponse'
  /v1/payments/methods/{method_id}:
    delete:
      tags:
      - Payments
      summary: Delete Payment Method
      description: 'Delete a saved payment method.


        Cannot delete if the method is used for auto-charge (disable first).'
      operationId: delete_payment_method_v1_payments_methods__method_id__delete
      parameters:
      - name: method_id
        in: path
        required: true
        schema:
          type: string
          title: Method Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/payments/methods/{method_id}/default:
    post:
      tags:
      - Payments
      summary: Set Default Payment Method
      description: 'Set a payment method as default.


        The default method is used for auto-charge.'
      operationId: set_default_payment_method_v1_payments_methods__method_id__default_post
      parameters:
      - name: method_id
        in: path
        required: true
        schema:
          type: string
          title: Method Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/payments/auto-charge:
    get:
      tags:
      - Payments
      summary: Get Auto Charge Settings
      description: 'Get auto-charge settings.


        Returns current auto-charge configuration for the user.'
      operationId: get_auto_charge_settings_v1_payments_auto_charge_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutoChargeResponse'
    put:
      tags:
      - Payments
      summary: Update Auto Charge Settings
      description: 'Update auto-charge settings.


        Configure automatic balance top-up when balance falls below threshold.

        Requires a saved payment method.'
      operationId: update_auto_charge_settings_v1_payments_auto_charge_put
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutoChargeSettingsRequest'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/payments/webhooks/iyzico:
    post:
      tags:
      - Payments
      summary: Iyzico Webhook
      description: 'iyzico webhook (imza: X-IYZ-SIGNATURE-V3, bkz. IyzicoProvider.verify_webhook).


        İmza doğrulanmadan hiçbir şey yapılmaz (fail-closed). Kredi YALNIZ

        checkout-form (HPP) bildiriminden ve `_finalize_iyzico_token` ile yazılır:

        tutar/sahip bizim `payments` satırından, sonuç iyzico''dan sunucu

        tarafında sorgulanarak. Gövdedeki tutara asla güvenilmez.'
      operationId: iyzico_webhook_v1_payments_webhooks_iyzico_post
      parameters:
      - name: X-IYZ-SIGNATURE-V3
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Iyz-Signature-V3
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/payments/webhooks/paddle:
    post:
      tags:
      - Payments
      summary: Paddle Webhook
      description: 'Handle Paddle webhook.


        Processes payment notifications from Paddle.

        Paddle uses Paddle-Signature header for verification.'
      operationId: paddle_webhook_v1_payments_webhooks_paddle_post
      parameters:
      - name: Paddle-Signature
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Paddle-Signature
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/payments/history:
    get:
      tags:
      - Payments
      summary: Get Payment History
      description: 'Get payment history.


        Returns paginated list of payments (not wallet transactions).'
      operationId: get_payment_history_v1_payments_history_get
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          default: 20
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          default: 0
          title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentHistoryResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    PaymentHistoryItem:
      properties:
        id:
          type: string
          title: Id
        provider:
          type: string
          title: Provider
        amount_usd:
          type: number
          title: Amount Usd
        currency:
          type: string
          title: Currency
        status:
          type: string
          title: Status
        is_auto_charge:
          type: boolean
          title: Is Auto Charge
        created_at:
          type: string
          title: Created At
        completed_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Completed At
      type: object
      required:
      - id
      - provider
      - amount_usd
      - currency
      - status
      - is_auto_charge
      - created_at
      title: PaymentHistoryItem
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    PaymentMethodsResponse:
      properties:
        methods:
          items:
            $ref: '#/components/schemas/PaymentMethodResponse'
          type: array
          title: Methods
      type: object
      required:
      - methods
      title: PaymentMethodsResponse
    src__payment__models__CheckoutResponse:
      properties:
        session_id:
          type: string
          title: Session Id
        checkout_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Checkout Url
        checkout_html:
          anyOf:
          - type: string
          - type: 'null'
          title: Checkout Html
        provider:
          type: string
          title: Provider
        charged_amount:
          anyOf:
          - type: string
          - type: 'null'
          title: Charged Amount
        charged_currency:
          anyOf:
          - type: string
          - type: 'null'
          title: Charged Currency
        fx_rate:
          anyOf:
          - type: string
          - type: 'null'
          title: Fx Rate
      type: object
      required:
      - session_id
      - provider
      title: CheckoutResponse
      description: Response with checkout session details.
    PaymentMethodResponse:
      properties:
        id:
          type: string
          title: Id
        provider:
          type: string
          title: Provider
        card_last_four:
          type: string
          title: Card Last Four
        card_brand:
          type: string
          title: Card Brand
        card_type:
          anyOf:
          - type: string
          - type: 'null'
          title: Card Type
        is_default:
          type: boolean
          title: Is Default
        created_at:
          type: string
          title: Created At
      type: object
      required:
      - id
      - provider
      - card_last_four
      - card_brand
      - is_default
      - created_at
      title: PaymentMethodResponse
    AutoChargeSettingsRequest:
      properties:
        enabled:
          type: boolean
          title: Enabled
        threshold_usd:
          anyOf:
          - type: number
            minimum: 0.0
          - type: string
          title: Threshold Usd
          default: '5.00'
        charge_amount_usd:
          anyOf:
          - type: number
            exclusiveMinimum: 0.0
          - type: string
          title: Charge Amount Usd
          default: '25.00'
        payment_method_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Payment Method Id
      type: object
      required:
      - enabled
      title: AutoChargeSettingsRequest
      description: Request to update auto-charge settings.
    CreateCheckoutRequest:
      properties:
        amount:
          anyOf:
          - type: number
            exclusiveMinimum: 0.0
          - type: string
          title: Amount
          description: Amount (USD unless `currency` says otherwise)
        currency:
          type: string
          title: Currency
          description: Currency code
          default: USD
        success_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Success Url
        cancel_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Cancel Url
        save_card:
          type: boolean
          title: Save Card
          description: Save card for future use
          default: false
        provider:
          anyOf:
          - type: string
            enum:
            - iyzico
            - paddle
          - type: 'null'
          title: Provider
          description: Payment provider (iyzico or paddle)
      type: object
      required:
      - amount
      title: CreateCheckoutRequest
      description: Request to create a checkout session.
    PaymentHistoryResponse:
      properties:
        payments:
          items:
            $ref: '#/components/schemas/PaymentHistoryItem'
          type: array
          title: Payments
        total:
          type: integer
          title: Total
      type: object
      required:
      - payments
      - total
      title: PaymentHistoryResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PaymentProvidersResponse:
      properties:
        providers:
          items:
            type: string
          type: array
          title: Providers
        default:
          anyOf:
          - type: string
          - type: 'null'
          title: Default
        try_rate:
          anyOf:
          - type: string
          - type: 'null'
          title: Try Rate
        fx_markup:
          anyOf:
          - type: string
          - type: 'null'
          title: Fx Markup
      type: object
      required:
      - providers
      title: PaymentProvidersResponse
      description: Kullanıcının kullanabileceği ödeme sağlayıcıları (ilki varsayılan).
    AutoChargeResponse:
      properties:
        enabled:
          type: boolean
          title: Enabled
        threshold_usd:
          type: number
          title: Threshold Usd
        charge_amount_usd:
          type: number
          title: Charge Amount Usd
        payment_method_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Payment Method Id
      type: object
      required:
      - enabled
      - threshold_usd
      - charge_amount_usd
      title: AutoChargeResponse
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: Enter your API key
externalDocs:
  description: Full developer documentation
  url: https://docs.call2me.app