Access 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共 3 个版本