curl -X POST https://ansius.com/api/hirewall/v1/cv-match/analyze \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"cv": "John Doe\nSoftware Engineer with 5 years...",
"jobDescription": "We are looking for a Senior Developer...",
"options": {
"returnFormat": "full",
"language": "en",
"webhookUrl": "https://yoursite.com/webhook"
},
"requestId": "unique-request-123"
}'Response (202 Accepted):
{
"requestId": "unique-request-123",
"status": "processing",
"statusUrl": "/api/hirewall/v1/cv-match/status/unique-request-123",
"resultUrl": "/api/hirewall/v1/cv-match/result/unique-request-123",
"message": "Job queued. You will receive a webhook when complete."
}All API requests require authentication using an API key. Include your key in the X-API-Key header.
X-API-Key: your_api_key_hereSecurity Note: Never expose your API key in client-side code. Always make API calls from your backend server.
https://ansius.com/api/hirewall/v1/cv-match/analyzeSubmit a CV and job description for matching analysis. Returns immediately with a request ID for tracking.
{
"cv": "string (required) - Plain text CV content",
"jobDescription": "string (required) - Plain text job description",
"options": {
"returnFormat": "full | summary | score-only (optional, default: summary)",
"language": "en | es | fr | de | pt | it | ... (optional, default: en)",
"webhookUrl": "string (optional) - URL for webhook delivery"
},
"requestId": "string (optional) - For idempotency"
}{
"requestId": "unique-id",
"status": "processing",
"statusUrl": "/api/hirewall/v1/cv-match/status/{requestId}",
"resultUrl": "/api/hirewall/v1/cv-match/result/{requestId}"
}/cv-match/status/{requestId}Check the processing status of a submitted analysis job.
{
"requestId": "unique-id",
"status": "queued | processing | completed | failed",
"queuedAt": "ISO 8601 timestamp",
"completedAt": "ISO 8601 timestamp (if completed)",
"processingTime": "duration (if completed)",
"resultUrl": "/api/hirewall/v1/cv-match/result/{requestId}"
}/cv-match/result/{requestId}Retrieve the completed analysis result. Only available after job status is completed.
{
"requestId": "unique-id",
"status": "completed",
"data": {
"matchScore": 87,
"maxScore": 100,
"analysis": {
"criticalMatches": 4,
"importantMatches": 6,
"niceToHaveMatches": 3
},
"categoryScores": {
"critical": "45/50",
"important": "28/30",
"niceToHave": "14/20"
},
"matches": [
{
"requirement": "string - Job requirement",
"matchLevel": "full | partial | none",
"score": 0-10,
"evidence": "string - Evidence from CV",
"category": "critical | important | niceToHave"
}
]
},
"metadata": {
"processedAt": "ISO 8601 timestamp",
"processingTime": "milliseconds",
"creditsUsed": 1
}
}Receive instant notifications when analysis completes. Provide a webhookUrl in your request.
POST https://your-webhook-url.com/endpoint
Content-Type: application/json
X-Ansius-Signature: HMAC-SHA256 signature
X-Ansius-Request-Id: unique-request-id
{
"requestId": "unique-id",
"status": "completed",
"data": {
"matchScore": 87,
"maxScore": 100,
"analysis": { ... },
"categoryScores": { ... },
"matches": [ ... ]
},
"metadata": {
"processedAt": "2025-10-17T10:30:45Z",
"processingTime": 45000,
"creditsUsed": 1
}
}// Node.js example
const crypto = require('crypto');
function verifyWebhook(payload, signature, secret) {
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(JSON.stringify(payload))
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expectedSignature)
);
}Important: Always verify webhook signatures to ensure requests are from Hirewall API.
Rate limits are customized per partnership. Standard limits:
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 25
X-RateLimit-Reset: 1634467200When rate limit is exceeded, you'll receive a 429 Too Many Requests response with a Retry-After header.
{
"error": "Error message",
"code": "ERROR_CODE",
"statusCode": 400
}Specify the desired output language using ISO 639-1 codes in the options.language parameter.
+ 24 more languages supported. If not specified, defaults to English.