CUA Website Scan
AI Analysis
CUA Website Scan
POST
CUA Website Scan
AI-powered website analysis using Computer Use Agent (CUA) technology. The agent autonomously navigates and analyzes websites to identify potential fraud, scams, compliance issues, and suspicious content.
Overview
The CUA Scan API uses Claude’s Computer Use capabilities to:- Navigate websites like a human user
- Analyze content for fraud indicators, scams, and compliance issues
- Capture screenshots at each step for audit trails
- Generate detailed reports with findings and recommendations
CUA scans are asynchronous. Submit a job, then poll for status and results.
Endpoints
| Endpoint | Method | Description |
|---|---|---|
/kyc/cua-scan | POST | Submit a new scan job |
/kyc/cua-scan | GET | List jobs with pagination |
/kyc/cua-scan/{jobId} | GET | Get job status and results |
Authentication
| Endpoint | Required Permission |
|---|---|
| Submit Job | cua:create |
| List Jobs | cua:read |
| Get Status | cua:read |
Submit Scan Job
Create a new CUA scan job to analyze a website.Request Parameters
Effort Levels
| Level | Steps | Use Case |
|---|---|---|
low | 20 | Quick surface-level scan |
medium | 50 | Standard comprehensive scan (default) |
high | 80 | Deep analysis for complex sites |
Request Example
Response
Response Fields
| Field | Type | Description |
|---|---|---|
job_id | string | Unique job identifier (UUID) |
status | string | Initial status: PENDING |
target_url | string | URL being scanned |
effort | string | Effort level selected |
created_at | string | ISO 8601 timestamp |
message | string | Confirmation message |
List Jobs
Get a paginated list of scan jobs for your tenant.Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 20 | Number of items per page (max 100) |
cursor | string | - | Pagination cursor from previous response |
status | string | - | Filter by status: PENDING, PROCESSING, COMPLETED, FAILED |
sort | string | desc | Sort order: desc (newest first) or asc (oldest first) |
Request Example
Response
Response Fields
| Field | Type | Description |
|---|---|---|
items | array | List of job summaries |
count | integer | Number of items in this response |
cursor | string | Pagination cursor for next page (null if no more) |
has_more | boolean | Whether more pages exist |
Get Job Status
Get detailed status, progress, and results of a scan job.Path Parameters
| Parameter | Type | Description |
|---|---|---|
jobId | string | Job ID (UUID) |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
from_step | integer | 0 | Return only steps with sequence_id >= from_step (for polling) |
Request Example
Response - Processing
Response - Completed
Response Fields
| Field | Type | Description |
|---|---|---|
job_id | string | Job ID |
target_url | string | URL being scanned |
status | string | Current status |
effort | string | Effort level |
created_at | string | Job creation timestamp |
updated_at | string | Last update timestamp |
current_step | integer | Current agent step (1 to max_steps) |
total_sequences | integer | Total content blocks generated |
last_sequence_id | integer | ID of last sequence (for pagination) |
from_sequence | integer | Requested from_step value |
steps | array | Content blocks (text, tool_use, tool_result) |
results | object | Result files (only when COMPLETED) |
error_message | string | Error details (only when FAILED) |
Step Types
| Type | Description |
|---|---|
text | Agent’s reasoning/analysis text |
tool_use | Tool invocation (screenshot, click, type, etc.) |
tool_result | Result of tool execution |
thinking | Internal reasoning (when available) |
Job Statuses
| Status | Description |
|---|---|
PENDING | Job submitted, waiting in queue |
PROCESSING | Agent is actively scanning the website |
COMPLETED | Scan finished successfully, results available |
FAILED | Scan failed (see error_message for details) |
Error Responses
400 Bad Request - Missing URL
400 Bad Request - Invalid URL
400 Bad Request - Invalid Effort
403 Forbidden - Permission Denied
404 Not Found
Usage Examples
Python - Complete Workflow
JavaScript - Real-time Updates
List Jobs with Filtering
Best Practices
Choosing Effort Level
- Low (20 steps): Quick checks, simple landing pages
- Medium (50 steps): Standard analysis, e-commerce sites
- High (80 steps): Deep investigation, complex sites with multiple pages
Efficient Polling
- Use
from_stepparameter to only fetch new content - Poll every 3-5 seconds during active processing
- Stop polling when status is
COMPLETEDorFAILED
Rate Limiting
- Maximum 2 concurrent jobs per tenant
- Maximum 10 concurrent jobs globally
- Jobs exceeding limits are queued automatically
Result Files
- report.json: Structured analysis data
- summary.md: Human-readable summary
- screenshots.zip: All captured screenshots
- Download URLs expire after 1 hour
Error Handling
- Implement retry logic for transient failures
- Check
error_messagefield when status isFAILED - Store
job_idfor later retrieval of results