GetResponse API v3

The complete GetResponse API v3 — a JSON REST API of 220 operations across 141 paths and 42 product areas, described by a provider-published OpenAPI 3.0.0. Authentication is an X-Auth-Token header carrying an API key prefixed with "api-key ", or OAuth 2.0 with a single "all" scope. Every response carries X-RateLimit-* headers; errors return a custom ErrorResponse envelope discriminated by a numeric code rather than by HTTP status.

OpenAPI Specification

getresponse-open-api-original.json Raw ↑
{
    "openapi": "3.0.0",
    "info": {
        "title": "GetResponse APIv3",
        "description": "\n\n# Limits and throttling\n\nGetResponse API calls are subject to throttling to ensure a high level of service for all users.\n\n## Time frame\n\nTime frame is a period of time for which we calculate the API call limits. The limits reset in every time frame.\n\nThe time frame duration is **10 minutes**.\n\n## Basic rate limits\n\nEach user is allowed to make **30,000 API calls per time frame** (10 minutes) and **80 API calls per second**.\n\n## Parallel requests limit\n\nIt is possible to send up to **10 simultaneous requests**.\n\n## Headers\n\nEvery API response includes a few additional headers:\n\n*   `X-RateLimit-Limit` \u2013 the total number of requests available per time frame\n*   `X-RateLimit-Remaining` \u2013 the number of requests left in the current time frame\n*   `X-RateLimit-Reset` \u2013 seconds left in the current time frame\n\n## Errors\n\nThe **429 Too Many Requests** HTTP response code indicates that the limit has been reached. The error response includes `currentLimit` and `timeToReset` fields in the context section, with the total number of requests available per time frame and seconds left in the current time frame respectively.\n\n## Reaching the limit\n\nWhen you reach the limit, you need to wait for the time specified in `timeToReset` field or `X-RateLimit-Reset` header before making another request.\n\n# Authentication\n\nAPI can be accessed by authenticated users only. This means that every request must be signed with your credentials. We offer two methods of authentication: API Key and OAuth 2.0. API key is our primary method and should be used in most cases. GetResponse MAX clients have to send an `X-Domain` header in addition to the API key. Supported OAuth 2.0 flows are: Authorization Code, Client Credentials, Implicit, and Refresh Token.\n\n## API key\n\nFollow these steps to send an authentication request:\n\n*   Find your unique and secret API key in the panel: [https:\/\/app.getresponse.com\/api](https:\/\/app.getresponse.com\/api)\n*   Add a custom `X-Auth-Token` header to all your requests. For example, if your API key is `jfgs8jh4ksg93ban9Dfgh8`, the header will look like this:\n\n```\nX-Auth-Token: api-key jfgs8jh4ksg93ban9Dfgh8\n```\n\n**For security reasons, unused API keys expire after 90 days. When that happens, you\u2019ll need to generate a new key to use our API.**\n\n### Example authenticated request\n\n```\n$ curl -H \"X-Auth-Token: api-key jfgs8jh4ksg93ban9Dfgh8\" https:\/\/api.getresponse.com\/v3\/accounts\n```\n\n## OAuth 2.0\n\nTo use OAuth 2.0 authentication, you need to get an \"Access Token\". For more information on how to obtain a token, head to our dedicated page: [OAuth 2.0](\/#section\/Authentication\/Using-OAuth-2.0)\n\nTo authenticate a request using an Access Token, set the value of `Authorization` header to \"Bearer\" followed by the Access Token.\n\n### Example\n\nIf the Access Token is `jfg93baDfgh8n9Ds8jh4ksg93ban9Dfgh8`\n\n```\nAuthorization: Bearer jfg93baDfgh8n9Ds8jh4ksg93ban9Dfgh8\n```\n\n## GetResponse MAX\n\nGetResponse MAX customers need to take an extra step to authenticate the request. All requests have to be send with an `X-Domain` header that contains the client's domain. For example:\n\n```\nX-Domain: example.com\n```\n\nPlease note that the header must contain only the domain name, without the protocol identifier (`http:\/\/` or `https:\/\/`).\n\n### X-Parent-Login header\n\nA user can be in one or more accounts (parent accounts). The `X-Parent-Login` header allows you to limit API requests to a specific parent account.\n\nFor example, a user is assigned to two parent accounts with logins: <code>abc&#64;getresponse.com<\/code> and <code>xyz&#64;getresponse.com<\/code>.\n\nIf the `X-Parent-Login: abc@getresponse.com` header is set in API requests, they'll be made only for the parent account with the login <code>abc&#64;getresponse.com<\/code>.\n\nIf a request is made with the header `X-Parent-Login: xyz@getresponse.com`, it will return information only for the parent account with the login <code>xyz&#64;getresponse.com<\/code>.\n\n## Using OAuth 2.0\n\n### Registering your own application\n\nIf you want to use an OAuth flow to authorize your application, first [register your application](https:\/\/app.getresponse.com\/authorizations)\n\nYou need to provide a name, short description, and redirect URL.\n\n### Choosing grant flow\n\nOnce your application is registered, you can click on it to see your `client_id` and `client_secret`. They're basically a login and password for your application's access, so be sure not to share them with anyone.\n\nNext, decide which authentication flow (grant type) you want to use. Here are your options:\n\n- choose the **Authorization Code** flow if your application is server-based (you have a server with its own domain and server-side code),\n- choose the **Implicit** flow if your application is based mostly on JavaScript or client-side code,\n- choose the **Client Credential** flow if you want to test your application or access your GetResponse account,\n- implement the **Refresh Token** flow to handle token expiration if you use the Authorization Code flow.\n\n### Authorization Code flow\n\nFirst, your application must redirect a resource owner to the following URL:\n\n```\nhttps:\/\/app.getresponse.com\/oauth2_authorize.html?response_type=code&client_id=_your_client_id_&state=xyz\n```\n\nThe `state` parameter is there for security reasons and should be a random string. When the resource owner grants your application access to the resource, we will redirect the browser to the `redirect URL` you specified in the application settings and attach the same state as the parameter. Comparing the state parameter value ensures that the redirect was initiated by our system. The code parameter is an authorization code that you can exchange for an access token within 10 minutes, after which time it expires.\n\n#### Example redirect with authorization code\n\n```\nhttps:\/\/myredirecturi.com\/cb?code=ed17c498bfe343175cd7684c5b09979f2875b25c&state=xyz\n```\n\n#### Exchanging authorization code for the access token\n\nHere's an example request to exchange authorization code for the access token:\n\n```\n$ curl -u client_id:client_secret https:\/\/api.getresponse.com\/v3\/token \\\n       -d 'grant_type=authorization_code&code=ed17c498bfe343175cd7684c5b09979f2875b25c'\n```\n\n*Remember to replace `client_id` and `client_secret` with your OAuth application credentials.*\n\n##### Example response\n\n```json\n{\n    \"access_token\": \"03807cb390319329bdf6c777d4dfae9c0d3b3c35\",\n    \"expires_in\": 3600,\n    \"token_type\": \"Bearer\",\n    \"scope\": null,\n    \"refresh_token\": \"170d9f64e781aaa6b3ba036083faba71b2fc4e6c\"\n}\n```\n\n### Client Credentials flow\n\nThis flow is suitable for development, when you need to quickly access API to create some functionality. You can get the access token with a single request:\n\n#### Request\n\n```\n$ curl -u client_id:client_secret https:\/\/api.getresponse.com\/v3\/token \\\n       -d 'grant_type=client_credentials'\n```\n\n*Remember to replace `client_id` and `client_secret` with your OAuth application credentials.*\n\n#### Response\n\n```json\n{\n    \"access_token\": \"e2222af2851a912470ec33c9b4de1ea3a304b7d7\",\n    \"expires_in\": 86400,\n    \"token_type\": \"Bearer\",\n    \"scope\": null\n}\n```\n\nYou can also go to https:\/\/app.getresponse.com\/manage_api.html, click the action button for your application, and select \"generate credentials\". This will open a popup with a generated access token. You can then use the access token to authenticate your requests, for example:\n\n```\n$ curl -H \"Authorization: Bearer e2222af2851a912470ec33c9b4de1ea3a304b7d7\" https:\/\/api.getresponse.com\/v3\/from-fields\n```\n\n### Implicit flow\n\nFirst, your application must redirect a resource owner to the following URL:\n\n```\nhttps:\/\/app.getresponse.com\/oauth2_authorize.html?response_type=token&client_id=_your_client_id_&redirect_uri=https:\/\/myredirecturi.com\/cb&state=xyz\n```\n\nWhen the resource owner grants your application access to the resource, we will redirect the owner to the URL that was specified in the request.\n\nThere is no code exchange process because, unlike the Authorization Code flow, the redirect already has the access token in the parameters.\n\n```\nhttps:\/\/myredirecturi.com\/cb#access_token=2YotnFZFEjr1zCsicMWpAA&state=xyz&token_type=bearer&expires_in=3600\n```\n\n### Refresh Token flow\n\nYou need to refresh your access token if you receive this error message as a response to your request:\n\n```json\n{\n    \"httpStatus\": 401,\n    \"code\": 1014,\n    \"codeDescription\": \"Problem during authentication process, check headers!\",\n    \"message\": \"The access token provided is expired\",\n    \"moreInfo\": \"https:\/\/apidocs.getresponse.com\/v3\/errors\/1014\",\n    \"context\": {\n        \"sentToken\": \"b8b1e961a7f9fd4cc710d5d955e09c15a364ab71\"\n    }\n}\n```\n\nIf you are using the Authorization Code flow, you need to use the refresh token to issue a new access token\/refresh token pair by making the following request:\n\n```\n$ curl -u client_id:client_secret https:\/\/api.getresponse.com\/v3\/token \\\n       -d 'grant_type=refresh_token&refresh_token=170d9f64e781aaa6b3ba036083faba71b2fc4e6c'\n```\n\n*Remember to replace `client_id` and `client_secret` with your OAuth application credentials.*\n\nThe response you'll get will look like this:\n\n```json\n{\n    \"access_token\": \"890fdsa2f5d7b189fc4e6c4b1d170d9f591238ss\",\n    \"expires_in\": 86400,\n    \"token_type\": \"Bearer\",\n    \"scope\": null,\n    \"refresh_token\": \"170d9f64e781aaa6b3ba036083faba71b2fc4e6c\"\n}\n```\n\n### GetResponse MAX\n\nThere are some differences when authenticating GetResponse MAX users:\n\n- the application must redirect to a page in the client's custom domain, for example: `https:\/\/custom-domain.getresponse360.com\/oauth2_authorize.html`\n- token requests have to be send to one of the GetResponse MAX APIv3 endpoints (depending on the client's environment),\n- token requests have to include an `X-Domain` header,\n- the application has to be registered in a GetResponse MAX account within the same environment.\n\n\n# CORS (AJAX requests)\n\n[Cross-Origin Resource Sharing (CORS)](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/CORS) mechanism is not supported by APIv3. It means that AJAX requests to the API will be blocked by the browser's [same-origin policy](https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Security\/Same-origin_policy). Please use a server-side application to access the API.\n\n\n# Timezone settings\n\nThe default timezone in response data is **UTC**.\n\nTo set a different timezone, add `X-Time-Zone` header with value of [time zone name](https:\/\/en.wikipedia.org\/wiki\/List_of_tz_database_time_zones) (\"TZ database name\" column).\n\n\n# Pagination\n\nMost of the resource collections returned by API are paginated. It means that the response is divided into multiple pages.\n\nControl the number of results on each page by using `perPage` query parameter and change pages by using `page` query parameter.\n\nBy default we return only the first **100** resources per page. You can change that by adding `perPage` parameter with a value of up to **1000**.\n\nPage numbers start with **1**.\n\nPaginated responses have 3 extra headers:\n* `TotalCount` \u2013 a total number of resources on all pages\n* `TotalPages` \u2013 a total number of pages\n* `CurrentPage` \u2013 current page number\n\nUse the maximum `perPage` value (**1000**) if you plan to iterate over all the pages of the response.\n\nWhen trying to get a page that exceeds the total number of pages, API will return an empty array (`[]`). Make sure to stop iterating when it happens.\n\n\n# CURLE_SSL_CACERT error\n\nSolution to CURLE_SSL_CACERT error (code 60).\n\nThis error is related to expired CA (Certificate Authority) certificates installed on your server (the server that you send the requests from). You can read more about certificate verification on the [cURL project website](https:\/\/curl.haxx.se\/docs\/sslcerts.html).\n\nIf you encounter this error while sending requests to the GetResponse APIv3, ask your server administrator to update the CA certificates using the [latest bundle provided by the cURL project](https:\/\/curl.haxx.se\/docs\/caextract.html).\n\n**Please make sure that cURL is configured to use the updated bundle.**\n",
        "contact": {
            "name": "API Support - DevZone",
            "url": "https:\/\/app.getresponse.com\/feedback.html?devzone=yes",
            "email": "getresponse-devzone@cs.getresponse.com"
        },
        "version": "3.2026-07-28T07:58:55+00:00",
        "x-logo": {
            "url": "https:\/\/us-ws.gr-cdn.com\/images\/global\/getresponse.png"
        }
    },
    "servers": [
        {
            "url": "https:\/\/api.getresponse.com\/v3",
            "description": "GetResponse"
        },
        {
            "url": "https:\/\/api3.getresponse360.com\/v3",
            "description": "GetResponse MAX US"
        },
        {
            "url": "https:\/\/api3.getresponse360.pl\/v3",
            "description": "GetResponse MAX PL"
        }
    ],
    "paths": {
        "\/webinars\/{webinarId}": {
            "get": {
                "tags": [
                    "Webinars"
                ],
                "summary": "Get a webinar by ID",
                "operationId": "getWebinarById",
                "parameters": [
                    {
                        "$ref": "#\/components\/parameters\/Fields"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#\/components\/responses\/WebinarDetails"
                    },
                    "404": {
                        "description": "Resource not found",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/ErrorResponse"
                                },
                                "examples": {
                                    "example": {
                                        "value": {
                                            "httpStatus": 404,
                                            "code": 1013,
                                            "codeDescription": "The requested resource was not found",
                                            "message": "Resource not found",
                                            "moreInfo": "https:\/\/apidocs.getresponse.com\/en\/v3\/errors\/1013",
                                            "context": {
                                                "contactId": "pVyRW"
                                            },
                                            "uuid": "87b90a96-5ee5-4ca4-8180-ac00adcf62c7"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Request validation error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/ErrorResponse"
                                },
                                "examples": {
                                    "example": {
                                        "value": {
                                            "httpStatus": 400,
                                            "code": 1000,
                                            "codeDescription": "General error of validation process, more details should be in context section",
                                            "message": "Validation error, see context section for more information",
                                            "moreInfo": "https:\/\/apidocs.getresponse.com\/en\/v3\/errors\/1000",
                                            "context": {
                                                "validationType": "searchFilter[query]",
                                                "fieldName": "name",
                                                "originalName": "lorem-ipsum",
                                                "errorDescription": "Not allowed search field"
                                            },
                                            "uuid": "77dabfd1-1fa7-4f9f-8d3f-487b4403e3aa"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Authentication error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/ErrorResponse"
                                },
                                "examples": {
                                    "example": {
                                        "value": {
                                            "httpStatus": 401,
                                            "code": 1014,
                                            "codeDescription": "Problem during authentication process, check headers!",
                                            "message": "Unable to authenticate request. Check credentials or authentication method details",
                                            "moreInfo": "https:\/\/apidocs.getresponse.com\/en\/v3\/errors\/1014",
                                            "context": {
                                                "authenticationType": "auth_token"
                                            },
                                            "uuid": "62417847-4f12-4c25-9b3a-0b619a187efe"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "The throttling limit has been reached",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/ErrorResponse"
                                },
                                "examples": {
                                    "example": {
                                        "value": {
                                            "httpStatus": 429,
                                            "code": 1015,
                                            "codeDescription": "Too many request to API, quota reached, please wait till next quota window",
                                            "message": "You have reached your requests limit for this time window, please wait...",
                                            "moreInfo": "https:\/\/apidocs.getresponse.com\/en\/v3\/errors\/1015",
                                            "context": {
                                                "currentLimit": 30000,
                                                "timeToReset": "100 seconds"
                                            },
                                            "uuid": "510c6726-7f65-46b7-a798-ca403133924f"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "api-key": []
                    },
                    {
                        "oauth2": [
                            "all"
                        ]
                    }
                ]
            },
            "parameters": [
                {
                    "$ref": "#\/components\/parameters\/webinarId"
                }
            ]
        },
        "\/contacts\/{contactId}\/activities": {
            "get": {
                "tags": [
                    "Contacts"
                ],
                "summary": "Get a list of contact activities",
                "description": "By default, only activities from the last 14 days are returned. To get earlier data, use `query[createdOn]` parameter. You can filter the resource using criteria specified as `query[*]`. You can provide multiple criteria, to use AND logic. You can sort the resource using parameters specified as `sort[*]`. You can specify multiple fields to sort by.",
                "operationId": "getActivities",
                "parameters": [
                    {
                        "name": "query[createdOn][from]",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "$ref": "#\/components\/schemas\/DateOrDateTime"
                        }
                    },
                    {
                        "name": "query[createdOn][to]",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "$ref": "#\/components\/schemas\/DateOrDateTime"
                        }
                    },
                    {
                        "$ref": "#\/components\/parameters\/Fields"
                    },
                    {
                        "$ref": "#\/components\/parameters\/PerPage"
                    },
                    {
                        "$ref": "#\/components\/parameters\/Page"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#\/components\/responses\/ContactActivityList"
                    },
                    "400": {
                        "description": "Request validation error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/ErrorResponse"
                                },
                                "examples": {
                                    "example": {
                                        "value": {
                                            "httpStatus": 400,
                                            "code": 1000,
                                            "codeDescription": "General error of validation process, more details should be in context section",
                                            "message": "Validation error, see context section for more information",
                                            "moreInfo": "https:\/\/apidocs.getresponse.com\/en\/v3\/errors\/1000",
                                            "context": {
                                                "validationType": "searchFilter[query]",
                                                "fieldName": "name",
                                                "originalName": "lorem-ipsum",
                                                "errorDescription": "Not allowed search field"
                                            },
                                            "uuid": "77dabfd1-1fa7-4f9f-8d3f-487b4403e3aa"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Authentication error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/ErrorResponse"
                                },
                                "examples": {
                                    "example": {
                                        "value": {
                                            "httpStatus": 401,
                                            "code": 1014,
                                            "codeDescription": "Problem during authentication process, check headers!",
                                            "message": "Unable to authenticate request. Check credentials or authentication method details",
                                            "moreInfo": "https:\/\/apidocs.getresponse.com\/en\/v3\/errors\/1014",
                                            "context": {
                                                "authenticationType": "auth_token"
                                            },
                                            "uuid": "62417847-4f12-4c25-9b3a-0b619a187efe"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "The throttling limit has been reached",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/ErrorResponse"
                                },
                                "examples": {
                                    "example": {
                                        "value": {
                                            "httpStatus": 429,
                                            "code": 1015,
                                            "codeDescription": "Too many request to API, quota reached, please wait till next quota window",
                                            "message": "You have reached your requests limit for this time window, please wait...",
                                            "moreInfo": "https:\/\/apidocs.getresponse.com\/en\/v3\/errors\/1015",
                                            "context": {
                                                "currentLimit": 30000,
                                                "timeToReset": "100 seconds"
                                            },
                                            "uuid": "510c6726-7f65-46b7-a798-ca403133924f"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "api-key": []
                    },
                    {
                        "oauth2": [
                            "all"
                        ]
                    }
                ]
            },
            "parameters": [
                {
                    "$ref": "#\/components\/parameters\/contactId"
                }
            ]
        },
        "\/campaigns\/{campaignId}\/contacts": {
            "get": {
                "tags": [
                    "Contacts"
                ],
                "summary": "Get contacts from a single campaign",
                "description": "Provides all contacts from a single campaign. You can filter the resource using criteria specified as `query[*]`. You can provide multiple criteria, to use AND logic. You can sort the resource using parameters specified as `sort[*]`. You can specify multiple fields to sort by.",
                "operationId": "getContactsFromCampaign",
                "parameters": [
                    {
                        "name": "query[email]",
                        "in": "query",
                        "description": "Search contacts by email",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "query[name]",
                        "in": "query",
                        "description": "Search contacts by name",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "query[createdOn][from]",
                        "in": "query",
                        "description": "Return only contacts created on or after the given date. Use ISO 8601 format",
                        "required": false,
                        "schema": {
                            "$ref": "#\/components\/schemas\/DateOrDateTime"
                        }
                    },
                    {
                        "name": "query[createdOn][to]",
                        "in": "query",
                        "description": "Return only contacts created on or before the given date. Use ISO 8601 format",
                        "required": false,
                        "schema": {
                            "$ref": "#\/components\/schemas\/DateOrDateTime"
                        }
                    },
                    {
                        "name": "sort[email]",
                        "in": "query",
                        "description": "Sort contacts by email",
                        "required": false,
                        "schema": {
                            "$ref": "#\/components\/schemas\/SortOrderEnum"
                        }
                    },
                    {
                        "name": "sort[name]",
                        "in": "query",
                        "description": "Sort contacts by name",
                        "required": false,
                        "schema": {
                            "$ref": "#\/components\/schemas\/SortOrderEnum"
                        }
                    },
                    {
                        "name": "sort[createdOn]",
                        "in": "query",
                        "description": "Sort contacts by creation date",
                        "required": false,
                        "schema": {
                            "$ref": "#\/components\/schemas\/SortOrderEnum"
                        }
                    },
                    {
                        "$ref": "#\/components\/parameters\/Fields"
                    },
                    {
                        "$ref": "#\/components\/parameters\/PerPage"
                    },
                    {
                        "$ref": "#\/components\/parameters\/Page"
                    }
                ],
                "responses": {
                    "200": {
                        "$ref": "#\/components\/responses\/ContactList"
                    },
                    "400": {
                        "description": "Request validation error",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "$ref": "#\/components\/schemas\/ErrorResponse"
                                },
                                "examples": {
                                    "example": {
                                        "value": {
                                            "httpStatus": 400,
                                            "code": 1000,
                                            "codeDescription": "General error of validation process, more details should be in context section",
                                            "message": "Validation error, see context section for more information",
                                            "moreInfo": "https:\/\/apidocs.getresponse.com\/en\/v3\/errors\/1000",
                                            "context": {
                                                "validationType": "searchFilter[query]",
                                                "fieldName": "name",
                                                "originalName": "lorem-ipsum",
                                                "errorDescription": "Not allowed search field"


# --- truncated at 32 KB (2414 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/getresponse/refs/heads/main/openapi/_original/getresponse-open-api-original.json