🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

GetResponse

by @byungkyu

GetResponse API integration with managed OAuth. Manage email marketing campaigns, contacts, newsletters, autoresponders, segments, workflows, ecommerce/shops...

TERMINAL
clawhub install getresponse

πŸ“– About This Skill


name: getresponse description: | GetResponse API integration with managed OAuth. Manage email marketing campaigns, contacts, newsletters, autoresponders, and segments. Use this skill when users want to manage email lists, send newsletters, create campaigns, or work with contacts in GetResponse. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). compatibility: Requires network access and valid Maton API key metadata: author: maton version: "1.0" clawdbot: emoji: 🧠 homepage: "https://maton.ai" requires: env: - MATON_API_KEY

GetResponse

Access the GetResponse API with managed OAuth authentication. Manage email marketing campaigns, contacts, newsletters, autoresponders, segments, and forms.

Quick Start

# List campaigns
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/getresponse/v3/campaigns')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Base URL

https://api.maton.ai/getresponse/{native-api-path}

Maton proxies requests to api.getresponse.com and automatically injects your OAuth token.

Authentication

All requests require the Maton API key in the Authorization header:

Authorization: Bearer $MATON_API_KEY

Environment Variable: Set your API key as MATON_API_KEY:

export MATON_API_KEY="YOUR_API_KEY"

Getting Your API Key

1. Sign in or create an account at maton.ai 2. Go to maton.ai/settings 3. Copy your API key

Connection Management

Manage your GetResponse OAuth connections at https://api.maton.ai.

