Migrating from API v3.0 to v4.0
API v4.0 is a full REST redesign released alongside the Generator Labs rebrand. It introduces consistent REST conventions across all endpoints, full certificate monitoring support, new webhook events, and updated SDKs for all supported languages. This guide covers every breaking change and new feature so you can update your integration with confidence.
Your existing account SID and auth token credentials work the same way in v4.0.
The v4.0 API is available at https://api.generatorlabs.com/4.0/. The v3.0 API at https://api.rbltracker.com/3.0/ will remain accessible during the transition period, but all new development should target v4.0.
Base URL
Both the API domain and the version path have changed:
| v3.0 | v4.0 |
|---|---|
https://api.rbltracker.com/3.0/ | https://api.generatorlabs.com/4.0/ |
Update this in your HTTP client configuration or SDK initialization before making any other changes.
Breaking Changes
HTTP Methods
v3.0 used POST for all write operations, including updates and deletes. v4.0 uses standard REST conventions: PUT for updates and DELETE for deletes.
v3.0 (update a host):
POST https://api.rbltracker.com/3.0/host/update/HTabcdef...
v4.0 (update a host):
PUT https://api.generatorlabs.com/4.0/rbl/hosts/HTabcdef...
v3.0 (delete a host):
POST https://api.rbltracker.com/3.0/host/delete/HTabcdef...
v4.0 (delete a host):
DELETE https://api.generatorlabs.com/4.0/rbl/hosts/HTabcdef...
This applies to all resources: hosts, contacts, contact groups, RBL sources, and monitoring profiles. Make sure your HTTP client is configured to send PUT and DELETE requests. Some libraries only support GET and POST by default.
Endpoint Paths
All endpoints have been reorganized under resource-specific namespaces. The tables below map every v3.0 path to its v4.0 equivalent.
RBL Monitoring
| Operation | v3.0 | v4.0 |
|---|---|---|
| Start manual check | POST /check/start | POST /rbl/check/start |
| Poll check status | GET /check/status | GET /rbl/check/status/{id} |
| Get current listings | GET /listings | GET /rbl/listings |
| List hosts | GET /hosts | GET /rbl/hosts |
| Get host | GET /host/{id} | GET /rbl/hosts/{id} |
| Add host | POST /host/add | POST /rbl/hosts |
| Update host | POST /host/update/{id} | PUT /rbl/hosts/{id} |
| Pause host | POST /host/pause/{id} | POST /rbl/hosts/{id}/pause |
| Resume host | POST /host/resume/{id} | POST /rbl/hosts/{id}/resume |
| Delete host | POST /host/delete/{id} | DELETE /rbl/hosts/{id} |
RBL Sources
v3.0 referred to these as "RBLs". In v4.0 they are called "sources" and are nested under the /rbl/ namespace.
| Operation | v3.0 | v4.0 |
|---|---|---|
| List sources | GET /rbls | GET /rbl/sources |
| Get source | GET /rbl/{id} | GET /rbl/sources/{id} |
| Add source | POST /rbl/add | POST /rbl/sources |
| Update source | POST /rbl/update/{id} | PUT /rbl/sources/{id} |
| Pause source | POST /rbl/pause/{id} | POST /rbl/sources/{id}/pause |
| Resume source | POST /rbl/resume/{id} | POST /rbl/sources/{id}/resume |
| Delete source | POST /rbl/delete/{id} | DELETE /rbl/sources/{id} |
RBL Monitoring Profiles
| Operation | v3.0 | v4.0 |
|---|---|---|
| List profiles | GET /rblprofiles | GET /rbl/profiles |
| Get profile | GET /rblprofile/{id} | GET /rbl/profiles/{id} |
| Add profile | POST /rblprofile/add | POST /rbl/profiles |
| Update profile | POST /rblprofile/update/{id} | PUT /rbl/profiles/{id} |
| Delete profile | POST /rblprofile/delete/{id} | DELETE /rbl/profiles/{id} |
Contacts
| Operation | v3.0 | v4.0 |
|---|---|---|
| List contacts | GET /contacts | GET /contact/contacts |
| Get contact | GET /contact/{id} | GET /contact/contacts/{id} |
| Add contact | POST /contact/add | POST /contact/contacts |
| Update contact | POST /contact/update/{id} | PUT /contact/contacts/{id} |
| Pause contact | POST /contact/pause/{id} | POST /contact/contacts/{id}/pause |
| Resume contact | POST /contact/resume/{id} | POST /contact/contacts/{id}/resume |
| Resend confirmation | POST /contact/resend/{id} | POST /contact/contacts/{id}/resend |
| Confirm contact | POST /contact/confirm/{id} | POST /contact/contacts/{id}/confirm |
| Delete contact | POST /contact/delete/{id} | DELETE /contact/contacts/{id} |
Contact Groups
| Operation | v3.0 | v4.0 |
|---|---|---|
| List groups | GET /contactgroups | GET /contact/groups |
| Get group | GET /contactgroup/{id} | GET /contact/groups/{id} |
| Add group | POST /contactgroup/add | POST /contact/groups |
| Update group | POST /contactgroup/update/{id} | PUT /contact/groups/{id} |
| Delete group | POST /contactgroup/delete/{id} | DELETE /contact/groups/{id} |
Check Status: Query Parameter to Path Parameter
In v3.0, the check ID was passed as a query parameter. In v4.0 it is a path parameter.
v3.0:
GET /check/status?id=PPf93d71a...
v4.0:
GET /rbl/check/status/PPf93d71a...
Response Field: total_hosts Renamed to total
List responses previously included a resource-specific count field. v4.0 uses a consistent total field across all list endpoints.
v3.0:
{
"status_code": 200,
"status_message": "Hosts",
"total_hosts": 5,
"total_listed": 2,
"data": [...]
}
v4.0:
{
"status_code": 200,
"status_message": "Hosts",
"total": 5,
"total_listed": 2,
"data": [...]
}
Update any code that reads total_hosts to use total instead.
Integer Flags Changed to Booleans
Several fields that were previously integers (0 or 1) are now proper booleans (false or true). This affects the listed field on host and listing objects, as well as the details query parameter.
v3.0:
{ "listed": 1 }
v4.0:
{ "listed": true }
If your code compares these fields against 0 or 1, update those comparisons. In most languages, a strict equality check such as === 1 will fail against a boolean true.
Host Parameter: rbl_profile Renamed to profile
When creating or updating a host, the monitoring profile parameter has been renamed from rbl_profile to profile.
v3.0:
POST /host/add
rbl_profile=RP15d4e891d...
v4.0:
POST /rbl/hosts
profile=RP15d4e891d...
New in v4.0
Certificate Monitoring
v4.0 adds a full suite of certificate monitoring endpoints under the /cert/ namespace. Each resource supports the full set of GET, POST, PUT, DELETE, pause, and resume operations.
| Endpoint | Description |
|---|---|
/cert/monitors | Create and manage certificate monitors. |
/cert/profiles | Manage certificate monitoring profiles. |
/cert/errors | List active certificate errors. |
For the full schema and request details, see the API documentation.
New Webhook Events
Nine new webhook events are available in v4.0, covering certificate monitoring and monitoring agent health:
| Event | Description |
|---|---|
cert.expiration.trigger | A certificate expiration threshold was crossed. |
cert.expiration.resolve | An expiring certificate was renewed. |
cert.error.trigger | New certificate errors were detected. |
cert.error.resolve | Previously detected certificate errors were resolved. |
cert.changed | A certificate changed without a renewal. |
cert.flapping | A certificate fingerprint changed 3+ times within one hour. |
cert.flapping.resolve | A certificate fingerprint stabilized after a flapping episode. |
agent.timeout | A monitoring agent stopped checking in. |
agent.timeout.resolve | A timed-out monitoring agent resumed checking in. |
See Using Web Hooks for the full event reference and payload schemas.
Rate Limit Headers
v4.0 returns rate limit information on every API response. If your integration sends bursts of requests, read these headers proactively rather than waiting for a 429 response to signal that you have hit a limit:
RateLimit-Limit: 1000;w=3600, 100;w=1
RateLimit-Remaining: 95
RateLimit-Reset: 1
When you receive a 429 Too Many Requests response, use the Retry-After header to determine how long to wait before retrying. See What Are the API Rate Limits? for full details.
SDK Migration
If you are using an official SDK, update to the v4.0 package. All package names have changed to reflect the Generator Labs rebrand, and minimum supported language versions have been raised. The v4.0 SDK handles the base URL change, updated HTTP methods, and renamed parameters automatically.
| Language | v3.0 | v4.0 | Min Version |
|---|---|---|---|
| PHP | rbltracker/rbltracker-php | generator-labs/php-sdk | PHP 8.1+ (was 7.4+) |
| Node.js | rbltracker/rbltracker-node | generator-labs/node-sdk | Node 18+ |
| Python | rbltracker/rbltracker-python | generator-labs/python-sdk | Python 3.8+ (was 2.6+) |
| Go | N/A | generator-labs/go-sdk | Go 1.21+ (new) |
| Ruby | N/A | generator-labs/ruby-sdk | Ruby 3.0+ (new) |
Migration Checklist
- Update the base URL to
https://api.generatorlabs.com/4.0/ - Update all endpoint paths using the tables above
- Change
POSTtoPUTfor all update operations - Change
POSTtoDELETEfor all delete operations - Move the check status
idfrom a query parameter to a path parameter - Update response parsing:
total_hosts→total - Update
listedfield comparisons to expect booleans instead of integers - Rename the
rbl_profilehost parameter toprofile - Update the SDK package name and minimum language version (if using an official SDK)
- Subscribe to new webhook events as needed (
cert.*,agent.timeout,agent.timeout.resolve) - Add
Retry-Afterbackoff handling for429responses