Back to skills
extension
Category: Security & ComplianceAPI key required

GetResponse

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

personAuthor: byungkyuhubclawhub

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, segments, workflows, ecommerce/shops, SMS, landing pages, webinars, transactional emails, forms, and account data 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.
  • Messaging operations (newsletters, SMS, transactional emails) deliver to real contacts. Always confirm the audience/list, message content, and send timing with the user before executing.

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": "<html><body>Newsletter content</body></html>",
    "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": "<html><body>Welcome!</body></html>",
    "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": "<html><body>Order confirmed!</body></html>",
    "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
  1. 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