curl --request POST \
'https://wfa-team-tool-v1.bubbleapps.io/version-test/api/1.1/wf/rwa_create' \
--header "Authorization: Bearer $WFA_COMPANY_TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"purpose": "Work From Anywhere",
"seniority": "Low",
"roleType": "Other",
"citizenship": "Australia",
"destination": "Argentina",
"residency": "Australia",
"salesContracts": "Yes",
"pastTripsDuration": 0,
"legalRight": "No",
"benefitLocalMarket": "No",
"urgency": "1-3 months",
"numberHires": 5,
"startDate": "2026-11-01T00:00:00.000Z",
"endDate": "2026-11-10T00:00:00.000Z",
"workingDays": 5,
"employeeId": "STAFF-001"
}'
// Run on your server. Set WFA_COMPANY_TOKEN in its environment.
const response = await fetch('https://wfa-team-tool-v1.bubbleapps.io/version-test/api/1.1/wf/rwa_create', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.WFA_COMPANY_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"purpose": "Work From Anywhere",
"seniority": "Low",
"roleType": "Other",
"citizenship": "Australia",
"destination": "Argentina",
"residency": "Australia",
"salesContracts": "Yes",
"pastTripsDuration": 0,
"legalRight": "No",
"benefitLocalMarket": "No",
"urgency": "1-3 months",
"numberHires": 5,
"startDate": "2026-11-01T00:00:00.000Z",
"endDate": "2026-11-10T00:00:00.000Z",
"workingDays": 5,
"employeeId": "STAFF-001"
})
});
const result = await response.json();
// Check the JSON body as well as the HTTP status.
console.log(result);
# Run on your server. Set WFA_COMPANY_TOKEN in its environment.
import os
import requests
response = requests.post(
'https://wfa-team-tool-v1.bubbleapps.io/version-test/api/1.1/wf/rwa_create',
headers={
'Authorization': f"Bearer {os.environ['WFA_COMPANY_TOKEN']}",
'Content-Type': 'application/json',
},
json={
"purpose": "Work From Anywhere",
"seniority": "Low",
"roleType": "Other",
"citizenship": "Australia",
"destination": "Argentina",
"residency": "Australia",
"salesContracts": "Yes",
"pastTripsDuration": 0,
"legalRight": "No",
"benefitLocalMarket": "No",
"urgency": "1-3 months",
"numberHires": 5,
"startDate": "2026-11-01T00:00:00.000Z",
"endDate": "2026-11-10T00:00:00.000Z",
"workingDays": 5,
"employeeId": "STAFF-001"
},
timeout=45,
)
# Check the JSON body as well as the HTTP status.
print(response.json())
{
"status": "success",
"response": {
"redirect_url": "https://www.app.wfa.team/redirect/YOUR_ASSESSMENT_ID",
"assessment_id": "YOUR_ASSESSMENT_ID"
}
}
{
"status": "error",
"success": false,
"message": "Invalid Auth"
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "employeeId",
"message": "Employee ID is missing"
}
]
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "destination",
"message": "Incorrect Country please review documentation"
}
]
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "pastTripsDuration",
"message": "Past Trip Duration is missing"
}
]
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "numberHires",
"message": "Number Hires is missing"
}
]
}
API reference
Create an assessment
Submit trip or hiring details and receive an assessment identifier.
POST
/
version-test
/
api
/
1.1
/
wf
/
rwa_create
curl --request POST \
'https://wfa-team-tool-v1.bubbleapps.io/version-test/api/1.1/wf/rwa_create' \
--header "Authorization: Bearer $WFA_COMPANY_TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"purpose": "Work From Anywhere",
"seniority": "Low",
"roleType": "Other",
"citizenship": "Australia",
"destination": "Argentina",
"residency": "Australia",
"salesContracts": "Yes",
"pastTripsDuration": 0,
"legalRight": "No",
"benefitLocalMarket": "No",
"urgency": "1-3 months",
"numberHires": 5,
"startDate": "2026-11-01T00:00:00.000Z",
"endDate": "2026-11-10T00:00:00.000Z",
"workingDays": 5,
"employeeId": "STAFF-001"
}'
// Run on your server. Set WFA_COMPANY_TOKEN in its environment.
const response = await fetch('https://wfa-team-tool-v1.bubbleapps.io/version-test/api/1.1/wf/rwa_create', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.WFA_COMPANY_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"purpose": "Work From Anywhere",
"seniority": "Low",
"roleType": "Other",
"citizenship": "Australia",
"destination": "Argentina",
"residency": "Australia",
"salesContracts": "Yes",
"pastTripsDuration": 0,
"legalRight": "No",
"benefitLocalMarket": "No",
"urgency": "1-3 months",
"numberHires": 5,
"startDate": "2026-11-01T00:00:00.000Z",
"endDate": "2026-11-10T00:00:00.000Z",
"workingDays": 5,
"employeeId": "STAFF-001"
})
});
const result = await response.json();
// Check the JSON body as well as the HTTP status.
console.log(result);
# Run on your server. Set WFA_COMPANY_TOKEN in its environment.
import os
import requests
response = requests.post(
'https://wfa-team-tool-v1.bubbleapps.io/version-test/api/1.1/wf/rwa_create',
headers={
'Authorization': f"Bearer {os.environ['WFA_COMPANY_TOKEN']}",
'Content-Type': 'application/json',
},
json={
"purpose": "Work From Anywhere",
"seniority": "Low",
"roleType": "Other",
"citizenship": "Australia",
"destination": "Argentina",
"residency": "Australia",
"salesContracts": "Yes",
"pastTripsDuration": 0,
"legalRight": "No",
"benefitLocalMarket": "No",
"urgency": "1-3 months",
"numberHires": 5,
"startDate": "2026-11-01T00:00:00.000Z",
"endDate": "2026-11-10T00:00:00.000Z",
"workingDays": 5,
"employeeId": "STAFF-001"
},
timeout=45,
)
# Check the JSON body as well as the HTTP status.
print(response.json())
{
"status": "success",
"response": {
"redirect_url": "https://www.app.wfa.team/redirect/YOUR_ASSESSMENT_ID",
"assessment_id": "YOUR_ASSESSMENT_ID"
}
}
{
"status": "error",
"success": false,
"message": "Invalid Auth"
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "employeeId",
"message": "Employee ID is missing"
}
]
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "destination",
"message": "Incorrect Country please review documentation"
}
]
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "pastTripsDuration",
"message": "Past Trip Duration is missing"
}
]
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "numberHires",
"message": "Number Hires is missing"
}
]
}
POST /rwa_create
Legal entity is derived from your company settings. Use the exact input options and country names.
Authorization
string
required
Company Bearer token. Keep it on your server.
Body parameters
string
required
Required.
Work From Anywhere or Hire From Anywhere.string
required
Required.
Low, Mid or Senior.string
required
Required. See role types.
string
required
Required. Exact name from the citizenship list.
string
required
Required. Exact name marked as supported for destination/residency in the country reference.
string
required
Required. Employee employment/residency country; see the country reference.
string
required
Required.
Yes or No.integer
Send a number, including
0 when there are no prior trips. See prior trip duration.string
required
Required.
Yes, No or Unsure.string
required
Required.
Yes or No.string
Required for Hire From Anywhere. See urgency values.
integer
Required for Hire From Anywhere. Anticipated hires over the next two years.
string
required
Start date in ISO 8601 format.
string
required
End date in ISO 8601 format; must be on or after the start.
integer
Working days within the trip dates.
string
required
Your external employee Staff ID.
string
Optional at creation. Your external compliance Staff ID. It is checked for an activated company account when supplied to the update endpoint.
string
External manager Staff ID.
Error responses
Invalid company authorization returnsmessage: "Invalid Auth". Field validation returns errors[] with a field and message; the workflow checks fields in order and stops at the first failing check.
| Field | When returned | Message or correction |
|---|---|---|
employeeId | Missing employee Staff ID | Employee ID is missing |
purpose | Unsupported purpose | Use a value from input options. |
seniority | Unsupported seniority | Use Low, Mid or Senior. |
roleType | Unsupported role type | Use a value from input options. |
citizenship | Unrecognised country | Incorrect Country please review documentation |
destination | Unrecognised destination | Incorrect Country please review documentation |
residency | Unrecognised residency | Incorrect Country please review documentation |
salesContracts | Unsupported selection | Use Yes or No. |
pastTripsDuration | Missing for Work From Anywhere | Past Trip Duration is missing |
legalRight | Unsupported selection | Use Yes, No or Unsure. |
benefitLocalMarket | Unsupported selection | Use Yes or No. |
numberHires | Missing for Hire From Anywhere | Number Hires is missing |
urgency | Unsupported or missing for Hire From Anywhere | Use a value from input options. |
Response
string
Save this identifier for retrieve and update calls.
string
URL of the WFA report.
Check the JSON response as well as HTTP status. HTTP 200 can contain an API error. If a request times out, check the assessment before retrying. Retry deduplication is not verified.
curl --request POST \
'https://wfa-team-tool-v1.bubbleapps.io/version-test/api/1.1/wf/rwa_create' \
--header "Authorization: Bearer $WFA_COMPANY_TOKEN" \
--header 'Content-Type: application/json' \
--data '{
"purpose": "Work From Anywhere",
"seniority": "Low",
"roleType": "Other",
"citizenship": "Australia",
"destination": "Argentina",
"residency": "Australia",
"salesContracts": "Yes",
"pastTripsDuration": 0,
"legalRight": "No",
"benefitLocalMarket": "No",
"urgency": "1-3 months",
"numberHires": 5,
"startDate": "2026-11-01T00:00:00.000Z",
"endDate": "2026-11-10T00:00:00.000Z",
"workingDays": 5,
"employeeId": "STAFF-001"
}'
// Run on your server. Set WFA_COMPANY_TOKEN in its environment.
const response = await fetch('https://wfa-team-tool-v1.bubbleapps.io/version-test/api/1.1/wf/rwa_create', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.WFA_COMPANY_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
"purpose": "Work From Anywhere",
"seniority": "Low",
"roleType": "Other",
"citizenship": "Australia",
"destination": "Argentina",
"residency": "Australia",
"salesContracts": "Yes",
"pastTripsDuration": 0,
"legalRight": "No",
"benefitLocalMarket": "No",
"urgency": "1-3 months",
"numberHires": 5,
"startDate": "2026-11-01T00:00:00.000Z",
"endDate": "2026-11-10T00:00:00.000Z",
"workingDays": 5,
"employeeId": "STAFF-001"
})
});
const result = await response.json();
// Check the JSON body as well as the HTTP status.
console.log(result);
# Run on your server. Set WFA_COMPANY_TOKEN in its environment.
import os
import requests
response = requests.post(
'https://wfa-team-tool-v1.bubbleapps.io/version-test/api/1.1/wf/rwa_create',
headers={
'Authorization': f"Bearer {os.environ['WFA_COMPANY_TOKEN']}",
'Content-Type': 'application/json',
},
json={
"purpose": "Work From Anywhere",
"seniority": "Low",
"roleType": "Other",
"citizenship": "Australia",
"destination": "Argentina",
"residency": "Australia",
"salesContracts": "Yes",
"pastTripsDuration": 0,
"legalRight": "No",
"benefitLocalMarket": "No",
"urgency": "1-3 months",
"numberHires": 5,
"startDate": "2026-11-01T00:00:00.000Z",
"endDate": "2026-11-10T00:00:00.000Z",
"workingDays": 5,
"employeeId": "STAFF-001"
},
timeout=45,
)
# Check the JSON body as well as the HTTP status.
print(response.json())
{
"status": "success",
"response": {
"redirect_url": "https://www.app.wfa.team/redirect/YOUR_ASSESSMENT_ID",
"assessment_id": "YOUR_ASSESSMENT_ID"
}
}
{
"status": "error",
"success": false,
"message": "Invalid Auth"
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "employeeId",
"message": "Employee ID is missing"
}
]
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "destination",
"message": "Incorrect Country please review documentation"
}
]
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "pastTripsDuration",
"message": "Past Trip Duration is missing"
}
]
}
{
"status": "error",
"success": false,
"errors": [
{
"field": "numberHires",
"message": "Number Hires is missing"
}
]
}
.avif?fit=max&auto=format&n=D14pPx7nwaebT2G5&q=85&s=4c6d67fe3600ae0af1af440b290c4e21)