> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.deel.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.deel.com/_mcp/server.

# Fetch Project Assignment Checkin Questionnaire Data

GET https://api.letsdeel.com/rest/eor/contracts/{contract_id}/project-assignment/checkin

Returns the checkin questionnaire for a project assignment, including all sections and questions required for completion. The optional version parameter ensures the fetched questionnaire matches an expected version before it is rendered or submitted.

 **Token scopes**: `contracts:read`

Reference: https://developer.deel.com/api/eor-endpoints/eor-project-assignment/get-project-assignment-checkin

## Authentication

- `Authorization` header (bearer token, required) — ## Authentication The Deel API uses bearer tokens to authenticate requests. All API calls must be made over HTTPS — calls over plain HTTP or without authentication will fail. ```curl curl -X GET 'https://api.letsdeel.com/rest/v2/contracts' \ -H 'Authorization: Bearer YOUR-TOKEN-HERE' ``` [Learn more about authentication](/api/authentication)
- `Authorization` header (bearer token, required) — Standard OAuth2 security scheme based on https://swagger.io/docs/specification/authentication/

## Servers

- `https://api.letsdeel.com/rest` (Production, default)
- `https://api-staging.letsdeel.com/rest` (Demo)

## Request

### Path parameters

- `contract_id` (string, required) — The unique identifier of the contract.

### Query parameters

- `version` (string, optional) — This field is to ensure that the latest version of the project assignment checkin matches the version received from the webhook. If it is not sent, the version validation is not performed. If it is sent, it is checked whether the current version is equal to the version sent; if not, a 409 error occurs, otherwise, the data is returned.

## Response

### 200

Successful response containing form configuration data.

- `data` (EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaData, required)

## Errors

### 400 Bad Request Error

Operation failed.

- `errors` (list of EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaErrorsItems, optional)

### 401 Unauthorized Error

Operation failed.

- `request` (ApiErrorRequest, optional)
- `errors` (list of ApiError, optional)

### 403 Forbidden Error

Operation failed.

- `request` (ApiErrorRequest, optional)
- `errors` (list of ApiError, optional)

### 404 Not Found Error

Operation failed.

- `request` (ApiErrorRequest, optional)
- `errors` (list of ApiError, optional)

### 409 Conflict Error

The requested version of the document mismatch the current version.

- `errors` (list of EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaErrorsItems, required)

### 500 Internal Server Error

Operation failed.

- `errors` (list of EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaErrorsItems, optional)

## Types

### EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaData

- `id` (string, required) — Unique identifier of the resource
- `sections` (list of EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaDataSectionsItems, required) — Sections of questions
- `created_at` (string, required) — Timestamp indicating when the resource was created (ISO 8601).
- `updated_at` (string, required) — Timestamp indicating when the resource was last updated (ISO 8601).

### EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaErrorsItems

- `code` (string, optional) — Machine-readable error code
- `message` (string, optional) — Human-readable explanation of the error

### ApiErrorRequest

- `method` (string, optional) — The HTTP method of the failed request
- `url` (string, optional) — The relative URL of the failed request
- `status` (double, optional) — The status code of the response
- `api_req_id` (string, optional) — The request ID of the failed request
- `docs` (string, optional) — A link to the official documentation for the requested endpoint resource
- `source` (string, optional) — The source handler which produced the returned error
- `code` (double, optional) — The code of the source handler which produced the returned error

### ApiError

- `message` (string, optional) — A description of the returned error
- `path` (string, optional) — The JSON path where input validation failed

### EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaDataSectionsItems

- `title` (string, required) — Title of the section.
- `questions` (list of EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaDataSectionsItemsQuestionsItems, required) — List of questions within the section.
- `subtitle` (string, optional) — Additional information shown at the top of the section.

### EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaDataSectionsItemsQuestionsItems

- `key` (string, required) — Unique key identifier for the question.
- `type` (enum, required) — Type of the question.
  - Allowed values: `FreeText`, `Paragraph`, `SingleSelection`, `MultiSelection`, `Address`, `PhoneNumber`, `DocumentUpload`, `Number`, `Dropdown`, `DatePicker`, `Email`
- `title` (string, required) — Title of the question.
- `options` (list of EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaDataSectionsItemsQuestionsItemsOptionsItems, optional, nullable) — List of selectable options for selection-type questions. Value may be of any type.
- `is_required` (boolean, optional) — Indicates if the question is required.
- `default_value` (EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaDataSectionsItemsQuestionsItemsDefaultValue, optional) — Default value to pre-fill in the form.
- `is_only_digits` (boolean, optional) — Restricts input to numeric characters only, for FreeText questions.

### EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaDataSectionsItemsQuestionsItemsOptionsItems

- `title` (string, optional) — Display text for the option.
- `value` (string, optional, nullable) — Value associated with the option.

### EorContractsContractIdProjectAssignmentCheckinGetResponsesContentApplicationJsonSchemaDataSectionsItemsQuestionsItemsDefaultValue

Default value to pre-fill in the form.

## Examples

**Response**

```json
{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440004",
    "sections": [
      {
        "title": "Section Title",
        "questions": [
          {
            "key": "questionExampleId",
            "type": "Dropdown",
            "title": "Please  confirm, that you have read through the Employment Compliance Notice above",
            "options": [
              {
                "title": "Yes",
                "value": "Yes"
              },
              {
                "title": "No",
                "value": "No"
              }
            ],
            "is_required": true,
            "default_value": 40,
            "is_only_digits": false
          }
        ],
        "sections": [
          {
            "questions": [
              {
                "is_required": true,
                "key": "questionKey",
                "options": [
                  {
                    "title": "Yes, I confirm",
                    "value": "Yes, I confirm"
                  }
                ],
                "title": "Question Title",
                "type": "SingleSelection"
              }
            ],
            "subtitle": "Section Subtitle",
            "title": "Section Title"
          }
        ]
      }
    ],
    "created_at": "2025-02-14T12:34:56.000Z",
    "updated_at": "2025-02-15T09:12:34.000Z"
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.letsdeel.com/rest/eor/contracts/m623fez/project-assignment/checkin"

querystring = {"version":"e374540fc9a92390f9a1"}

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api.letsdeel.com/rest/eor/contracts/m623fez/project-assignment/checkin?version=e374540fc9a92390f9a1';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.letsdeel.com/rest/eor/contracts/m623fez/project-assignment/checkin?version=e374540fc9a92390f9a1"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.letsdeel.com/rest/eor/contracts/m623fez/project-assignment/checkin?version=e374540fc9a92390f9a1")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.letsdeel.com/rest/eor/contracts/m623fez/project-assignment/checkin?version=e374540fc9a92390f9a1")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.letsdeel.com/rest/eor/contracts/m623fez/project-assignment/checkin?version=e374540fc9a92390f9a1', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.letsdeel.com/rest/eor/contracts/m623fez/project-assignment/checkin?version=e374540fc9a92390f9a1");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.letsdeel.com/rest/eor/contracts/m623fez/project-assignment/checkin?version=e374540fc9a92390f9a1")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```