List Connections

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections?app=getresponse&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Create Connection

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'getresponse'}).encode()
req = urllib.request.Request('https://api.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Get Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Response:

{
  "connection": {
    "connection_id": "{connection_id}",
    "status": "ACTIVE",
    "creation_time": "2025-12-08T07:20:53.488460Z",
    "last_updated_time": "2026-01-31T20:03:32.593153Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "getresponse",
    "metadata": {}
  }
}

Open the returned url in a browser to complete OAuth authorization.

Delete Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Specifying Connection

If you have multiple GetResponse connections, specify which one to use with the Maton-Connection header:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/getresponse/v3/campaigns')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '{connection_id}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

If you have multiple connections, always include this header to ensure requests go to the intended account.

Security & Permissions

  • Access is scoped to email marketing campaigns, contacts, newsletters, autoresponders, and segments within the connected GetResponse account.
  • All write operations require explicit user approval. Before executing any create, update, or delete call, confirm the target resource and intended effect with the user.
  • API Reference

    Account Operations

    #### Get Account Details

    GET /getresponse/v3/accounts
    

    #### Get Billing Info

    GET /getresponse/v3/accounts/billing
    

    Campaign Operations

    Campaigns in GetResponse are equivalent to email lists/audiences.

    #### List Campaigns

    GET /getresponse/v3/campaigns
    

    With pagination:

    GET /getresponse/v3/campaigns?page=1&perPage=100
    

    #### Get Campaign

    GET /getresponse/v3/campaigns/{campaignId}
    

    #### Create Campaign

    POST /getresponse/v3/campaigns
    Content-Type: application/json

    { "name": "My Campaign" }

    Contact Operations

    #### List Contacts

    GET /getresponse/v3/contacts
    

    With campaign filter:

    GET /getresponse/v3/contacts?query[campaignId]={campaignId}
    

    With pagination:

    GET /getresponse/v3/contacts?page=1&perPage=100
    

    With sorting:

    GET /getresponse/v3/contacts?sort[createdOn]=desc
    

    #### Get Contact

    GET /getresponse/v3/contacts/{contactId}
    

    #### Create Contact

    POST /getresponse/v3/contacts
    Content-Type: application/json

    { "email": "john@example.com", "name": "John Doe", "campaign": { "campaignId": "abc123" }, "customFieldValues": [ { "customFieldId": "xyz789", "value": ["Custom Value"] } ] }

    #### Update Contact

    POST /getresponse/v3/contacts/{contactId}
    Content-Type: application/json

    { "name": "John Smith", "customFieldValues": [ { "customFieldId": "xyz789", "value": ["Updated Value"] } ] }

    #### Delete Contact

    DELETE /getresponse/v3/contacts/{contactId}
    

    #### Get Contact Activities

    GET /getresponse/v3/contacts/{contactId}/activities
    

    Custom Fields

    #### List Custom Fields

    GET /getresponse/v3/custom-fields
    

    #### Get Custom Field

    GET /getresponse/v3/custom-fields/{customFieldId}
    

    #### Create Custom Field

    POST /getresponse/v3/custom-fields
    Content-Type: application/json

    { "name": "company", "type": "text", "hidden": false, "values": [] }

    Newsletter Operations

    #### List Newsletters

    GET /getresponse/v3/newsletters
    

    #### Send Newsletter

    POST /getresponse/v3/newsletters
    Content-Type: application/json

    { "subject": "Newsletter Subject", "name": "Internal Newsletter Name", "campaign": { "campaignId": "abc123" }, "content": { "html": "Newsletter content", "plain": "Newsletter content" }, "sendOn": "2026-02-15T10:00:00Z" }

    #### Send Draft Newsletter

    POST /getresponse/v3/newsletters/send-draft
    Content-Type: application/json

    { "messageId": "newsletter123", "sendOn": "2026-02-15T10:00:00Z" }

    #### List RSS Newsletters

    GET /getresponse/v3/rss-newsletters
    

    Tags

    #### List Tags

    GET /getresponse/v3/tags
    

    #### Get Tag

    GET /getresponse/v3/tags/{tagId}
    

    #### Create Tag

    POST /getresponse/v3/tags
    Content-Type: application/json

    { "name": "VIP Customer" }

    #### Update Tag

    POST /getresponse/v3/tags/{tagId}
    Content-Type: application/json

    { "name": "Premium Customer" }

    #### Delete Tag

    DELETE /getresponse/v3/tags/{tagId}
    

    #### Assign Tags to Contact

    POST /getresponse/v3/contacts/{contactId}/tags
    Content-Type: application/json

    { "tags": [ {"tagId": "abc123"}, {"tagId": "xyz789"} ] }

    Autoresponders

    #### List Autoresponders

    GET /getresponse/v3/autoresponders
    

    #### Get Autoresponder

    GET /getresponse/v3/autoresponders/{autoresponderId}
    

    #### Create Autoresponder

    POST /getresponse/v3/autoresponders
    Content-Type: application/json

    { "name": "Welcome Email", "subject": "Welcome to our list!", "campaign": { "campaignId": "abc123" }, "triggerSettings": { "dayOfCycle": 0 }, "content": { "html": "Welcome!", "plain": "Welcome!" } }

    #### Update Autoresponder

    POST /getresponse/v3/autoresponders/{autoresponderId}
    Content-Type: application/json

    { "subject": "Updated Welcome Email" }

    #### Delete Autoresponder

    DELETE /getresponse/v3/autoresponders/{autoresponderId}
    

    #### Get Autoresponder Statistics

    GET /getresponse/v3/autoresponders/{autoresponderId}/statistics
    

    #### Get All Autoresponder Statistics

    GET /getresponse/v3/autoresponders/statistics
    

    From Fields

    #### List From Fields

    GET /getresponse/v3/from-fields
    

    #### Get From Field

    GET /getresponse/v3/from-fields/{fromFieldId}
    

    Transactional Emails

    Note: Transactional email endpoints may require additional OAuth scopes that are not included in the default authorization.

    #### List Transactional Emails

    GET /getresponse/v3/transactional-emails
    

    #### Send Transactional Email

    POST /getresponse/v3/transactional-emails
    Content-Type: application/json

    { "fromField": { "fromFieldId": "abc123" }, "subject": "Your Order Confirmation", "recipients": { "to": "customer@example.com" }, "content": { "html": "Order confirmed!", "plain": "Order confirmed!" } }

    #### Get Transactional Email

    GET /getresponse/v3/transactional-emails/{transactionalEmailId}
    

    #### Get Transactional Email Statistics

    GET /getresponse/v3/transactional-emails/statistics
    

    Imports

    #### List Imports

    GET /getresponse/v3/imports
    

    #### Create Import

    POST /getresponse/v3/imports
    Content-Type: application/json

    { "campaign": { "campaignId": "abc123" }, "contacts": [ { "email": "user1@example.com", "name": "User One" }, { "email": "user2@example.com", "name": "User Two" } ] }

    #### Get Import

    GET /getresponse/v3/imports/{importId}
    

    Workflows (Automations)

    #### List Workflows

    GET /getresponse/v3/workflow
    

    #### Get Workflow

    GET /getresponse/v3/workflow/{workflowId}
    

    #### Update Workflow

    POST /getresponse/v3/workflow/{workflowId}
    Content-Type: application/json

    { "status": "enabled" }

    Segments (Search Contacts)

    #### List Segments

    GET /getresponse/v3/search-contacts
    

    #### Create Segment

    POST /getresponse/v3/search-contacts
    Content-Type: application/json

    { "name": "Active Subscribers", "subscribersType": ["subscribed"], "sectionLogicOperator": "or", "section": [] }

    #### Get Segment

    GET /getresponse/v3/search-contacts/{searchContactId}
    

    #### Update Segment

    POST /getresponse/v3/search-contacts/{searchContactId}
    Content-Type: application/json

    { "name": "Updated Segment Name" }

    #### Delete Segment

    DELETE /getresponse/v3/search-contacts/{searchContactId}
    

    #### Get Contacts from Segment

    GET /getresponse/v3/search-contacts/{searchContactId}/contacts
    

    #### Search Contacts Without Saving

    POST /getresponse/v3/search-contacts/contacts
    Content-Type: application/json

    { "subscribersType": ["subscribed"], "sectionLogicOperator": "or", "section": [] }

    Forms

    Note: Forms endpoints may require additional OAuth scopes (form_view, form_design, form_select) that are not included in the default authorization.

    #### List Forms

    GET /getresponse/v3/forms
    

    #### Get Form

    GET /getresponse/v3/forms/{formId}
    

    Webforms

    #### List Webforms

    GET /getresponse/v3/webforms
    

    #### Get Webform

    GET /getresponse/v3/webforms/{webformId}
    

    SMS Messages

    #### List SMS Messages

    GET /getresponse/v3/sms
    

    #### Send SMS

    POST /getresponse/v3/sms
    Content-Type: application/json

    { "recipients": { "campaignId": "abc123" }, "content": { "message": "Your SMS message content" }, "sendOn": "2026-02-15T10:00:00Z" }

    #### Get SMS Message

    GET /getresponse/v3/sms/{smsId}
    

    #### Get SMS Statistics

    GET /getresponse/v3/statistics/sms/{smsId}
    

    Shops (Ecommerce)

    #### List Shops

    GET /getresponse/v3/shops
    

    #### Create Shop

    POST /getresponse/v3/shops
    Content-Type: application/json

    { "name": "My Store", "locale": "en_US", "currency": "USD" }

    #### Get Shop

    GET /getresponse/v3/shops/{shopId}
    

    #### List Products

    GET /getresponse/v3/shops/{shopId}/products
    

    #### Create Product

    POST /getresponse/v3/shops/{shopId}/products
    Content-Type: application/json

    { "name": "Product Name", "url": "https://example.com/product", "variants": [ { "name": "Default", "price": 29.99, "priceTax": 32.99 } ] }

    #### List Orders

    GET /getresponse/v3/shops/{shopId}/orders
    

    #### Create Order

    POST /getresponse/v3/shops/{shopId}/orders
    Content-Type: application/json

    { "contactId": "abc123", "totalPrice": 99.99, "currency": "USD", "status": "completed" }

    Webinars

    #### List Webinars

    GET /getresponse/v3/webinars
    

    #### Get Webinar

    GET /getresponse/v3/webinars/{webinarId}
    

    Landing Pages

    #### List Landing Pages

    GET /getresponse/v3/lps
    

    #### Get Landing Page

    GET /getresponse/v3/lps/{lpsId}
    

    #### Get Landing Page Statistics

    GET /getresponse/v3/statistics/lps/{lpsId}/performance
    

    Pagination

    Use page and perPage query parameters for pagination:

    GET /getresponse/v3/contacts?page=1&perPage=100
    

  • page - Page number (starts at 1)
  • perPage - Number of records per page (max 1000)
  • Response headers include pagination info:

  • TotalCount - Total number of records
  • TotalPages - Total number of pages
  • CurrentPage - Current page number
  • Code Examples

    JavaScript

    const response = await fetch(
      'https://api.maton.ai/getresponse/v3/contacts?perPage=10',
      {
        headers: {
          'Authorization': Bearer ${process.env.MATON_API_KEY}
        }
      }
    );
    const contacts = await response.json();
    

    Python

    import os
    import requests

    response = requests.get( 'https://api.maton.ai/getresponse/v3/contacts', headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}, params={'perPage': 10} ) contacts = response.json()

    Notes

  • Campaign IDs and Contact IDs are alphanumeric strings
  • All timestamps use ISO 8601 format (e.g., 2026-02-15T10:00:00Z)
  • Field names use camelCase
  • Rate limits: 30,000 requests per 10 minutes, 80 requests per second
  • IMPORTANT: When using curl commands, use curl -g when URLs contain brackets to disable glob parsing
  • IMPORTANT: When piping curl output to jq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments
  • Error Handling

    | Status | Meaning | |--------|---------| | 400 | Missing GetResponse connection or invalid request | | 401 | Invalid or missing Maton API key | | 404 | Resource not found | | 409 | Conflict (e.g., contact already exists) | | 429 | Rate limited | | 4xx/5xx | Passthrough error from GetResponse API |

    Troubleshooting: API Key Issues

    1. Check that the MATON_API_KEY environment variable is set:

    echo $MATON_API_KEY
    

    2. Verify the API key is valid by listing connections:

    python <<'EOF'
    import urllib.request, os, json
    req = urllib.request.Request('https://api.maton.ai/connections')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    

    Troubleshooting: Invalid App Name

    1. Ensure your URL path starts with getresponse. For example:

  • Correct: https://api.maton.ai/getresponse/v3/contacts
  • Incorrect: https://api.maton.ai/v3/contacts
  • Resources

  • GetResponse API Documentation
  • GetResponse OpenAPI Spec
  • Maton Community
  • Maton Support
  • πŸ’‘ Examples

    # List campaigns
    python <<'EOF'
    import urllib.request, os, json
    req = urllib.request.Request('https://api.maton.ai/getresponse/v3/campaigns')
    req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
    print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
    EOF
    

    πŸ“‹ Tips & Best Practices

  • Campaign IDs and Contact IDs are alphanumeric strings
  • All timestamps use ISO 8601 format (e.g., 2026-02-15T10:00:00Z)
  • Field names use camelCase
  • Rate limits: 30,000 requests per 10 minutes, 80 requests per second
  • IMPORTANT: When using curl commands, use curl -g when URLs contain brackets to disable glob parsing
  • IMPORTANT: When piping curl output to jq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments