Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to Gumroad

Scalekit connector
Open markdown

The Gumroad connector lets your AI agent act in each user's Gumroad account. Each user signs in to Gumroad once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 60 tools.

Tools
60
What they doRead · write · destructive
26 · 28 · 626 read28 write6 destructive
Users sign in with
OAuth app
Your own Gumroad app

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Gumroad connection

    In AgentKit > Connections, create a Gumroad connection and copy its redirect URI. The name you give it is the connection_name your code passes. See Configure connections.

  4. Register an OAuth app

    Gumroad connections use your own OAuth app. Register one with Gumroad and add the redirect URI you copied.

    Then enter the app's Client ID and Client Secret on the Gumroad connection.

  5. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'gumroad'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Gumroad:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'gumroad_get_refund_policy',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • gumroad_get_emailRetrieve one audience email with its HTML body and audience filters.Read-only

    Get Email

    Retrieve one audience email with its HTML body and audience filters. Returns the email object with id, subject, message, state, audience_type, published_at, scheduled_at and recipients_count. Use to read one email. Use gumroad_list_emails to find ids. Requires an email id from gumroad_list_emails.

    Inputs

    email_idstringrequired
    ID of the audience email, as returned by gumroad_list_emails (the id field, for example bfi_30HLgGWL8H2wo_Gzlg==).
  • gumroad_get_offer_codeRetrieve one offer code of a product.Read-only

    Get Product Offer Code

    Retrieve one offer code of a product. Returns the offer_code object with id, name, amount_cents or percent_off, max_purchase_count, universal and times_used. Use to inspect one code. Use gumroad_list_offer_codes to browse the codes on a product. Requires ids from gumroad_list_products and gumroad_list_offer_codes.

    Inputs

    offer_code_idstringrequired
    ID of the offer code, as returned by gumroad_list_offer_codes or gumroad_list_store_offer_codes (the id field, for example ZjCx1xkLQq9GeoV2sS8hTQ==).
    product_idstringrequired
    ID of the product, as returned by gumroad_list_products (the id field, for example A-m3CDDC5dlrSdKZp0RFhA==). The product's custom permalink also works.
  • gumroad_get_payoutRetrieve one payout with the sales, refunds and disputes it covers.Read-only

    Get Payout

    Retrieve one payout with the sales, refunds and disputes it covers. Returns the payout object with id, amount, currency, status, processed_at and the sales, refunded_sales and disputed_sales behind it (plus transactions when requested). Use to reconcile a specific payout. Use gumroad_list_payouts to find payout ids. Requires a payout id from gumroad_list_payouts.

    Inputs

    payout_idstringrequired
    ID of the payout, as returned by gumroad_list_payouts (the id field, for example bD3mQqHZ0C0nE2sa-Hx6JA==).
    include_salesstring
    Set to false to leave the sales, refunded_sales and disputed_sales details out of the response. Defaults to true.one of truefalse
    include_transactionsstring
    Set to true to include a transactions array with every balance-affecting transaction in the payout, as in the exported payout CSV. Defaults to false.one of truefalse
  • gumroad_get_productRetrieve the full details of one product.Read-only

    Get Product

    Retrieve the full details of one product. Returns the product object with name, description, price, currency, published, short_url, tags, category, variants, recurrences, custom_fields and, with the right scope, sales_count and sales_usd_cents. Use to inspect a single product. Use gumroad_list_products to browse all products. Requires a product id from gumroad_list_products.

    Inputs

    product_idstringrequired
    ID of the product, as returned by gumroad_list_products (the id field, for example A-m3CDDC5dlrSdKZp0RFhA==). The product's custom permalink also works.
  • gumroad_get_refund_policyRetrieve the account-level refund policy.Read-only

    Get Refund Policy

    Retrieve the account-level refund policy. Returns the refund_policy object with refund_period, title, fine_print and in_effect (whether buyers currently see it). Use to check the store-wide refund terms before changing them with gumroad_update_refund_policy.

    Inputs

    This tool takes no inputs.

  • gumroad_get_saleRetrieve the full details of one sale.Read-only

    Get Sale

    Retrieve the full details of one sale. Returns the sale object with id, email, product_name, price, currency, fees, tax, refund and dispute flags, variants, custom_fields and subscription details. Use to inspect a single order. Use gumroad_list_sales to find sales. Requires a sale id from gumroad_list_sales.

    Inputs

    sale_idstringrequired
    ID of the sale, as returned by gumroad_list_sales (the id field, for example A-m3CDDC5dlrSdKZp0RFhA==).
  • gumroad_get_store_offer_codeRetrieve one of the store's offer codes by id.Read-only

    Get Store Offer Code

    Retrieve one of the store's offer codes by id. Returns the offer_code object with id, name, amount or percentage, universal, auto_apply, valid_at, expires_at and times_used. Use when you have a code id but not its product. Use gumroad_get_offer_code when scoping to a product. Requires an offer code id from gumroad_list_store_offer_codes.

    Inputs

    offer_code_idstringrequired
    ID of the offer code, as returned by gumroad_list_offer_codes or gumroad_list_store_offer_codes (the id field, for example ZjCx1xkLQq9GeoV2sS8hTQ==).
  • gumroad_get_subscriberRetrieve one subscriber of a product.Read-only

    Get Subscriber

    Retrieve one subscriber of a product. Returns the subscriber object with id, email, product_id, status, recurrence, created_at, cancelled_at, ended_at, failed_at, free_trial_ends_at and license_key. Use to check a subscription's status. Use gumroad_list_subscribers to browse. Requires a subscriber id from gumroad_list_subscribers.

    Inputs

    subscriber_idstringrequired
    ID of the subscriber, as returned by gumroad_list_subscribers (the id field, for example GDzW4_aBdQc-o7Gbjng7lw==).