VISA INTELLIGENCE · V1
Determine visa requirements Traveler facts + one dated entry leg returns persisted conclusion and availability.
POST /api/v1/intelligence/determinations
Authorization Use a server-side API key with the listed grants and permitted resource access.
Request body travelerobject · required The traveler values for this request.Show object fields passportCountrystring · required ISO 3166-1 alpha-2 passport country.
passportTypestring · required Supports ordinary passports.
residenceCountrystring ISO country of residence.
legsarray · required Exactly one entry leg per determination.Show item fields referencestring Your identifier for this leg.
destinationCountrystring · required ISO destination country.
intentstring · required Confirmed intent code from the reference list.
arrivalDatestring · required Calendar date in YYYY-MM-DD format.
departureDatestring · required Calendar date in YYYY-MM-DD format.
transitContextstring · required entry
Response 201 Created
Returns the authorized resource or result for this operation. List results use items, nextCursor, and hasMore.
Behavior to account for This endpoint accepts one dated entry leg with an ordinary passport. Unsupported trip shapes must be rejected, not simplified.
Errors Authentication failures return 401 or 403. Inaccessible resources return 404. Business and idempotency conflicts return 409. Rate limits return 429 with retry guidance.
Error handling guide REQUEST API key
curl --request POST 'https://api.wincora.com/api/v1/intelligence/determinations' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Idempotency-Key: request-example-001' \
--header 'Content-Type: application/json' \
--data '{
"traveler": {
"passportCountry": "IN",
"passportType": "ordinary",
"residenceCountry": "US",
"heldAuthorizations": []
},
"legs": [
{
"reference": "outbound",
"destinationCountry": "FR",
"intent": "TOURISM",
"arrivalDate": "2026-11-10",
"departureDate": "2026-11-20",
"transitContext": "entry"
}
]
}' const response = await fetch ( 'https://api.wincora.com/api/v1/intelligence/determinations' , {
method: 'POST' ,
headers: {
"X-Api-Key" : process.env. WINCORA_API_KEY ,
"Idempotency-Key" : "request-example-001" ,
"Content-Type" : "application/json"
},
body: JSON . stringify ({
"traveler" : {
"passportCountry" : "IN" ,
"passportType" : "ordinary" ,
"residenceCountry" : "US" ,
"heldAuthorizations" : []
},
"legs" : [
{
"reference" : "outbound" ,
"destinationCountry" : "FR" ,
"intent" : "TOURISM" ,
"arrivalDate" : "2026-11-10" ,
"departureDate" : "2026-11-20" ,
"transitContext" : "entry"
}
]
})
});
if ( ! response.ok) throw new Error ( await response. text ());
const result = await response. json (); import os
import requests
response = requests.request(
'POST' ,
'https://api.wincora.com/api/v1/intelligence/determinations' ,
headers = {
"X-Api-Key" : os.environ[ "WINCORA_API_KEY" ],
"Idempotency-Key" : "request-example-001" ,
"Content-Type" : "application/json"
},
json = {
"traveler" : {
"passportCountry" : "IN" ,
"passportType" : "ordinary" ,
"residenceCountry" : "US" ,
"heldAuthorizations" : []
},
"legs" : [
{
"reference" : "outbound" ,
"destinationCountry" : "FR" ,
"intent" : "TOURISM" ,
"arrivalDate" : "2026-11-10" ,
"departureDate" : "2026-11-20" ,
"transitContext" : "entry"
}
]
},
timeout = 30 ,
)
response.raise_for_status()
result = response.json() RESPONSE EXAMPLE 201
{
"id" : "det_example" ,
"evaluatedAt" : "2026-09-23T15:00:00Z" ,
"visaConclusion" : {
"kind" : "undetermined" ,
"conditions" : [],
"requiresClarification" : false
},
"serviceAvailability" : {
"kind" : "undetermined" ,
"offers" : []
},
"knowledge" : {
"engineVersion" : "example-version" ,
"sourceAsOf" : null ,
"authorityStatus" : "unavailable" ,
"warnings" : [
"No authoritative determination is available for these inputs."
]
}
} Keep this API key on your server. Never embed it in browser or mobile code.