Install
openclaw skills install getresponseGetResponse 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).
openclaw skills install getresponseAccess the GetResponse API with managed OAuth authentication. Manage email marketing campaigns, contacts, newsletters, autoresponders, segments, and forms.
# 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
https://api.maton.ai/getresponse/{native-api-path}
Maton proxies requests to api.getresponse.com and automatically injects your OAuth token.
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"
Manage your GetResponse OAuth connections at https://api.maton.ai.
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
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
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.
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
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.
GET /getresponse/v3/accounts
GET /getresponse/v3/accounts/billing
Campaigns in GetResponse are equivalent to email lists/audiences.
GET /getresponse/v3/campaigns
With pagination:
GET /getresponse/v3/campaigns?page=1&perPage=100
GET /getresponse/v3/campaigns/{campaignId}
POST /getresponse/v3/campaigns
Content-Type: application/json
{
"name": "My Campaign"
}
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 /getresponse/v3/contacts/{contactId}
POST /getresponse/v3/contacts
Content-Type: application/json
{
"email": "john@example.com",
"name": "John Doe",
"campaign": {
"campaignId": "abc123"
},
"customFieldValues": [
{
"customFieldId": "xyz789",
"value": ["Custom Value"]
}
]
}
POST /getresponse/v3/contacts/{contactId}
Content-Type: application/json
{
"name": "John Smith",
"customFieldValues": [
{
"customFieldId": "xyz789",
"value": ["Updated Value"]
}
]
}
DELETE /getresponse/v3/contacts/{contactId}
GET /getresponse/v3/contacts/{contactId}/activities
GET /getresponse/v3/custom-fields
GET /getresponse/v3/custom-fields/{customFieldId}
POST /getresponse/v3/custom-fields
Content-Type: application/json
{
"name": "company",
"type": "text",
"hidden": false,
"values": []
}
GET /getresponse/v3/newsletters
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"
}
POST /getresponse/v3/newsletters/send-draft
Content-Type: application/json
{
"messageId": "newsletter123",
"sendOn": "2026-02-15T10:00:00Z"
}
GET /getresponse/v3/rss-newsletters
GET /getresponse/v3/tags
GET /getresponse/v3/tags/{tagId}
POST /getresponse/v3/tags
Content-Type: application/json
{
"name": "VIP Customer"
}
POST /getresponse/v3/tags/{tagId}
Content-Type: application/json
{
"name": "Premium Customer"
}
DELETE /getresponse/v3/tags/{tagId}
POST /getresponse/v3/contacts/{contactId}/tags
Content-Type: application/json
{
"tags": [
{"tagId": "abc123"},
{"tagId": "xyz789"}
]
}
GET /getresponse/v3/autoresponders
GET /getresponse/v3/autoresponders/{autoresponderId}
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!"
}
}
POST /getresponse/v3/autoresponders/{autoresponderId}
Content-Type: application/json
{
"subject": "Updated Welcome Email"
}
DELETE /getresponse/v3/autoresponders/{autoresponderId}
GET /getresponse/v3/autoresponders/{autoresponderId}/statistics
GET /getresponse/v3/autoresponders/statistics
GET /getresponse/v3/from-fields
GET /getresponse/v3/from-fields/{fromFieldId}
Note: Transactional email endpoints may require additional OAuth scopes that are not included in the default authorization.
GET /getresponse/v3/transactional-emails
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 /getresponse/v3/transactional-emails/{transactionalEmailId}
GET /getresponse/v3/transactional-emails/statistics
GET /getresponse/v3/imports
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 /getresponse/v3/imports/{importId}
GET /getresponse/v3/workflow
GET /getresponse/v3/workflow/{workflowId}
POST /getresponse/v3/workflow/{workflowId}
Content-Type: application/json
{
"status": "enabled"
}
GET /getresponse/v3/search-contacts
POST /getresponse/v3/search-contacts
Content-Type: application/json
{
"name": "Active Subscribers",
"subscribersType": ["subscribed"],
"sectionLogicOperator": "or",
"section": []
}
GET /getresponse/v3/search-contacts/{searchContactId}
POST /getresponse/v3/search-contacts/{searchContactId}
Content-Type: application/json
{
"name": "Updated Segment Name"
}
DELETE /getresponse/v3/search-contacts/{searchContactId}
GET /getresponse/v3/search-contacts/{searchContactId}/contacts
POST /getresponse/v3/search-contacts/contacts
Content-Type: application/json
{
"subscribersType": ["subscribed"],
"sectionLogicOperator": "or",
"section": []
}
Note: Forms endpoints may require additional OAuth scopes (form_view, form_design, form_select) that are not included in the default authorization.
GET /getresponse/v3/forms
GET /getresponse/v3/forms/{formId}
GET /getresponse/v3/webforms
GET /getresponse/v3/webforms/{webformId}
GET /getresponse/v3/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 /getresponse/v3/sms/{smsId}
GET /getresponse/v3/statistics/sms/{smsId}
GET /getresponse/v3/shops
POST /getresponse/v3/shops
Content-Type: application/json
{
"name": "My Store",
"locale": "en_US",
"currency": "USD"
}
GET /getresponse/v3/shops/{shopId}
GET /getresponse/v3/shops/{shopId}/products
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
}
]
}
GET /getresponse/v3/shops/{shopId}/orders
POST /getresponse/v3/shops/{shopId}/orders
Content-Type: application/json
{
"contactId": "abc123",
"totalPrice": 99.99,
"currency": "USD",
"status": "completed"
}
GET /getresponse/v3/webinars
GET /getresponse/v3/webinars/{webinarId}
GET /getresponse/v3/lps
GET /getresponse/v3/lps/{lpsId}
GET /getresponse/v3/statistics/lps/{lpsId}/performance
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 recordsTotalPages - Total number of pagesCurrentPage - Current page numberconst 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();
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()
2026-02-15T10:00:00Z)curl -g when URLs contain brackets to disable glob parsingjq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments| 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 |
MATON_API_KEY environment variable is set:echo $MATON_API_KEY
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
getresponse. For example:https://api.maton.ai/getresponse/v3/contactshttps://api.maton.ai/v3/contacts