Application
In Jobylon every candidate can be represented by one or more applications, where every application relates to a job.
To run the examples:
export HOST='https://staging.jobylon.com'
export API_VERSION='p1'
export APP_ID='0123456789123456'
export APP_KEY='AbC123XyZ'Basic example:
Please note the trailing slash in the API endpoint.
# Request
curl -i \
-X POST "$HOST/$API_VERSION/applications/" \
-H "X-App-Id: $APP_ID" \
-H "X-App-Key: $APP_KEY" \
-H "Content-Type: application/json" \
-d '{
"job_id": 123456789,
"first_name": "Kalle",
"last_name": "Kula",
"email": "[email protected]",
"phone": "+4670-123456789",
"phone_number": "+46766112088",
"ln_url": "https://www.linkedin.com/in/kalle-kula-123a4567",
"cv_url": "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf",
"message": "Message from the applicant...",
"source_type": "applied",
"source_json": {
"partner_name": "best-source",
"message": "Some other message...",
"referrer": {
"name": "Kella Kalu",
"email": "[email protected]",
"phone": "+46123456789",
"avatar": "https://gravatar.com/avatar/ce757a5d51e6285434134e7b6c96ab86?s=200&d=robohash&r=g"
},
"questions": [
{
"order": 1,
"question": "Why should we hire the person?",
"question_type": "text",
"answer": "Because she is great!"
}, {
"order": 2,
"question": "Rank the skills",
"question_type": "range",
"question_args": {
"min": 1,
"max": 5,
"step": 1,
"unit": "star"
},
"answer": 4
}, {
"order": 3,
"question": "Where can they be located?",
"question_type": "select-multiple",
"question_alternatives": [
"Avesta",
"London",
"Moskva",
"New York",
"Paris",
"Stockholm"
],
"answer": [
"London",
"New York",
"Paris",
"Stockholm"
]
}, {
"order": 4,
"question": "Do they have a EU work permit?",
"question_type": "select-one",
"answer": "yes"
}
]
},
"original_referrer": "https://bestreferrals.com/?utm_source=google&utm_medium=cpc&utm_term=earn_referrals",
"ab_test": "ABTestId",
"answers": [
{
"question_id": 1,
"text": [
"I am ready to start in the beggining of next month."
]
},
{
"question_id": 2,
"text": [
"Swedish",
"English",
"Norwegian"
]
},
{
"question_id": 3,
"text": ["https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"]
}
],
"status_id": 1
}'# Response
Status Code: 201 Created
Content-Type: application/json
{'id': 123}Example using a local JSON file:
# Request
curl -i \
-X POST "$HOST/$API_VERSION/applications/" \
-H "X-App-Id: $APP_ID" \
-H "X-App-Key: $APP_KEY" \
-H "Content-Type: application/json"
-d @<PATH-TO-FILE>Example with files attached (multipart/form-data):
# Request
curl -i \
-X POST "$HOST/$API_VERSION/applications/" \
-H "X-App-Id: $APP_ID" \
-H "X-App-Key: $APP_KEY" \
-F "job_id=55" \
-F "first_name=Kalle" \
-F "last_name=Kula" \
-F "[email protected]" \
-F "phone=+4670-123456789" \
-F "message=Message from the applicant..." \
-F "source_type=applied" \
-F "source_json={
\"partner_name\": \"best-source\",
\"message\": \"Some other message...\"
}" \
-F "[email protected]" \
-F "cover_letter=@cover_letter.pdf" \
-F "other_1=@other_1.pdf" \
-F "other_2=@other_2.pdf" \
-F "other_3=@other_3.pdf" \
-F "other_4=@other_4.pdf" \
-F "other_5=@other_5.pdf"Create
POST /applications/
Query String Parameters
None
Request Payload
Name | Type | Mandatory? | Description |
|---|---|---|---|
job_id | integer | yes | Job that applicant applied to |
first_name | string | yes | Applicant first name |
last_name | string | yes | Applicant last name |
string | | Applicant email | |
phone | string | | Applicant phone (non-validated) |
phone_number | string | | Applicant phone, must be in E.164 format |
ln_url | URL | | Applicant LinkedIn URL (will be validated) |
message | string | | Message from the applicant |
source_type | string | yes | Source type (applied/applied-silent/recommended/sourced). If set to applied, a thank-you email will be sent to the applicant. |
source_json | object | yes | Additional source data (partner dependent, but using the data from the example will be nicely styled in Jobylon. |
cv | file | | Application file (supported using multipart/form-data). Filename max length is 100 characters. |
cv_url | URL | | URL to the file to be downloaded and assigned to the field |
cover_letter | file | | Application file (supported using multipart/form-data). Filename max length is 100 characters. |
cover_letter_url | URL | | URL to the file to be downloaded and assigned to the field |
other_1 | file | | Application file (supported using multipart/form-data). Filename max length is 100 characters. |
other_1_url | URL | | URL to the file to be downloaded and assigned to the field |
other_2 | file | | Application file (supported using multipart/form-data). Filename max length is 100 characters. |
other_2_url | URL | | URL to the file to be downloaded and assigned to the field |
other_3 | file | | Application file (supported using multipart/form-data). Filename max length is 100 characters. |
other_3_url | URL | | URL to the file to be downloaded and assigned to the field |
other_4 | file | | Application file (supported using multipart/form-data). Filename max length is 100 characters. |
other_4_url | URL | | URL to the file to be downloaded and assigned to the field |
other_5 | file | | Application file (supported using multipart/form-data). Filename max length is 100 characters. |
other_5_url | URL | | URL to the file to be downloaded and assigned to the field |
ab_test | string | | A unique identifier used for A/B testing |
original_referrer | string | | Value used to keep track on the application origin (used in analytics) |
answers | array | | Array of answers to the job questions |
status_id | integer | | ID of the application status |
Answers Object
[
{
"question_id": 1,
"text": [
"Driver's license category B",
"Driver's license category D"
]
}
]question_id | text |
|---|---|
ID of the question | List of answers to the question. Some questions support multiple choices. If the answer is a file, a URL must be provided in text list. Jobylon will download the file. |
Response
Name | Type | Description |
|---|---|---|
id | integer | Application ID |
Exceptions
Status | Description |
|---|---|
400 | Bad request, job_id that app doesn't have access to. |
403 | Permission denied |
405 | Method not supported |
Controlling the displayed application source

When creating an application, you can control how the source is displayed to recruiters in the Jobylon UI using the source_type, source_json, and original_referrer fields.
The "Source" label is resolved in this priority order:
- source_json.referrer.domain - if set, this always wins
- original_referrer (a full URL) - the domain is extracted automatically if #1 is not set
- source_json.tracking_tags.utm_source - used only if both #1 and #2 are empty
- Otherwise the label shows "None"
Recommended: send an explicit domain
{
"source_type": "applied-silent",
"source_json": {
"referrer": {
"domain": "linkedin.com"
}
}
}Alternative: send a referrer URL and let Jobylon extract the domain
{
"source_type": "applied-silent",
"original_referrer": "https://www.linkedin.com/jobs/view/12345"
}Fallback: UTM source (only used if the above are both empty)
{
"source_json": {
"tracking_tags": {
"utm_source": "linkedin"
}
}
}Retrieve
A PushAPI Partner can only retrieve applications that have been created by that Partner. Applications created by another Partner or created in Jobylon using other means will not be available.
GET /applications/<application_id>
Query String Parameters
None
Response
Name | Type | Description |
|---|---|---|
string | Applicant email | |
phone | string | Applicant phone (non-validated) |
phone_number | string | Applicant phone, must be in E.164 format |
status_id | integer | Status ID |
Exceptions
Status | Description |
|---|---|
403 | Permission denied |
404 | Application not found |
Update
A PushAPI Partner can only update applications that have been created by that Partner. Applications created by another Partner or created in Jobylon using other means will not be available.
PUT /applications/<application_id>/
PATCH /applications/<application_id>/
Query String Parameters
None
Request Payload
email, phone, phone_number and status_id are the only fields that can be updated
Name | Type | Description |
|---|---|---|
string | Applicant email | |
phone | string | Applicant phone (non-validated) |
phone_number | string | Applicant phone, must be in E.164 format |
status_id | integer | Status ID |
Response
Name | Type | Description |
|---|---|---|
string | Applicant email | |
phone | string | Applicant phone (non-validated) |
phone_number | string | Applicant phone, must be in E.164 format |
status_id | integer | Status ID |
Exceptions
Status | Description |
|---|---|
400 | Bad request. The status ID does not exist |
403 | Permission denied |
404 | Application not found |