UAN Advanced (PDF)
Workforce & AssetsEndpoint
POST
https://app.emver.io/api/sandbox/v1/uan-advanced-pdf
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json
Request parameters
| Field | Type | Description |
|---|---|---|
uan_advanced_uan_number
required
|
string | UAN Number |
Example request
cURL
curl -X POST https://app.emver.io/api/sandbox/v1/uan-advanced-pdf \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"uan_advanced_uan_number": "string"
}'
import requests
response = requests.post(
"https://app.emver.io/api/sandbox/v1/uan-advanced-pdf",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Accept": "application/json",
},
json={
"uan_advanced_uan_number": "string"
},
timeout=60,
)
response.raise_for_status()
data = response.json()
const response = await fetch("https://app.emver.io/api/sandbox/v1/uan-advanced-pdf", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
"Accept": "application/json",
},
body: JSON.stringify({
"uan_advanced_uan_number": "string"
}),
});
const data = await response.json();
$response = Http::withToken('YOUR_API_KEY')
->acceptJson()
->post('https://app.emver.io/api/sandbox/v1/uan-advanced-pdf', {
"uan_advanced_uan_number": "string"
});
$data = $response->json();
Replace YOUR_API_KEY and the placeholder values. Use the switch above to see production URLs.
Response
Structure · 200
{
"status": INTEGER,
"message": STRING,
"report_url": STRING,
"report": {
"format": STRING,
"mime": STRING,
"filename": STRING,
"size": INTEGER,
"url": STRING,
"expires_at": STRING,
"base64": STRING
}
}
Example · 200
{
"status": 200,
"message": "string",
"report_url": "string",
"report": {
"format": "string",
"mime": "string",
"filename": "string",
"size": 200,
"url": "string",
"expires_at": "string",
"base64": "string"
}
}
This API answers with a PDF document. report.base64 is the file itself — no second call is needed.
report_url is optional: GET it with the same API key to download the file (raw bytes, not JSON) at any time within 72 hours (report.expires_at); after that it answers 410.
A negative outcome (no record) is a plain {status, message} body without a report block.
Error · 4xx / 5xx
{
"status": INTEGER,
"message": STRING
}
See Errors & status codes for what each status means and which calls are billed.