IATO REST API
Base URL: https://iato.ai/api
Two authentication methods are supported:
# JWT Token (from login) Authorization: Bearer eyJhbGciOiJIUzI1NiIs... # API Key (recommended for automation) Authorization: Bearer iato_your_api_key_here
For safe retries on POST/PUT/DELETE, include:
X-Idempotency-Key: unique-request-id-123
Cached responses returned for 24 hours. Check X-Idempotency-Replayed: true header.
The fastest way to integrate with IATO. Zero dependencies, fully typed, with built-in retries and error handling.
npm install iato-sdk
import { IATO } from 'iato-sdk';
const iato = new IATO({
apiKey: 'iato_your_key_here',
baseUrl: 'https://iato.ai'
});
// Start a crawl
const job = await iato.crawls.start({
url: 'https://example.com',
workspace_id: 'ws_abc123',
max_pages: 500,
});
// Wait for completion (polls automatically)
const completed = await iato.crawls.waitForCompletion(job.id);
// Get results
const stats = await iato.crawls.stats(completed.id);
const issues = await iato.crawls.seoIssues(completed.id);
const broken = await iato.crawls.brokenLinks(completed.id);
| Resource | Description |
|---|---|
iato.workspaces | Create, list, update, delete workspaces |
iato.crawls | Start crawls, get pages, stats, SEO issues, exports |
iato.sitemaps | Visual sitemaps, nodes, AI assistant, plans |
iato.inventory | Content inventory and statistics |
iato.navigation | Navigation detection and validation |
iato.taxonomy | AI taxonomy builder (5-phase wizard) |
iato.schedules | Recurring crawl schedules |
iato.webhooks | Webhook management and signature verification |
iato.reports | Report generation and download |
iato.auth | API key management |
iato.users | Quota and preferences |
iato.org | Organization members and invitations |
iato.health | Health checks and API manifest |
import { IATO, NotFoundError, RateLimitError, AuthenticationError } from 'iato-sdk';
try {
await iato.crawls.get('nonexistent');
} catch (error) {
if (error instanceof NotFoundError) {
console.log('Job not found');
} else if (error instanceof RateLimitError) {
console.log(`Retry after ${error.retryAfter}s`);
} else if (error instanceof AuthenticationError) {
console.log('Invalid API key');
}
}
Features: Zero dependencies (native fetch), automatic retries with exponential backoff on 5xx/429, full TypeScript types for every endpoint, request cancellation via AbortSignal, and webhook signature verification. Requires Node.js 18+.
Source: npmjs.com/package/iato-sdk
/api/manifest
Machine-readable API capabilities. AI orchestrators use this to discover features.
/api
API index listing all endpoint categories.
/api/user/quota
Check your usage quota before starting crawls.
{
"pages_remaining": 9500,
"crawls_remaining": 47,
"can_start_crawl": true,
"plan": "pro"
}
/api/health
Basic health check of all services.
{
"dashboard": "ok",
"database": "ok",
"crawler": "ok",
"redis": "ok"
}
/api/health/detailed
Detailed health with latency and capacity info. Useful for orchestrator decisions.
{
"status": "healthy",
"version": "10.1.0",
"dependencies": {
"database": {"status": "healthy", "latency_ms": 5},
"redis": {"status": "healthy", "latency_ms": 2},
"crawler": {"status": "healthy", "latency_ms": 15}
},
"capacity": {
"active_crawls": 3,
"max_concurrent_crawls": 10,
"available_slots": 7
}
}
/api/auth/login
Login to get JWT token.
{
"email": "[email protected]",
"password": "your-password"
}
/api/auth/api-keys
List your API keys.
/api/auth/api-keys
Create a new scoped API key.
{
"name": "CI/CD Pipeline",
"scopes": ["read", "write"],
"expires_in_days": 90
}
read - View jobs, pages, reportswrite - Start crawls, create webhooksadmin - Manage users, delete resources⚠️ Important: The API key is only shown once at creation. Save it immediately!
/api/auth/api-keys/{key_id}
Revoke an API key.
/api/crawl/jobs/batch-delete
Delete multiple jobs at once (max 100).
{
"job_ids": ["abc123", "def456", "ghi789"]
}
/api/crawl/jobs/batch-export
Export multiple jobs at once (max 20).
{
"job_ids": ["abc123", "def456"],
"format": "json",
"scope": "summary" // or "pages"
}
/api/webhooks
List your webhooks.
/api/webhooks
Create a webhook to receive event notifications.
{
"name": "Slack Notification",
"url": "https://hooks.slack.com/...",
"events": ["crawl.completed", "crawl.failed"],
"secret": "optional-hmac-secret"
}
crawl.started
crawl.progress
crawl.completed
crawl.failed
crawl.cancelled
/api/webhooks/{id}/test
Send a test event to verify your webhook endpoint.
/api/webhooks/{id}
Delete a webhook.
/api/webhooks/{webhook_id}
Get webhook details
/api/webhooks/{webhook_id}
Update webhook configuration
/api/webhooks/{webhook_id}/history
Get delivery history
/api/crawl/jobs/{job_id}/stream
WebSocket endpoint for real-time progress streaming.
// Connect
const ws = new WebSocket('ws://host/api/crawl/jobs/abc123/stream');
// Receive updates
ws.onmessage = (e) => {
const msg = JSON.parse(e.data);
// msg.type: "progress" | "complete" | "error"
// msg.data: { job_id, status, percent_complete, ... }
};
/api/crawl/start
Start a new crawl job. All config options default to minimal footprint settings.
{
"url": "https://example.com",
"workspace_id": 1,
// Basic Settings
"max_pages": 500, // Max internal pages (external links don't count)
"max_external_links": 0, // Max external links to check (0 = unlimited)
"max_depth": 3,
"delay_ms": 100,
"timeout_seconds": 30,
"concurrent_requests": 5,
"max_redirects": 5,
// Scope Settings
"crawl_subdomains": false,
"include_external": true, // Track external link URLs
"crawl_external": false, // Check external links (HEAD request)
"crawl_outside_start_folder": true,
"respect_robots_txt": true,
"store_content": false, // Store HTML (required for word counts)
// Analysis Settings (all default to false for minimal footprint)
"seo_analysis": false,
"performance_metrics": false,
"detect_duplicates": false,
"track_redirects": false,
"extract_hreflang": false,
"extract_structured_data": false,
// Resource Tracking (all default to false)
// store_* = Track URLs only, crawl_* = HEAD request to check size
"store_images": false, "crawl_images": false,
"store_css": false, "crawl_css": false,
"store_js": false, "crawl_js": false,
"store_fonts": false, "crawl_fonts": false,
"store_media": false, "crawl_media": false,
"store_other": false, "crawl_other": false,
// URL Filtering
"include_patterns": [],
"exclude_patterns": [],
"remove_parameters": ["utm_source", "utm_medium", "fbclid"],
// Authentication (optional)
"credential_id": null,
"formauth_id": null,
// JavaScript Rendering (optional)
"js_rendering": false,
"js_browser_type": "chromium", // chromium, firefox, webkit
"js_device_preset": "desktop_1080p",
"js_wait_until": "networkidle",
// Screenshots (optional, requires js_rendering)
"capture_screenshots": false,
"screenshot_full_page": false,
"screenshot_format": "png"
}
Note: Default settings create minimal database footprint (~5-10 MB per 5,000 pages). Enable options as needed for your use case.
Available values for js_device_preset:
desktop_1080p
desktop_1440p
iphone_14
iphone_14_pro_max
ipad_pro
pixel_7
samsung_galaxy_s23
googlebot_mobile
googlebot_desktop
custom
{
"job_id": "abc12345",
"status": "started"
}
/api/crawl/jobs
List all crawl jobs with pagination and filtering.
| workspace_id | Filter by workspace ID |
| limit | Results per page (default: 20, max: 100) |
| offset | Pagination offset (default: 0) |
| status | Filter by status: pending, running, completed, failed |
/api/crawl/jobs/{job_id}
Get detailed information about a specific job.
/api/crawl/jobs/{job_id}
Delete a crawl job and all associated data.
/api/crawl/jobs/{job_id}
Update crawl job metadata
/api/crawl/jobs/{job_id}/recrawl
Start recrawl of existing job
/api/crawl/jobs/{job_id}/cancel
Cancel a running crawl
/api/crawl/jobs/{job_id}/versions
Get crawl version history
/api/crawl/jobs/{job_id}/progress
Get real-time crawl progress
/api/crawl/jobs/{job_id}/overview
Get crawl overview dashboard data
/api/crawl/jobs/{job_id}/logs
Get crawl execution logs
/api/crawl/jobs/deletion-status
Check status of job deletions
/api/crawl/jobs/{job_id}/pages
Get all pages from a crawl job.
| limit | Results per page (default: 100) |
| offset | Pagination offset |
| status_code | Filter by HTTP status (e.g., 200, 404) |
| is_internal | Filter: true/false |
| search | Search in URL or title |
/api/crawl/jobs/{job_id}/pages/{page_id}
Get detailed page data including content, headers, and links.
/api/crawl/jobs/{job_id}/stats
Get crawl statistics and metrics.
/api/crawl/jobs/{job_id}/pages/{page_id}/html
Get full HTML content of page
/api/crawl/jobs/{job_id}/pages/{page_id}/screenshot
Get page screenshot
/api/crawl/jobs/{job_id}/pages/{page_id}/thumbnail
Get page thumbnail
/api/crawl/jobs/{job_id}/screenshots
List all screenshots for crawl
/api/crawl/jobs/{job_id}/pages/{page_id}/screenshot
Delete page screenshot
/api/crawl/jobs/{job_id}/screenshots
Delete all screenshots for crawl
/api/crawl/jobs/{job_id}/broken-links
Get all broken links (4xx, 5xx status codes).
/api/crawl/jobs/{job_id}/redirects
Get redirect chains and final destinations.
/api/crawl/jobs/{job_id}/duplicates
Find duplicate titles, descriptions, and content.
/api/crawl/jobs/{job_id}/seo-issues
Get SEO issues: missing titles, short descriptions, etc.
/api/crawl/jobs/{job_id}/performance
Get page performance metrics (load times, sizes).
/api/crawl/jobs/{job_id}/resources
Get discovered resources (images, CSS, JS).
/api/crawl/jobs/{job_id}/structured-data
Get Schema.org structured data found on pages.
/api/compare
Compare two crawl jobs.
Query params: baseline_job_id, compare_job_id
/api/crawl/jobs/{job_id}/hreflang
Get hreflang tag analysis
/api/crawl/jobs/{job_id}/sitemaps
Get XML sitemaps found during crawl
/api/crawl/jobs/{job_id}/sitemap-coverage
Get sitemap URL coverage analysis
/api/crawl/jobs/{job_id}/pagination
Get pagination pattern analysis
/api/crawl/jobs/{job_id}/overview/stats
Get comprehensive statistics
/api/crawl/jobs/{job_id}/content/thin
Get thin content pages
/api/crawl/jobs/{job_id}/content/headings
Get heading structure analysis
/api/crawl/jobs/{job_id}/links/internal
Get internal link analysis
/api/crawl/jobs/{job_id}/links/external
Get external link analysis
/api/crawl/jobs/{job_id}/links/orphan
Get orphan pages (no inlinks)
/api/crawl/jobs/{job_id}/technical/indexability
Get indexability report
/api/crawl/jobs/{job_id}/technical/robots
Get robots.txt analysis
/api/crawl/jobs/{job_id}/technical/canonicals
Get canonical tag analysis
/api/crawl/jobs/{job_id}/technical/performance
Get performance metrics
/api/crawl/jobs/{job_id}/onpage/titles
Get title tag analysis
/api/crawl/jobs/{job_id}/onpage/descriptions
Get meta description analysis
/api/crawl/jobs/{job_id}/onpage/images
Get image alt text analysis
/api/crawl/jobs/{job_id}/structured-data/summary
Get structured data overview
/api/crawl/jobs/{job_id}/structured-data/errors
Get structured data validation errors
/api/crawl/jobs/{job_id}/international/hreflang
Get international hreflang report
/api/crawl/jobs/{job_id}/issues/all
Get all SEO issues with filtering
/api/crawl/jobs/{job_id}/export/csv
Export as CSV.
Query param: scope (all, internal, external, errors)
/api/crawl/jobs/{job_id}/export/json
Export as JSON.
Query param: scope (all, internal, external, errors)
/api/crawl/jobs/{job_id}/export/sitemap
Export as XML Sitemap.
Content audit workflow with page-level decisions and task assignments.
/api/crawl/jobs/{job_id}/audit/stats
Get audit statistics
/api/crawl/jobs/{job_id}/audit/pages
Get auditable pages
/api/crawl/jobs/{job_id}/audit/page/{page_id}
Get audit details for page
/api/crawl/jobs/{job_id}/audit/decision
Submit audit decision
/api/crawl/jobs/{job_id}/audit/decisions
Get all audit decisions
/api/crawl/jobs/{job_id}/audit/task/{page_id}
Get audit task for page
/api/crawl/jobs/{job_id}/audit/task/{page_id}
Update audit task
/api/crawl/jobs/{job_id}/audit/export
Export audit results
/api/node-task/{node_id}
Get task for sitemap node
/api/node-task/{node_id}
Update sitemap node task
/api/node-task/bulk
Bulk update node tasks
/api/crawl/jobs/{job_id}/suggestions
Get improvement suggestions
/api/crawl/jobs/{job_id}/suggestions/generate
Generate new suggestions
/api/crawl/jobs/{job_id}/suggestions/{suggestion_id}/apply
Apply suggestion
/api/crawl/jobs/{job_id}/suggestions/{suggestion_id}/dismiss
Dismiss suggestion
/api/shared
Create shared crawl link
/api/shared/{share_token}
Access shared crawl data
Manage visual sitemaps for planning and organizing website structure.
/api/sitemaps
List all visual sitemaps in a workspace.
/api/sitemaps
Create a new visual sitemap. Body: { name, workspace_id }
/api/sitemaps/{sitemap_id}
Get sitemap details including all nodes and hierarchy.
/api/sitemaps/{sitemap_id}
Update sitemap properties.
/api/sitemaps/{sitemap_id}/nodes
Create a new node. Body: { title, url, parent_node_id, node_type, status }
/api/sitemaps/{sitemap_id}/nodes/{node_id}
Update node properties. Body fields: title, url, path, status, action (keep, update, review, remove, redirect, merge), redirect_to (destination URL when action is redirect), page_type, assigned_to, category_id, tags, menu_ids, meta_description, target_keywords, notes
/api/sitemaps/{sitemap_id}/nodes/{node_id}
Delete a node (children become orphans).
/api/sitemaps/{sitemap_id}/nodes/bulk-position
Update positions of multiple nodes. Body: { positions: [{ id, x, y }] }
/api/sitemaps/{sitemap_id}/export
Export sitemap as JSON, CSV, standalone HTML, or redirect map.
Query params: format (json, csv, html, redirects, redirects_json), theme (light, dark — HTML only), color (blue, purple, green, red, orange, teal, indigo, pink, cyan, amber, lime, slate — HTML only), redirect_code (301 or 302 — redirects formats only, default: 301)
Redirect Map CSV (format=redirects): Downloads a CSV with columns: Source URL, Destination URL, Status Code, Redirect Type, Chain Length, Notes. Aggregates crawl-detected 3xx chains, content audit redirect decisions, sitemap URL changes, and sitemap nodes marked as redirect.
Redirect Map JSON (format=redirects_json): Returns { redirects: [...], summary: { total, crawl_detected, user_decision, url_changed, node_redirect } }
/api/sitemaps/{sitemap_id}
Delete sitemap
/api/sitemaps/{sitemap_id}/nodes/{node_id}/duplicate
Duplicate sitemap node
/api/sitemaps/import
Import sitemap from URL
/api/sitemaps/{sitemap_id}/import
Import nodes into sitemap
/api/sitemaps/{sitemap_id}/changes
List detected changes
/api/sitemaps/{sitemap_id}/detect-changes
Detect changes since last crawl
/api/sitemaps/{sitemap_id}/changes/{change_id}/acknowledge
Acknowledge a change
/api/sitemaps/{sitemap_id}/changes/bulk-acknowledge
Bulk acknowledge changes
/api/sitemaps/{sitemap_id}/users
Get available users for assignment
/api/sitemaps/{sitemap_id}/nodes/{node_id}/found-on
Get pages where node URL was found
/api/sitemaps/{sitemap_id}/nodes/{node_id}/content
Get node content
/api/sitemaps/{sitemap_id}/nodes/{node_id}/seo-data
Get node SEO data
/api/sitemaps/{sitemap_id}/nodes/{node_id}/comments
Get node comments
/api/sitemaps/{sitemap_id}/nodes/{node_id}/comments
Add comment to node
/api/sitemaps/{sitemap_id}/nodes/{node_id}/comments/{comment_id}
Update comment
/api/sitemaps/{sitemap_id}/nodes/{node_id}/comments/{comment_id}
Delete comment
/api/sitemaps/{sitemap_id}/activity
Get sitemap activity log
/api/sitemaps/{sitemap_id}/shares
List sitemap shares
/api/sitemaps/{sitemap_id}/shares
Create sitemap share link
/api/sitemaps/{sitemap_id}/shares/{share_id}
Update share settings
/api/sitemaps/{sitemap_id}/shares/{share_id}
Delete share
/api/sitemaps/shared/{share_token}
Access shared sitemap
/api/sitemaps/{sitemap_id}/nodes/{node_id}/capture-screenshot
Capture screenshot for node
/api/sitemaps/{sitemap_id}/taxonomy
Get sitemap taxonomy
/api/sitemaps/{sitemap_id}/menus
Get sitemap navigation menus
/api/sitemaps/{sitemap_id}/taxonomy/categories
Create category
/api/sitemaps/{sitemap_id}/taxonomy/categories/{term_id}
Update category
/api/sitemaps/{sitemap_id}/taxonomy/categories/{term_id}
Delete category
/api/sitemaps/{sitemap_id}/taxonomy/tags
Create tag
/api/sitemaps/{sitemap_id}/taxonomy/tags/{tag_id}
Update tag
/api/sitemaps/{sitemap_id}/taxonomy/tags/{tag_id}
Delete tag
In-browser content editing with version history and AI assistance.
/api/sitemaps/{sitemap_id}/content-editor/pages
Get pages for content editing
/api/sitemaps/{sitemap_id}/content-editor/{node_id}
Get content for editing
/api/sitemaps/{sitemap_id}/content-editor/{node_id}/save
Save content version
/api/sitemaps/{sitemap_id}/content-editor/{node_id}/versions
Get content version history
/api/sitemaps/{sitemap_id}/content-editor/{node_id}/restore/{version_id}
Restore content version
/api/sitemaps/{sitemap_id}/content-editor/bulk-update
Bulk update content
/api/sitemaps/{sitemap_id}/content-brief
Get content brief
/api/sitemaps/{sitemap_id}/content-brief
Update content brief
/api/sitemaps/{sitemap_id}/content-brief/page/{node_id}
Get page brief override
/api/sitemaps/{sitemap_id}/content-brief/page/{node_id}
Update page brief
/api/sitemaps/{sitemap_id}/content-brief/page/{node_id}
Delete page brief
Conversational AI for sitemap organization with human-in-the-loop approval.
Note: Requires AI provider configured in Admin → AI Usage & Costs. The main chat endpoint uses Server-Sent Events (SSE) for streaming responses.
/api/sitemaps/{sitemap_id}/ai-assistant
Main chat endpoint (SSE stream). Body: { message, conversation_id? }
Events: thinking, text, plan, done, error
/api/sitemaps/{sitemap_id}/ai-assistant/context
Get the context data sent to AI (useful for debugging).
/api/sitemaps/{sitemap_id}/ai-assistant/conversations
List all conversations for this sitemap.
/api/sitemaps/{sitemap_id}/ai-assistant/conversations/{id}
Get a specific conversation with full message history.
/api/sitemaps/{sitemap_id}/ai-assistant/conversations/{id}
Delete a conversation.
/api/sitemaps/{sitemap_id}/ai-assistant/plans
List all plans for this sitemap.
/api/sitemaps/{sitemap_id}/ai-assistant/plans/{plan_id}
Get plan details with operations list.
/api/sitemaps/{sitemap_id}/ai-assistant/plans/{plan_id}/execute
Execute a pending plan. Body: { selected_operations?: [0, 1, 2] }
Omit selected_operations to execute all, or pass indices to cherry-pick.
/api/sitemaps/{sitemap_id}/ai-assistant/plans/{plan_id}/reject
Reject a pending plan.
/api/sitemaps/{sitemap_id}/ai-assistant/plans/{plan_id}/undo
Undo an executed plan (if operations are reversible).
/api/sitemaps/{sitemap_id}/ai-assistant/plans/{plan_id}
Modify a pending plan (add/remove/update operations).
/api/sitemaps/{sitemap_id}/ai-assistant/quick-actions/analyze
Get AI analysis of sitemap structure and suggestions.
/api/sitemaps/{sitemap_id}/ai-assistant/quick-actions/suggest-structure
Get AI suggestions for improving site structure.
/api/sitemaps/{sitemap_id}/ai-assistant/plans/scheduled
Get scheduled plans
/api/sitemaps/{sitemap_id}/ai-assistant/plans/{plan_id}/schedule
Schedule plan execution
/api/sitemaps/{sitemap_id}/ai-assistant/plans/{plan_id}/schedule
Cancel scheduled plan
/api/sitemaps/{sitemap_id}/ai-assistant/notifications
Get AI notifications
/api/sitemaps/{sitemap_id}/ai-assistant/notifications/{notification_id}/read
Mark notification as read
/api/sitemaps/{sitemap_id}/ai-assistant/notifications/mark-all-read
Mark all notifications as read
/api/sitemaps/{sitemap_id}/ai-assistant/activity
Get AI activity log
/api/sitemaps/{sitemap_id}/ai-assistant/seo-audit
Run AI-powered SEO audit
/api/sitemaps/{sitemap_id}/ai-assistant/seo-audit/history
Get SEO audit history
/api/sitemaps/{sitemap_id}/ai-assistant/templates
List content templates
/api/sitemaps/{sitemap_id}/ai-assistant/templates/{template_id}
Get template details
/api/sitemaps/{sitemap_id}/ai-assistant/templates
Create content template
/api/sitemaps/{sitemap_id}/ai-assistant/templates/{template_id}/apply
Apply template to nodes
/api/sitemaps/{sitemap_id}/ai-assistant/analytics/config
Get analytics integration config
/api/sitemaps/{sitemap_id}/ai-assistant/analytics/low-performing
Get low-performing pages
/api/sitemaps/{sitemap_id}/ai-assistant/analytics/pages
Get page analytics data
/api/sitemaps/{sitemap_id}/ai-assistant/suggestions
Get AI improvement suggestions
/api/sitemaps/{sitemap_id}/ai-assistant/suggestions/{suggestion_id}/dismiss
Dismiss suggestion
/api/sitemaps/{sitemap_id}/ai-assistant/suggestions/{suggestion_id}/accept
Accept and apply suggestion
/api/crawl/jobs/{job_id}/inventory
Get content inventory for a crawl job.
Query params: page, per_page, content_type, status_code, search
/api/crawl/jobs/{job_id}/inventory/stats
Get inventory statistics (counts by type, status).
/api/crawl/jobs/{job_id}/inventory/sync
Sync inventory from crawl data (rebuilds inventory table).
Build and manage content taxonomies with AI assistance.
/api/crawl/jobs/{job_id}/taxonomy/terms
Get all taxonomy terms. Query: status, search, page, limit.
/api/crawl/jobs/{job_id}/taxonomy/terms
Create a new term. Body: preferred_label, definition, status.
/api/crawl/jobs/{job_id}/taxonomy/validate
Validate taxonomy and return issues (missing definitions, duplicates, etc.).
/api/crawl/jobs/{job_id}/taxonomy/ai/extract-terms
Extract terms from crawled content (titles, headings, navigation, URLs).
/api/crawl/jobs/{job_id}/taxonomy/ai/import-extracted
Import selected extracted terms into taxonomy.
/api/crawl/jobs/{job_id}/taxonomy/ai/hierarchy-tree
Get taxonomy as a nested tree structure.
/api/crawl/jobs/{job_id}/taxonomy/ai/suggest-hierarchy
Get AI-suggested parent-child relationships based on term similarity.
/api/crawl/jobs/{job_id}/taxonomy/ai/set-parent
Set or remove parent-child relationship. Body: child_term_id, parent_term_id.
/api/crawl/jobs/{job_id}/taxonomy/ai/auto-classify
Auto-classify pages by matching content against terms. Body: max_pages, min_confidence.
/api/crawl/jobs/{job_id}/taxonomy/ai/pending-classifications
Get classifications pending human review.
/api/crawl/jobs/{job_id}/taxonomy/ai/review-classification
Approve, reject, or delete a classification. Body: id, action (approve/reject/delete).
/api/crawl/jobs/{job_id}/taxonomy/ai/bulk-review
Bulk approve or reject classifications. Body: ids[], action (approve_all/reject_all).
/api/crawl/jobs/{job_id}/taxonomy/ai/export/json
Export taxonomy as JSON. Query: include_drafts (true/false).
/api/crawl/jobs/{job_id}/taxonomy/ai/export/csv
Export taxonomy as CSV (spreadsheet format).
/api/crawl/jobs/{job_id}/taxonomy/ai/export/skos
Export taxonomy as SKOS RDF/XML (W3C standard).
/api/crawl/jobs/{job_id}/taxonomy/stats
Get taxonomy statistics
/api/crawl/jobs/{job_id}/taxonomy/tree
Get full taxonomy tree
/api/crawl/jobs/{job_id}/taxonomy/term/{term_id}
Update taxonomy term
/api/crawl/jobs/{job_id}/taxonomy/term/{term_id}
Delete taxonomy term
/api/crawl/jobs/{job_id}/taxonomy/move
Move term to new parent
/api/crawl/jobs/{job_id}/taxonomy/export
Export taxonomy (JSON/CSV)
/api/crawl/jobs/{job_id}/taxonomy/import
Import taxonomy from file
/api/crawl/jobs/{job_id}/taxonomy/import-skos
Import SKOS taxonomy
/api/crawl/jobs/{job_id}/taxonomy/changelog
Get taxonomy changelog
/api/crawl/jobs/{job_id}/taxonomy/versions
List taxonomy versions
/api/crawl/jobs/{job_id}/taxonomy/versions
Create taxonomy version snapshot
/api/crawl/jobs/{job_id}/taxonomy/versions/{version_id}
Delete taxonomy version
/api/crawl/jobs/{job_id}/taxonomy/term/{term_id}/history
Get term change history
/api/crawl/jobs/{job_id}/taxonomy/changelog/export
Export changelog
/api/crawl/jobs/{job_id}/taxonomy/governance/stats
Get governance statistics
/api/crawl/jobs/{job_id}/taxonomy/governance/bulk-status
Bulk change term status
/api/crawl/jobs/{job_id}/taxonomy/term/{term_id}/status
Change individual term status
/api/crawl/jobs/{job_id}/taxonomy/tags
List taxonomy tags
/api/crawl/jobs/{job_id}/taxonomy/tag
Create taxonomy tag
/api/crawl/jobs/{job_id}/taxonomy/tag/{tag_id}
Update taxonomy tag
/api/crawl/jobs/{job_id}/taxonomy/tag/{tag_id}
Delete taxonomy tag
/api/crawl/jobs/{job_id}/taxonomy/term/{term_id}/tags
Assign tags to term
/api/crawl/jobs/{job_id}/taxonomy/term/{term_id}/tags
Get tags for term
/api/crawl/jobs/{job_id}/taxonomy/term/{term_id}/relationships
Get term relationships
/api/crawl/jobs/{job_id}/taxonomy/term/{term_id}/synonym
Add term synonym
/api/crawl/jobs/{job_id}/taxonomy/term/{term_id}/related
Add related term
/api/crawl/jobs/{job_id}/taxonomy/term/{term_id}/use-for
Add use-for relationship
/api/crawl/jobs/{job_id}/taxonomy/relationship/{relationship_id}
Delete relationship
/api/crawl/jobs/{job_id}/taxonomy/thesaurus
Get taxonomy thesaurus view
/api/crawl/jobs/{job_id}/taxonomy/ai/detect-industry
AI: Detect site industry
/api/crawl/jobs/{job_id}/taxonomy/ai/bartoc/search
AI: Search BARTOC vocabularies
/api/crawl/jobs/{job_id}/taxonomy/ai/bartoc/preview
AI: Preview BARTOC vocabulary
/api/crawl/jobs/{job_id}/taxonomy/ai/bartoc/import
AI: Import BARTOC vocabulary
/api/crawl/jobs/{job_id}/taxonomy/ai/starter-taxonomies
AI: List starter taxonomies
/api/crawl/jobs/{job_id}/taxonomy/ai/import-starter
AI: Import starter taxonomy
/api/crawl/jobs/{job_id}/taxonomy/ai/standard-vocabularies
AI: List standard vocabularies
/api/crawl/jobs/{job_id}/taxonomy/ai/vocab-types
AI: Get vocabulary types
/api/crawl/jobs/{job_id}/taxonomy/ai/import-standard
AI: Import standard vocabulary
/api/crawl/jobs/{job_id}/taxonomy/ai/import-skos
AI: Import SKOS file
/api/crawl/jobs/{job_id}/taxonomy/ai/classification-stats
AI: Get classification statistics
/api/crawl/jobs/{job_id}/taxonomy/ai/page-classifications
AI: Get page classifications
/api/crawl/jobs/{job_id}/taxonomy/ai/export/stats
AI: Get export statistics
/api/workspaces
List all workspaces for the current user.
/api/workspaces
Create a new workspace.
{
"name": "My Workspace",
"description": "Optional description",
"visibility": "private"
}
/api/workspaces/{workspace_id}
Get workspace details.
/api/workspaces/{workspace_id}
Update workspace name, description, or visibility.
/api/workspaces/{workspace_id}
Delete a workspace (owner only).
/api/workspaces/{workspace_id}/members
List workspace members and their roles.
/api/workspaces/{workspace_id}/invite
Invite a user to the workspace.
{
"email": "[email protected]",
"role": "member"
}
/api/schedules
List all scheduled jobs.
/api/schedules
Create a new schedule.
{
"name": "Daily Crawl",
"url": "https://example.com",
"cron_expression": "0 2 * * *",
"timezone": "UTC",
"config": {"max_pages": 100}
}
/api/schedules/{schedule_id}
Update schedule (pause/resume with is_active param).
/api/schedules/{schedule_id}/run
Trigger schedule to run immediately.
/api/schedules/{schedule_id}
Delete a schedule.
/api/schedules/{schedule_id}
Get schedule details
/api/schedules/{schedule_id}/toggle
Toggle schedule active/inactive
/api/schedules/{schedule_id}/history
Get schedule run history
/api/schedules/cleanup-orphans
Clean up orphaned schedule jobs
/api/reports
List generated reports.
/api/reports/generate
Generate a new report.
{
"job_id": 1,
"report_type": "summary", // summary, detailed, audit
"output_format": "html" // html, pdf, csv, json, xlsx
}
/api/reports/{report_id}/download
Download a generated report as HTML or PDF file.
Returns: Streaming file download with Content-Disposition header
/api/auth/register
Register a new user and organization.
{
"email": "[email protected]",
"password": "securepassword",
"org_name": "My Company",
"name": "John Doe"
}
/api/auth/login
Login and receive JWT token.
{
"email": "[email protected]",
"password": "securepassword"
}
{
"access_token": "eyJhbG...",
"user": {"id": 1, "email": "...", "name": "..."}
}
/api/auth/me
Get current user info. Requires Authorization header with JWT token.
Header: Authorization: Bearer <token>
/api/user/preferences
Get current user's theme preferences.
{
"theme_color": "blue",
"text_size": 100,
"theme_mode": "light"
}
/api/user/preferences
Save user's theme preferences.
{
"theme_color": "purple", // blue, purple, green, red, orange, teal, indigo, pink, cyan, amber, lime, slate
"text_size": 110, // 80-120
"theme_mode": "dark" // light, dark, system
}
/api/credentials
List saved credentials.
/api/credentials
{
"name": "Staging Server",
"domain_pattern": "staging.example.com",
"username": "admin",
"password": "secret"
}
/api/credentials/{cred_id}
Get a specific credential by ID.
/api/credentials/{cred_id}
Delete a saved credential.
/api/form-auth
List form authentication configs.
/api/form-auth
{
"name": "Admin Login",
"login_url": "https://example.com/login",
"username_field": "email",
"password_field": "password",
"username": "[email protected]",
"password": "secret"
}
/api/form-auth/{config_id}
Delete a form authentication configuration.
Create CSS, XPath, or regex rules to extract structured data from crawled pages. Attach rules to crawls via extraction_rule_ids in the crawl config.
/api/extraction-rules
List all extraction rules. Returns { rules: [...], count }.
/api/extraction-rules/{rule_id}
Get a single extraction rule by ID.
/api/extraction-rules
Create an extraction rule.
{
"name": "Product Prices",
"rule_type": "css", // css, xpath, regex
"selector": ".product-price",
"target": "text", // text, html, attribute, count
"target_attribute": null, // required when target = "attribute"
"description": "Extract prices from product pages",
"required": false, // fail page if extraction fails?
"default_value": null, // fallback if extraction fails
"match_all": false, // all matches or first only
"regex_group": 0 // capture group for regex rules
}
/api/extraction-rules/{rule_id}
Update an extraction rule. Send only the fields you want to change.
/api/extraction-rules/{rule_id}
Delete an extraction rule.
/api/extraction-rules/test
Test an extraction rule against a live URL without saving it.
{
"url": "https://example.com/product/123",
"rule": {
"rule_type": "css",
"selector": ".product-price",
"target": "text"
}
}
/api/crawl/jobs/{job_id}/extracted-data
Retrieve data extracted by custom rules during a crawl. Returns results grouped by field name with success/failure counts.
Query Parameters:
field_name — Filter by specific field (optional)limit — Max results, default 100, max 500offset — Pagination offset, default 0// Response
{
"data": [
{
"page_url": "https://example.com/product/1",
"rule_name": "Product Prices",
"field_name": "price",
"extracted_value": "$29.99",
"extraction_success": true
}
],
"count": 42,
"by_field": {
"price": { "count": 42, "success": 40 },
"title": { "count": 42, "success": 42 }
}
}
/api/org/users
List users in organization.
/api/org/users/invite
{
"email": "[email protected]",
"role": "member" // owner, admin, member, viewer
}
/api/org/invitations
List pending invitations.
/api/org/users/{user_id}
Remove user from organization.
/api/org/users/{user_id}/roles
Update user roles.
/api/org/invitations/{invite_id}
Revoke invitation.
/api/org/invitations/{invite_id}/resend
Resend invitation email.
/api/org/leave
Leave organization.
/api/org/seats
Get seat usage and limits.
/api/org/seats/add
Add paid seats.
/api/org/seats/remove
Remove paid seats.
/api/invitations/{token}/info
Get invitation details.
/api/invitations/pending
Get pending invitations for user.
/api/invitations/{token}/accept
Accept invitation.
/api/invitations/{token}/decline
Decline invitation.
All responses use a consistent format:
{
"success": true | false,
"data": { ... } | null,
"error": null | {
"code": "ERROR_CODE",
"message": "Human-readable message",
"details": { ... },
"suggestions": ["Try this", "Or this"],
"retryable": true | false,
"retry_strategy": {
"retry_after_seconds": 30,
"max_retries": 3,
"backoff_multiplier": 2.0,
"retry_schedule": [30, 60, 120]
}
},
"meta": {
"request_id": "uuid",
"timestamp": "2026-01-14T00:00:00Z",
"api_version": "10.1.0"
},
"_actions": {
"next_action": {"method": "POST", "href": "/api/..."}
}
}
| Code | Error Code | Description |
|---|---|---|
| 200 | - | Success |
| 201 | - | Created |
| 400 | BAD_REQUEST | Invalid parameters |
| 401 | UNAUTHORIZED | Missing or invalid token |
| 403 | FORBIDDEN | Insufficient permissions |
| 404 | NOT_FOUND | Resource doesn't exist |
| 422 | VALIDATION_ERROR | Request validation failed |
| 429 | RATE_LIMITED | Too many requests (retryable) |
| 500 | INTERNAL_ERROR | Unexpected server error |
| Header | Description |
|---|---|
| X-RateLimit-Limit | Maximum requests per minute (60) |
| X-RateLimit-Remaining | Requests remaining in window |
| X-RateLimit-Reset | Unix timestamp when window resets |
| Retry-After | Seconds to wait (on 429 response) |
When error.retryable is true, use the provided retry strategy:
"retry_strategy": {
"retry_after_seconds": 30, // Initial wait
"max_retries": 3, // Don't retry more than this
"backoff_multiplier": 2.0, // Double wait each retry
"retry_schedule": [30, 60, 120] // Pre-calculated waits
}
Advanced authentication including MFA, OAuth, and account management.
/api/auth/register
Register new user account.
/api/auth/logout
Logout and invalidate session.
/api/auth/verify-email
Verify email address via token.
/api/auth/forgot-password
Request password reset email.
/api/auth/reset-password
Reset password with token.
/api/auth/oauth/{provider}
Redirect to OAuth provider (google, github).
/api/auth/oauth/google/callback
Google OAuth callback.
/api/auth/oauth/github/callback
GitHub OAuth callback.
/api/auth/profile
Update user profile.
/api/auth/password
Change current password.
/api/auth/api-key
Create new API key.
/api/auth/notifications
Get notification preferences.
/api/auth/notifications
Update notification preferences.
/api/auth/mfa/status
Get MFA enrollment status.
/api/auth/mfa/setup
Start MFA setup (generates QR code).
/api/auth/mfa/verify-setup
Complete MFA setup with TOTP code.
/api/auth/mfa
Disable MFA.
/api/auth/mfa/verify
Verify MFA code during login.
/api/auth/mfa/email-code
Send MFA verification code via email.
/api/auth/mfa/backup-codes/regenerate
Regenerate backup codes.
/api/auth/mfa/org-enforcement
Set organization MFA enforcement policy.
/api/auth/mfa/trusted-devices
List trusted devices.
/api/auth/mfa/trusted-devices/{device_id}
Remove trusted device.
/api/auth/account
Delete user account.
Single Sign-On configuration for team and enterprise plans.
/api/sso/providers
List available SSO providers.
/api/sso/connections
List SSO connections for organization.
/api/sso/connections
Create new SSO connection.
/api/sso/connections/{connection_id}
Get SSO connection details.
/api/sso/connections/{connection_id}
Update SSO connection.
/api/sso/connections/{connection_id}
Delete SSO connection.
/api/sso/connections/{connection_id}/test
Test SSO configuration.
/api/sso/connections/{connection_id}/metadata
Get SAML service provider metadata.
Automated content governance policies, change queue management, and activity logging.
/api/autopilot/{workspace_id}/policy
Get governance policy for workspace.
/api/autopilot/{workspace_id}/policy
Create or update governance policy.
/api/autopilot/{workspace_id}/queue
List queued governance changes.
/api/autopilot/queue/{change_id}/approve
Approve a queued change.
/api/autopilot/queue/{change_id}/reject
Reject a queued change.
/api/autopilot/queue/{change_id}/mark-fixed
Mark change as manually fixed.
/api/autopilot/queue/{change_id}/rollback
Rollback an applied change.
/api/autopilot/batch/{batch_id}/approve
Bulk approve entire batch.
/api/autopilot/batch/{batch_id}/reject
Bulk reject entire batch.
/api/autopilot/batch/{batch_id}/mark-fixed
Bulk mark batch as fixed.
/api/autopilot/batch/{batch_id}/rollback
Rollback entire batch.
/api/autopilot/{workspace_id}/activity
Query governance activity log.
/api/autopilot/activity/batch/{batch_id}
Get activity for specific batch.
Connect WordPress sites for bidirectional content sync, SEO fixes, and governance.
/api/wordpress/{workspace_id}/connections
List WordPress connections.
/api/wordpress/{workspace_id}/connect
Register new WordPress site.
/api/wordpress/{workspace_id}/connections/{connection_id}
Update connection settings.
/api/wordpress/{workspace_id}/connections/{connection_id}
Disconnect WordPress site.
/api/wordpress/{workspace_id}/connections/{connection_id}/test
Test connectivity.
/api/wordpress/{workspace_id}/test-connection
Test connection before saving.
/api/wordpress/{workspace_id}/connections/{connection_id}/sync-history
Get sync history.
/api/wordpress/sync/pages
Push pages/posts from WordPress.
/api/wordpress/sync/menus
Push navigation menus from WordPress.
/api/wordpress/sync/taxonomy
Push categories/tags from WordPress.
/api/wordpress/{workspace_id}/connections/{connection_id}/pull
Pull content from WordPress.
/api/wordpress/{workspace_id}/connections/{connection_id}/push-navigation
Push navigation to WordPress.
/api/wordpress/{workspace_id}/connections/{connection_id}/push-taxonomy
Push taxonomy to WordPress.
/api/wordpress/{workspace_id}/connections/{connection_id}/push-pages
Push pages to WordPress.
/api/wordpress/{workspace_id}/connections/{connection_id}/test-mcp-tool
Test MCP tool on WordPress.
Subscription management, usage tracking, spending caps, and prepaid credits.
/api/billing/pricing
Get available pricing plans.
/api/subscription/status
Get current subscription details.
/api/subscription/checkout
Create Stripe Checkout session.
/api/subscription/change
Change subscription plan (upgrade/downgrade).
/api/subscription/cancel
Cancel subscription at end of period.
/api/subscription/reactivate
Undo pending cancellation.
/api/billing/invoices
Get Stripe invoices.
/api/billing/portal-session
Open Stripe Customer Portal.
/api/billing/usage
Get current billing period usage.
/api/billing/usage/history
Get usage history across periods.
/api/billing/spending-cap
Get spending cap status.
/api/billing/spending-cap
Set or update spending cap.
/api/billing/credits/bundles
List available credit bundles.
/api/billing/credits/balance
Get credit balance.
/api/billing/credits/purchase
Purchase credits via Stripe.
/api/billing/credits/history
Get credit purchase history.
/api/billing/cost-estimate
Estimate costs for current period.
/api/user/tier
Get current subscription tier.
/api/user/quota
Get usage quota and limits.
/api/user/downgrade-eligibility
Check downgrade eligibility.
Connect Google Analytics and Google Search Console for enriched crawl data.
/api/integrations/{workspace_id}
List integration status.
/api/integrations/{workspace_id}/oauth/url
Generate Google OAuth consent URL.
/api/integrations/oauth/callback
OAuth callback (token exchange).
/api/integrations/{workspace_id}/connect
Save OAuth tokens.
/api/integrations/{workspace_id}/{provider}
Disconnect integration.
/api/integrations/{workspace_id}/analytics
Fetch GA + GSC data for URLs.
/api/integrations/{workspace_id}/google/properties
List GA4 properties.
/api/integrations/{workspace_id}/google/sites
List Search Console sites.
/api/integrations/{workspace_id}/select-property
Save selected GA/GSC property.