Skip to main content

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.

info

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.0v4.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

Operationv3.0v4.0
Start manual checkPOST /check/startPOST /rbl/check/start
Poll check statusGET /check/statusGET /rbl/check/status/{id}
Get current listingsGET /listingsGET /rbl/listings
List hostsGET /hostsGET /rbl/hosts
Get hostGET /host/{id}GET /rbl/hosts/{id}
Add hostPOST /host/addPOST /rbl/hosts
Update hostPOST /host/update/{id}PUT /rbl/hosts/{id}
Pause hostPOST /host/pause/{id}POST /rbl/hosts/{id}/pause
Resume hostPOST /host/resume/{id}POST /rbl/hosts/{id}/resume
Delete hostPOST /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.

Operationv3.0v4.0
List sourcesGET /rblsGET /rbl/sources
Get sourceGET /rbl/{id}GET /rbl/sources/{id}
Add sourcePOST /rbl/addPOST /rbl/sources
Update sourcePOST /rbl/update/{id}PUT /rbl/sources/{id}
Pause sourcePOST /rbl/pause/{id}POST /rbl/sources/{id}/pause
Resume sourcePOST /rbl/resume/{id}POST /rbl/sources/{id}/resume
Delete sourcePOST /rbl/delete/{id}DELETE /rbl/sources/{id}

RBL Monitoring Profiles

Operationv3.0v4.0
List profilesGET /rblprofilesGET /rbl/profiles
Get profileGET /rblprofile/{id}GET /rbl/profiles/{id}
Add profilePOST /rblprofile/addPOST /rbl/profiles
Update profilePOST /rblprofile/update/{id}PUT /rbl/profiles/{id}
Delete profilePOST /rblprofile/delete/{id}DELETE /rbl/profiles/{id}

Contacts

Operationv3.0v4.0
List contactsGET /contactsGET /contact/contacts
Get contactGET /contact/{id}GET /contact/contacts/{id}
Add contactPOST /contact/addPOST /contact/contacts
Update contactPOST /contact/update/{id}PUT /contact/contacts/{id}
Pause contactPOST /contact/pause/{id}POST /contact/contacts/{id}/pause
Resume contactPOST /contact/resume/{id}POST /contact/contacts/{id}/resume
Resend confirmationPOST /contact/resend/{id}POST /contact/contacts/{id}/resend
Confirm contactPOST /contact/confirm/{id}POST /contact/contacts/{id}/confirm
Delete contactPOST /contact/delete/{id}DELETE /contact/contacts/{id}

Contact Groups

Operationv3.0v4.0
List groupsGET /contactgroupsGET /contact/groups
Get groupGET /contactgroup/{id}GET /contact/groups/{id}
Add groupPOST /contactgroup/addPOST /contact/groups
Update groupPOST /contactgroup/update/{id}PUT /contact/groups/{id}
Delete groupPOST /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.

EndpointDescription
/cert/monitorsCreate and manage certificate monitors.
/cert/profilesManage certificate monitoring profiles.
/cert/errorsList 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:

EventDescription
cert.expiration.triggerA certificate expiration threshold was crossed.
cert.expiration.resolveAn expiring certificate was renewed.
cert.error.triggerNew certificate errors were detected.
cert.error.resolvePreviously detected certificate errors were resolved.
cert.changedA certificate changed without a renewal.
cert.flappingA certificate fingerprint changed 3+ times within one hour.
cert.flapping.resolveA certificate fingerprint stabilized after a flapping episode.
agent.timeoutA monitoring agent stopped checking in.
agent.timeout.resolveA 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.

Languagev3.0v4.0Min Version
PHPrbltracker/rbltracker-phpgenerator-labs/php-sdkPHP 8.1+ (was 7.4+)
Node.jsrbltracker/rbltracker-nodegenerator-labs/node-sdkNode 18+
Pythonrbltracker/rbltracker-pythongenerator-labs/python-sdkPython 3.8+ (was 2.6+)
GoN/Agenerator-labs/go-sdkGo 1.21+ (new)
RubyN/Agenerator-labs/ruby-sdkRuby 3.0+ (new)

Migration Checklist

  1. Update the base URL to https://api.generatorlabs.com/4.0/
  2. Update all endpoint paths using the tables above
  3. Change POST to PUT for all update operations
  4. Change POST to DELETE for all delete operations
  5. Move the check status id from a query parameter to a path parameter
  6. Update response parsing: total_hoststotal
  7. Update listed field comparisons to expect booleans instead of integers
  8. Rename the rbl_profile host parameter to profile
  9. Update the SDK package name and minimum language version (if using an official SDK)
  10. Subscribe to new webhook events as needed (cert.*, agent.timeout, agent.timeout.resolve)
  11. Add Retry-After backoff handling for 429 responses