Create Submission
Create a new application submission in Nepex.
This endpoint accepts applicant and passport details and creates a new VISA submission.
Use the payload table below for field-level requirements and examples.
POST
/api/v1/platform/submissionsCreate Submission
Auth: API key (Bearer or x-api-key)
- Creates a **pending** submission you can complete and track through the usual Nepex workflows.
- Submission payment is processed from wallet balance of the account linked to the API key.
- On success, the wallet amount is deducted and submission is stored as paid.
- The API validates required fields and the selected visa before the submission is accepted.
- Initial status is **PENDING**; based on your workflow it can move to **PAID**.
- Passport and other sensitive fields are handled with appropriate validation and protection.
Payload Fields
| Field Name | Description | Data Type | Required | Example |
|---|---|---|---|---|
| firstName | Applicant first name. | string | Yes | Ram |
| lastName | Applicant last name. | string | Yes | Magar |
| applyingFrom | Country applicant is applying from. | string | Yes | Nepal |
| applyingTo | Destination country. | string | Yes | Indonesia |
| visaId | Visa identifier selected from visa metadata. | uuid | Yes | 3a3c2c49-2ac2-4b93-91cb-85f7c2c2a201 |
| gender | Applicant gender value accepted by Nepex. | string | Yes | MALE |
| phone | Primary phone number. | string | Yes | 9813123456 |
| Applicant email address. | string | Yes | ram@mail.com | |
| dob | Date of birth in ISO date format. | date (YYYY-MM-DD) | Yes | 1990-01-20 |
| birthPlace | Applicant place of birth. | string | Yes | Palpa |
| passportNo | Passport number. | string | Yes | 123456789 |
| passportIssueDate | Passport issue date. | date (YYYY-MM-DD) | Yes | 2010-01-20 |
| passportExpiryDate | Passport expiry date. | date (YYYY-MM-DD) | Yes | 2030-01-20 |
| passportIssuedPlace | Passport issued place. | string | Yes | Kathmandu |
| education | Education qualification. | string | Yes | Bachelor |
| occupation | Occupation. | string | Yes | Engineer |
| religion | Religion. | string | Yes | Hindu |
| permanentAddress | Permanent residential address. | string | Yes | Kathmandu |
| maritalStatus | Marital status. | string | Yes | SINGLE |
| arrivalDate | Planned arrival date in destination. | date (YYYY-MM-DD) | Yes | 2026-05-01 |
| photoUrl | Public URL to applicant photo. | string (url) | Yes | https://cdn.example.com/photo.jpg |
| passportImgUrl | Public URL to passport image. | string (url) | Yes | https://cdn.example.com/passport.jpg |
Request JSON Example
{
"firstName": "Ram",
"lastName": "Magar",
"applyingFrom": "Nepal",
"applyingTo": "Indonesia",
"visaId": "3a3c2c49-2ac2-4b93-91cb-85f7c2c2a201",
"gender": "MALE",
"phone": "9813123456",
"email": "ram@mail.com",
"dob": "1990-01-20",
"birthPlace": "Palpa",
"passportIssueDate": "2010-01-20",
"passportExpiryDate": "2030-01-20",
"passportNo": "123456789",
"passportIssuedPlace": "Kathmandu",
"occupation": "Engineer",
"education": "Bachelor",
"fatherName": "Hari",
"motherName": "Maya",
"emergencyContact": "9800000000",
"stayAddress": "Jakarta",
"stayContactNo": "+62-0000-0000",
"passportImgUrl": "https://cdn.example.com/passport.jpg",
"photoUrl": "https://cdn.example.com/photo.jpg",
"religion": "Hindu",
"permanentAddress": "Kathmandu",
"arrivalDate": "2026-05-01",
"visitReason": "Tourism",
"comingFrom": "Nepal",
"maritalStatus": "SINGLE"
}Response JSON Example
{
"status": true,
"statusCode": 201,
"result": {
"uuid": "submission-uuid",
"status": "PENDING",
"hasPaid": true
}
}Possible Errors
| Status Code | Error | When It Happens |
|---|---|---|
| 400 | Bad Request | Payload has validation errors. |
| 400 | Bad Request | Insufficient wallet balance/points for API-key user. |
| 401 | Unauthorized | Missing or invalid API key. |
| 403 | Forbidden | Key is not allowed for this environment or request origin. |
| 404 | Not Found | Referenced visa or lookup item not found. |
| 429 | Too Many Requests | Per-key rate limit exceeded. |
Code Samples
BASE_URL="https://api.nepextravels.com"
API_KEY="nxp_xxx"
cat > submission.json <<'JSON'
{
"firstName": "Ram",
"lastName": "Magar",
"applyingFrom": "Nepal",
"applyingTo": "Indonesia",
"visaId": "3a3c2c49-2ac2-4b93-91cb-85f7c2c2a201",
"gender": "MALE",
"phone": "9813123456",
"email": "ram@mail.com",
"dob": "1990-01-20",
"birthPlace": "Palpa",
"passportIssueDate": "2010-01-20",
"passportExpiryDate": "2030-01-20",
"passportNo": "123456789",
"passportIssuedPlace": "Kathmandu",
"occupation": "Engineer",
"education": "Bachelor",
"fatherName": "Hari",
"motherName": "Maya",
"emergencyContact": "9800000000",
"stayAddress": "Jakarta",
"stayContactNo": "+62-0000-0000",
"passportImgUrl": "https://cdn.example.com/passport.jpg",
"photoUrl": "https://cdn.example.com/photo.jpg",
"religion": "Hindu",
"permanentAddress": "Kathmandu",
"arrivalDate": "2026-05-01",
"visitReason": "Tourism",
"comingFrom": "Nepal",
"maritalStatus": "SINGLE"
}
JSON
response=$(curl -sS -w "\n%{http_code}" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d @submission.json \
"$BASE_URL/api/v1/platform/submissions")
status=$(echo "$response" | tail -n1)
body=$(echo "$response" | sed '$d')
case "$status" in
201) echo "Submission created and paid by wallet"; echo "$body" ;;
400) echo "Bad Request (payload/visaId/insufficient wallet)"; echo "$body" ;;
401) echo "Unauthorized API key" ;;
403) echo "Forbidden for key/origin/env" ;;
404) echo "Referenced resource not found" ;;
429) echo "Rate limit exceeded" ;;
*) echo "Unexpected error ($status): $body" ;;
esac