Rocket Validator API
The Rocket Validator API lets you manage your site validation reports and related data like schedules, mutings, devices and guest accounts sending conventional HTTP requests to a standard JSON API.
Current version
The Rocket Validator API is currently in version v1
.
All endpoints have the prefix:
https://rocketvalidator.com/api/v1/{endpoint}
For brevity and legibility, the examples might omit the prefix, so instead of this:
GET https://rocketvalidator.com/api/v1/reports
we'll use this:
GET /api/v1/reports
API Quick Start
To start working with the Rocket Validator API, all you need is to sign up for a new account and then generate an API token. Check out the Authorization section to learn how to use this API token to identify your requests.
Example Request
To retrieve the data you need from Rocket Validator, you just need to perform a standard GET
, POST
, PATCH
or DELETE
request to the appropiate endpoint. Here are some examples in different programming languages, and below is a cheatsheet on the most common endpoints.
Example code
curl --request GET \
--url https://rocketvalidator.com/api/v1/reports \
--header 'authorization: Bearer $API_TOKEN'
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://rocketvalidator.com/api/v1/reports")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(url)
request["authorization"] = 'Bearer $API_TOKEN'
response = http.request(request)
puts response.read_body
# Install the gem from https://rubygems.org/gems/rocketvalidator
require 'rocketvalidator'
RocketValidator::V1::Resource.with_api_token(ENV["ROCKET_API_TOKEN"]) do
page = 0
reports = RocketValidator::V1::Report.page(1).per(10).to_a
while reports do
page = page + 1
puts "\nPage #{page}: #{reports.length} reports found."
reports.each do |report|
puts(report.starting_url)
end
reports = reports.pages.next
end
end
import http.client
conn = http.client.HTTPSConnection("rocketvalidator.com")
payload = ""
headers = { 'authorization': "Bearer $API_TOKEN" }
conn.request("GET", "/api/v1/reports", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://rocketvalidator.com/api/v1/reports",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => "",
CURLOPT_HTTPHEADER => array(
"authorization: Bearer $API_TOKEN"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
?>
var http = require("https");
var options = {
"method": "GET",
"hostname": "rocketvalidator.com",
"port": null,
"path": "/api/v1/reports",
"headers": {
"content-length": "0",
"authorization": "Bearer $API_TOKEN"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
HttpResponse<String> response = Unirest.get("https://rocketvalidator.com/api/v1/reports")
.header("authorization", "Bearer $API_TOKEN")
.asString();
import Foundation
let headers = ["authorization": "Bearer $API_TOKEN"]
let postData = NSData(data: "".data(using: String.Encoding.utf8)!)
let request = NSMutableURLRequest(url: NSURL(string: "https://rocketvalidator.com/api/v1/reports")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
GET is the default method
In the cURL example above we're explicitly specifying the GET
kind of request, but as it's the default, in the rest of the documentation you'll often see that we omit it.
Also, there's no need for the --url
parameter and you can just pass the URL endpoint like this:
curl https://rocketvalidator.com/api/v1/reports \
--header 'authorization: Bearer $API_TOKEN'
Reports
Create a Report
Send a POST
request to /api/v1/reports
with a JSON payload including the parameters:
starting_url
. The initial URL where the Spider will start on. Required.max_pages
. The Spider will recursively follow internal links found until this limit is reached. Optional, defaults to 10.
Example: POST /api/v1/reports
{
"data": {
"attributes": {
"starting_url": "https://dummy.rocketvalidator.com",
"max_pages": 100
}
}
}
List your Reports
GET /api/v1/reports
Get a Report
GET /api/v1/reports/$REPORT_ID
Delete a Report
DELETE /api/v1/reports/$REPORT_ID
Web Pages
List the Web Pages on a Report
GET /api/v1/reports/$REPORT_ID/web_pages
Get a Web Page on a Report
GET /api/v1/reports/$REPORT_ID/web_pages/$WEB_PAGE_ID
Accessibility Issues Pro
List A11Y issues on a Web Page
GET /api/v1/reports/$REPORT_ID/web_pages/$WEBPAGE_ID/a11y_issues
Get an A11Y issue on a Web Page
GET /api/v1/reports/$REPORT_ID/web_pages/$WEBPAGE_ID/a11y_issues/$ISSUE_ID
HTML Issues
List HTML issues on a Web Page
GET /api/v1/reports/$REPORT_ID/web_pages/$WEBPAGE_ID/html_issues
.
Get an HTML issue on a Web Page
GET /api/v1/reports/$REPORT_ID/web_pages/$WEBPAGE_ID/html_issues/$ISSUE_ID
.
Common Accessibility Issues Pro
List Common A11Y issues on a Report
GET /api/v1/reports/$REPORT_ID/common_a11y_issues
Get a Common A11Y issue on a Report
GET /api/v1/reports/$REPORT_ID/common_a11y_issues/$COMMON_A11Y_ISSUE_ID
Common HTML Issues
List Common HTML issues on a Report
GET /api/v1/reports/$REPORT_ID/common_html_issues
Get a Common HTML issue on a Report
GET /api/v1/reports/$REPORT_ID/common_html_issues/$COMMON_HTML_ISSUE_ID
Mutings Pro
List your Mutings
GET /api/v1/mutings
Get a Muting
GET /api/v1/mutings/$MUTING_ID
Schedules Pro
List your Schedules
GET /api/v1/schedules
Get a Schedule
GET /api/v1/schedules/$SCHEDULE_ID
Devices Pro
List all Devices
GET /api/v1/devices
Get a Device
GET /api/v1/devices/$DEVICE_ID
Guest Accounts Pro
List all your Guest Accounts
GET /api/v1/guest_accounts
Get a Guest Account
GET /api/v1/guest_accounts/$GUEST_ACCOUNT_ID
API Costs
The Rocket Validator API is available to all users at no additional cost. Usage is measured in credits, at a rate of one credit per 1,000 API requests. This allows users to integrate the API into their workflow while ensuring that our resource usage remains within reasonable limits.
For instance, to obtain the initial data for a 1,000-page web page validation report, it requires 11 credits to make a single call to the reporting endpoint and 10 calls to retrieve the data for the 1,000 web pages (with a pagination of 100 items).
In terms of reducing API costs, it is advisable to consider the following:
- Make fewer API calls. For instance, if the integration is in the form of a script embedded in a website, rather than integrating it in the footer of the site, consider integrating it only within a page dedicated to the accessibility of the site.
- Consider caching the results so that the data is retained for a period of time, rather than having to consult it constantly.
- Use a high page size when paginating results, so you get more data in each API request.
API Rate Limit
Currently the Rocket Validator is not rate limited, but it will be soon, to ensure reasonable limits in our resource usage.