---
title: Application
slug: application
docTags: 
createdAt: 2025-08-08T10:35:32.102Z
---

In Jobylon every candidate can be represented by one or more
applications, where every application relates to a job.

To run the examples:

```text
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.

```shell
# 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": "kalle@kula.se",
        "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": "kello@kalu.se",
                "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
    }'
```

```shell
# Response
Status Code: 201 Created
Content-Type: application/json

{'id': 123}
```

Example using a local JSON file:

```shell

# 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):

```shell

# 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=kalle@kula.se" \
    -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 "cv=@cv.pdf" \
    -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                                                                                                           |
| email              | 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](https://developer.jobylon.com/feed-api#ewiO3)                                         |
| status\_id         | integer |            | ID of the application [status](https://developer.jobylon.com/feed-api#JCxdK)                                                  |

**Answers Object**

```shell
[
    {
        "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.<br />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



![](https://api.archbee.com/api/optimize/Bcs_q55fdIV24__dfDcYJ/laLWu7fMDnjNVpzyHcd13_image.png)

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:

1. `source_json.referrer.domain` - if set, this always wins
2. `original_referrer` (a full URL) - the domain is extracted automatically if #1 is not set
3. `source_json.tracking_tags.utm_source` - used only if both #1 and #2 are empty
4. Otherwise the label shows "None"



**Recommended:** send an explicit domain

```shell
{
  "source_type": "applied-silent",
  "source_json": {
    "referrer": {
      "domain": "linkedin.com"
    }
  }
}
```

﻿﻿**Alternative**: send a referrer URL and let Jobylon extract the domain

```shell
{
  "source_type": "applied-silent",
  "original_referrer": "https://www.linkedin.com/jobs/view/12345"
}
```

**Fallback**: UTM source (only used if the above are both empty)

```shell
{
  "source_json": {
    "tracking_tags": {
      "utm_source": "linkedin"
    }
  }
}
```

## Retrieve

:::hint{type="danger"}
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                              |
| ------------- | ------- | ---------------------------------------- |
| email         | 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

:::hint{type="danger"}
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** <u>are the only fields that can be updated</u>

| Name          | Type    | Description                              |
| ------------- | ------- | ---------------------------------------- |
| email         | 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                              |
| ------------- | ------- | ---------------------------------------- |
| email         | 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                     |

