Submit your first payroll report via the API. From authentication to async response handling, in under 10 minutes.
Generate an API key from your portal settings.
Navigate to Settings → API Keys in your portal. Click "Generate New Key" to create a credential pair.
You can create multiple keys for different environments (staging, production) and revoke any key at any time.
All API calls require a Bearer token in the Authorization header.
Include your API key in the Authorization header of every request:
POST /api/v1/files
Authorization: Bearer your_api_key_here
Content-Type: application/jsonhttps://api.audit1.com as the base URL. See the full authentication docs for details.
Send a POST request with your payroll rows.
Submit payroll data as a JSON array of employee rows. Each row needs at minimum:
{
"policy_number": "WC-2026-001",
"employer_fein": "12-3456789",
"rows": [
{
"first_name": "Jane",
"last_name": "Smith",
"state": "FL",
"class_code": "8810",
"gross_wages": 3250.00,
"check_date": "2026-03-15"
}
]
}The platform validates each row against your policy's class codes, states, and locations. Invalid rows are flagged but don't block valid ones.
The API returns a file ID for tracking and a summary of validation results.
A successful submission returns a 202 Accepted response with a file ID:
{
"status": "accepted",
"file_id": "663a1b2c3d4e5f6789012345",
"rows_received": 1,
"message": "File created and queued for processing"
}Processing happens asynchronously through three phases:
409 Conflict means the policy is expired. A 422 Unprocessable means required fields are missing. Check the errors array for details.
Poll the file endpoint to see validation and premium results.
Use the file ID from step 3 to check processing status:
GET /api/v1/files/{file_id}/status
Authorization: Bearer your_api_key_hereThe response includes the current phase, row-level results, and premium totals once Phase 3 completes.