API Reference
Coming Soon
The 99Visibility API is not yet available. The following is a preview of planned endpoints, authentication, and response formats. These may change before launch. For background on the API, see API Overview.
Base URL
https://api.99visibility.com/v1
All API requests use HTTPS. HTTP requests will be rejected.
Authentication
Authenticate requests by including your API key in the Authorization header:
Authorization: Bearer your_api_key_here
API keys will be available in your account Settings under the API section. You'll be able to create multiple keys with different permission scopes.
Planned Endpoints
GET /audits
List all audits for your account. Supports pagination and filtering by brand, status, and date range.
- Parameters:
brand_id(optional),status(optional: pending, running, complete, failed),limit(default 20, max 100),offset(default 0) - Response: Array of audit objects with id, brand_id, status, overall_score, and created_at
POST /audits
Trigger a new audit for a specific brand. The audit runs asynchronously — use webhooks or poll GET /audits/{id} for status.
- Body:
{ "brand_id": "string", "keywords": ["string"] }(keywords are optional; defaults to brand's saved keywords) - Response: Audit object with id and status "pending"
GET /audits/{id}
Retrieve full audit results including per-platform scores, query-level results, hallucination alerts, and recommendations.
- Response: Full audit object with nested results, recommendations, and accuracy alerts
GET /brands
List all brands in your account.
- Response: Array of brand objects with id, domain, name, and created_at
POST /brands
Create a new brand to monitor.
- Body:
{ "domain": "string", "name": "string", "description": "string" } - Response: Brand object with id
POST /brands/{id}/keywords
Add keywords to a brand.
- Body:
{ "keywords": ["string"] } - Response: Updated list of keywords for the brand
Rate Limits
Planned rate limits (subject to change):
- Pro plan: 100 requests per minute, 10 audits per hour
- Growth plan (add-on): 60 requests per minute, 5 audits per hour
Rate limit headers will be included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Response Format
All responses return JSON. Successful responses use standard HTTP status codes (200, 201). Errors return a consistent format:
{ "error": "string", "message": "string", "status": number }
- 400 — Invalid request (missing or malformed parameters)
- 401 — Invalid or missing API key
- 403 — Insufficient permissions for this endpoint
- 404 — Resource not found
- 429 — Rate limit exceeded
- 500 — Server error
Webhooks (Planned)
Register webhook URLs in your account Settings to receive notifications for:
audit.completed— fired when an audit finishes processinghallucination.detected— fired when a new critical hallucination is foundscore.changed— fired when your visibility score changes significantly
Webhook payloads will include the event type, timestamp, and relevant data.
For questions or early access, create an account and reach out to our team.