Docs
Quick UI guide, plus the v1 API and signed webhooks for automations.
Table of contents
Jump to the section you need.
Getting Started (App UI)
Use this checklist to go from signup to first actionable indexing results. Core workflow: create project, import URLs, run checks, then automate where available.
Tip: these links open app pages directly after sign-in.
Start Here: 5-Step Setup
1) Create your first project
Open Projects → Create project and add a project name. Then add each page URL you want to check. A site URL by itself is not treated as a tracked page.
2) Add URLs to monitor
In your project, use Import URLs to upload CSV/TXT/JSON, paste URL lists, or paste sitemap URLs. Imported URLs become your check targets.
3) Run your first check
From the project overview, click Run check to evaluate index status for tracked URLs. Review run output in Checks.
4) Review status changes and trends
Use Checks for URL-level outcomes and Analytics for trend views and summaries.
5) Enable automation and integrations (optional)
Configure provider/API settings in Settings → API & Integrations. If your plan includes schedules, use Schedules to run checks automatically.
Projects & URLs
Create projects, organize with tags, and manage the URL list you want monitored.
Plan-dependent features
- Scheduled checks may require a paid plan.
- Indexability analysis and schedule-based automation options (such as smart filtering) may require a paid plan.
- Notification channels/events can vary by platform and plan in Settings → Notifications.
API (v1)
Generate an API key in Settings → API & Integrations. Authenticate using Authorization: Bearer or x-api-key.
curl -H "Authorization: Bearer ric_..." \ https://rapidindexchecker.com//api/v1/projects
OpenAPI: /api/v1/openapi.json
Interactive API reference
Browse endpoints, schemas, and request/response examples.
Endpoints
GET /api/v1/projectsPOST /api/v1/projectsGET /api/v1/projects/:idPATCH /api/v1/projects/:idDELETE /api/v1/projects/:idGET /api/v1/projects/:id/sitemapPOST /api/v1/projects/:id/sitemap-syncGET /api/v1/projects/:id/schedulesPOST /api/v1/projects/:id/schedulesGET /api/v1/projects/:id/urlsPOST /api/v1/projects/:id/urlsDELETE /api/v1/projects/:id/urls
GET /api/v1/checksPOST /api/v1/checksGET /api/v1/checks/:id
GET /api/v1/schedules/:idPATCH /api/v1/schedules/:idDELETE /api/v1/schedules/:id
GET /api/v1/indexing/providers/rapid_url_indexerPOST /api/v1/indexing/providers/rapid_url_indexerPATCH /api/v1/indexing/providers/rapid_url_indexerDELETE /api/v1/indexing/providers/rapid_url_indexerGET /api/v1/indexing/submissionsPOST /api/v1/indexing/submissions
GET /api/v1/webhooksPOST /api/v1/webhooksGET /api/v1/webhooks/:idPATCH /api/v1/webhooks/:idDELETE /api/v1/webhooks/:idPOST /api/v1/webhooks/:id/rotate-secretGET /api/v1/webhooks/:id/deliveries
Pagination uses limit (default 50, max 100) and an opaque cursor. Many responses include x-request-id and rate limit headers (plan dependent).
Errors
Errors include a requestId and a machine-readable code. Validation errors may include details.
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded",
"requestId": "..."
}
}Webhooks
Create a webhook endpoint in Settings → API & Integrations → Webhooks. Deliveries are HTTP POST requests over https:// with an X-Webhook-Event header and an HMAC signature.
When creating/updating webhooks via API, pass events as a JSON array (for example ["check.completed", "url.indexed"]) or use * to receive all events.
Events
check.completedcheck.failedurl.indexedindexing.submittedschedule.completedindexing.completedindexing.failed*(subscribe to all events)
Headers
X-Webhook-Signature(hex HMAC-SHA256)X-Webhook-Timestamp(ISO 8601)X-Webhook-Event(event type)
Payload
{
"event": "check.completed",
"timestamp": "2026-01-01T00:00:00.000Z",
"projectId": "018f26ef-2e8e-7e2f-8c4c-94ec89d36a86",
"userId": "…",
"data": {
"checkId": "018f26f1-0d17-72f1-8d0d-0339b9d5b275",
"totalUrls": 120,
"indexed": 74,
"notIndexed": 46,
"triggeredBy": "api"
}
}Signature verification
Compute HMAC-SHA256 over timestamp + "." + rawBody using your webhook secret. Reject timestamps older than 5 minutes.
import crypto from "crypto";
export function verifyWebhook({ rawBody, signature, timestamp, secret }) {
const signed = `${timestamp}.${rawBody}`;
const expected = crypto.createHmac("sha256", secret).update(signed).digest("hex");
return signature === expected;
}Failed deliveries retry up to 5 times with exponential backoff (immediate, then +1m, +2m, +4m, +8m).
Ready to pull data into your tooling?
Create an account, generate an API key, and start integrating.