Document

Last updated: 26 Jun 2025

This document describes the endpoints, data contracts and operations that can be used to upload and retrieve documents in the PageUp system.


Contents

  1. Overview
  2. Requesting API Credentials
  3. Before you begin
  4. URL format
  5. Common workflows

Overview

The document API enables systems to integrate with PageUp for the common purpose of obtaining recruitment documents (files) from PageUp or uploading recruitment documents (files) to PageUp.


Requesting API Credentials

For information on how to obtain API credentials and to start integrating with the API, please visit the Getting started page.


Before you begin

To begin using any of the APIs, there are a few things that you will need:

  1. Authentication credentials for the particular PageUp Customer/Client
  2. You will need a valid (oAuth) JWT token to authorize yourself to access the end points in this API section. When requesting the bearer token with the authentication service please ensure you include the appropriate scope in the authentication request. Multiple scopes may be requested by specifying them as space separated list. The available scopes for the endpoints in this page are:
  • Public.Document.Read
  • Public.Document.Write

See the implementation notes under each endpoint below to see which scope it's needed for each of the endpoint.

Technical

  • API's are secured using oAuth (client credentials grant flow)
  • Integrators must handle common errors and support surfacing of error messages back to the user when a request is not successful
  • Integrators must log all relevant errors and be able to provide a copy to PageUp to assist with troubleshooting when required
Notes:
  • Client ID and Client secret will be different per environment (i.e. UAT and LIVE)
  • The oAuth token has an expiry period of 300 seconds.

Monitoring

  • Integrators must have in place monitoring processes to alert on failed requests, updates, retries or any other mechanisms.

URL format

Calling the Document API endpoints follow the following root URI format:

https://<environment>.<dataCentreId>.pageuppeople.com/v3/<tenantId>/recruitment/document/...

The following values are to be used in the above URI. Note that authentication credentials used in your API calls must match these values.

  • environment - Corresponds to the environment to call. Specify 'api' for Production or 'apiuat' for the UAT environment.
  • dataCentreId - Corresponds to the data centre to connect to (e.g. dc2)
  • tenantId - Corresponds to the organisation's tenant Id (e.g. 218,1234, etc.) The following list specifies the data centres used by PageUp:
Region dataCentreId
AUS dc2
UK / EMEA dc3
US dc4
SEA dc5

Please contact PageUp representative to find out the data centre and organisation's tenant Id if not known.

Example - connect to the 218 production environment on dc2

https://api.dc2.pageuppeople.com/v3/218/recruitment/document/1234

Example - connect to the 218 development or testing environment on dc2

https://apiuat.dc2.pageuppeople.com/v3/218/recruitment/document/1234

Common workflows

A. Uploading a recruitment document to PageUp

1. GET /document/prepareTempDirectUpload

Take note of the following values, as these would be used in the next steps:

  • url - Amazon S3 presigned URL which you would use to upload your file to
  • physicalFile - A randomly generated file name which would be used to name the uploaded file to Amazon S3. This is necessary to ensure no file name collisions occur within S3.
  • headers - headers that you would need to include in your API call to POST /document/moveFromTemp in step 3. The querystring assigning a value for the filename is required. For example, if you are uploading a file named test.txt, the URI you use would be:
https://api.dc2.pageuppeople.com/v3/000/recruitment/document/prepareTempDirectUpload?filename=test.txt

Calling this endpoint will return a response that looks like the following:

{
  "url": "https://pageup-storage-temp-au.s3.ap-southeast-2.amazonaws.com/543/Document/5b7f3246-12c5-495d-b5ed-77e257808d3e.txt?X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEHEaDmFwLXNvdXRoZWFzdC0yIkcwRQIgEY8n3TCVyXv0IlPxJU%2FbLVSVfBBNvj2dMRlEuirW6T8CIQD%2FMCfbFZX9HrVZ5hHWrBT%2BlQvNPo6MnHyU%2FEHzaQevfCrMBQhaEAUaDDU3MjAyMjYzOTM4OSIMFi09RsEQFtpUrTgBKqkFubegLgG9gfYqgAT46wGA6yx5WGD%2FiWVj7WjNT3R7JAjv%2Bj2YM7OiIXB117f6SnQ4TmLL7YW9751oX%2BDeVdOr%2FUONZuzVMJKHx%2FRYerlHrHMQP7VD8yXiPAQ18%2B6RsTDwyoRp33WkZP%2BEIm76YJaGGXtzIvncWpLe%2FRaTgAqq5Pfy5td9z0yV5T%2BFXibCJCEzbdf5aEmOGWrkA7HcP72CUQ3tJ5RKadXLI8q5GeJ9PhQKL%2BVJxOg%2B9XshbRrVIpg8gsLPJcX7jpvyqbTILhlb%2FlwJumrFealPV72UpckxHpN9mYsL5t33yaTAxsirqZDwFjFQXZqfT0k0TZSnz1jghsylxkxwsmeagHe8frKloRnogD9AGzbf0RdkNrna%2Fn6eoE0gjveaJnPg6K%2FXfcZLggJjctCLnx8OWBMyvHRxbqMKn14f6QstF1S3SRrlSjWbZizdyPzozojnAYKF%2BnYuYVITeWjnnS48WvXNaqpuRgfSjf5RB4ZtNe3S4Hezjy9IJfJjLwpRp3zVJZPI08GJkWcweco6nkF8iBaiGsA5AIv%2FPsue9dFRPyUP7rjfEJ9icTYmnUObTznmecpszzIGCLHfSUMWM0rJv5MaL787Pl1ze7x%2F5XLqWp%2FMxBYt7Rog3z%2BEnFFRbZgvZwmIjtXxKKD5vE9UNru06Qf2qsmd4uYoLd%2FmXJUmZYv4Oa7hcRr1njNfzICcBOGiUjQj%2B1%2BMkTcnJOtrA0AsbOQbPrNhcGNZAkJgfisMgb%2BGSMI8RlsIwBll1lEamLjhxu2Qjp0o0Rg03uqlYxWgYk0yHMhvQkSATI61ZsxTQ9S5OVElebTa31C9%2BrJ5e9lzWA25UKS83dLztkno%2FgnsI6iaMI1fyZvTcc4E9CyS7v09BoIE3Js6RN8ao%2B2xj%2FiuML%2Bwv8IGOrEBuaM23WStn%2FUeNG5OzAY2LnZ%2Bcw6ivqLT3grKBL%2Bl3Ti3MZ%2FeaoXoRkpNUiFR1B6ngHPYrw1SfQy7X6MV7%2B3vYTai%2FnTgXXwbqW05NIbmiIR15whOkACLN8tuERfoQUb8Vj2iiV6yUf1eJBxcwfaKb8mttd9JvdARMowU%2FHp2A2wPE2dlN%2BSpWEnp44XfpHluXiujwxgzI6vmOYsKFQgLO11YUGRI6tUS0OxZIlFUjsP6&response-content-disposition=attachment%3Bfilename%3D%22test.txt%22%3B%20filename%2A%3Dutf-8%27%27test.txt&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAYKLZUZMO5JQZKT7O%2F20250616%2Fap-southeast-2%2Fs3%2Faws4_request&X-Amz-Date=20250616T092044Z&X-Amz-SignedHeaders=content-type%3Bhost%3Bx-amz-acl%3Bx-amz-server-side-encryption&X-Amz-Signature=50009de31439fbc6e7418d8aec0f01f93d7f4c2054e1fb6223181921d0893e1a",
  "contentType": "text/plain",
  "physicalFile": "5b7f3246-12c5-495d-b5ed-77e257808d3e.txt",
  "headers": {
    "Content-Disposition": "attachment;filename=\"test.txt\"; filename*=utf-8''test.txt",
    "x-amz-server-side-encryption": "AES256",
    "x-amz-acl": "bucket-owner-full-control"
  },
  "method": "PUT",
  "fallbackUrl": null
}

2. PUT using the url value from the prepareTempDirectUpload response

Use the PUT HTTP verb to call the URL indicated in the url attribute of the response in Step 1. You will need to include all the HTTP headers and their values included in the headers attribute. Optionally you may set the content-type of your attachment manually, corresponding to the contentType attribute from the same response in Step 1. Continuing with the example from the previous step, our new request headers will look like:

  content-type: text/plain
  content-disposition: attachment;filename=\"test.txt\"; filename*=utf-8''test.txt
  x-amz-server-side-encryption: AES256
  x-amz-acl: bucket-owner-full-control

This should then be attached to the following HTTP Verb and URL to call the request:

PUT https://pageup-storage-temp-au.s3.ap-southeast-2.amazonaws.com/543/Document/5b7f3246-12c5-495d-b5ed-77e257808d3e.txt?X-Amz-Expires=1800&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEHEaDmFwLXNvdXRoZWFzdC0yIkcwRQIgEY8n3TCVyXv0IlPxJU%2FbLVSVfBBNvj2dMRlEuirW6T8CIQD%2FMCfbFZX9HrVZ5hHWrBT%2BlQvNPo6MnHyU%2FEHzaQevfCrMBQhaEAUaDDU3MjAyMjYzOTM4OSIMFi09RsEQFtpUrTgBKqkFubegLgG9gfYqgAT46wGA6yx5WGD%2FiWVj7WjNT3R7JAjv%2Bj2YM7OiIXB117f6SnQ4TmLL7YW9751oX%2BDeVdOr%2FUONZuzVMJKHx%2FRYerlHrHMQP7VD8yXiPAQ18%2B6RsTDwyoRp33WkZP%2BEIm76YJaGGXtzIvncWpLe%2FRaTgAqq5Pfy5td9z0yV5T%2BFXibCJCEzbdf5aEmOGWrkA7HcP72CUQ3tJ5RKadXLI8q5GeJ9PhQKL%2BVJxOg%2B9XshbRrVIpg8gsLPJcX7jpvyqbTILhlb%2FlwJumrFealPV72UpckxHpN9mYsL5t33yaTAxsirqZDwFjFQXZqfT0k0TZSnz1jghsylxkxwsmeagHe8frKloRnogD9AGzbf0RdkNrna%2Fn6eoE0gjveaJnPg6K%2FXfcZLggJjctCLnx8OWBMyvHRxbqMKn14f6QstF1S3SRrlSjWbZizdyPzozojnAYKF%2BnYuYVITeWjnnS48WvXNaqpuRgfSjf5RB4ZtNe3S4Hezjy9IJfJjLwpRp3zVJZPI08GJkWcweco6nkF8iBaiGsA5AIv%2FPsue9dFRPyUP7rjfEJ9icTYmnUObTznmecpszzIGCLHfSUMWM0rJv5MaL787Pl1ze7x%2F5XLqWp%2FMxBYt7Rog3z%2BEnFFRbZgvZwmIjtXxKKD5vE9UNru06Qf2qsmd4uYoLd%2FmXJUmZYv4Oa7hcRr1njNfzICcBOGiUjQj%2B1%2BMkTcnJOtrA0AsbOQbPrNhcGNZAkJgfisMgb%2BGSMI8RlsIwBll1lEamLjhxu2Qjp0o0Rg03uqlYxWgYk0yHMhvQkSATI61ZsxTQ9S5OVElebTa31C9%2BrJ5e9lzWA25UKS83dLztkno%2FgnsI6iaMI1fyZvTcc4E9CyS7v09BoIE3Js6RN8ao%2B2xj%2FiuML%2Bwv8IGOrEBuaM23WStn%2FUeNG5OzAY2LnZ%2Bcw6ivqLT3grKBL%2Bl3Ti3MZ%2FeaoXoRkpNUiFR1B6ngHPYrw1SfQy7X6MV7%2B3vYTai%2FnTgXXwbqW05NIbmiIR15whOkACLN8tuERfoQUb8Vj2iiV6yUf1eJBxcwfaKb8mttd9JvdARMowU%2FHp2A2wPE2dlN%2BSpWEnp44XfpHluXiujwxgzI6vmOYsKFQgLO11YUGRI6tUS0OxZIlFUjsP6&response-content-disposition=attachment%3Bfilename%3D%22test.txt%22%3B%20filename%2A%3Dutf-8%27%27test.txt&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAYKLZUZMO5JQZKT7O%2F20250616%2Fap-southeast-2%2Fs3%2Faws4_request&X-Amz-Date=20250616T092044Z&X-Amz-SignedHeaders=content-type%3Bhost%3Bx-amz-acl%3Bx-amz-server-side-encryption&X-Amz-Signature=50009de31439fbc6e7418d8aec0f01f93d7f4c2054e1fb6223181921d0893e1a

3. POST /document/moveFromTemp

Using values from Step 1, construct the request body with these values:

File Information
  • id (optional) - PageUp reference ID (lDocumentID). If this PageUp reference ID is passed, then existing document with this ID will be replaced.
  • title - The title of the document
  • providerID (optional) - PageUp reference ID (lProviderID) for the user that uploaded the file
  • fileName - The original document file name
  • physicalFile - The value for physicalFile from the response in Step 1
Document Category Attribute

For the document category attribute, ONE AND ONLY ONE of either attribute should be present in the request:

  • documentCategoryName - This is the document category title as setup in the PageUp system
  • documentCategoryId - The system document category ID (lLKP_SystemDocumentCategoryID). See the tables below on the supported IDs.

The table below describes the available System Document Categories (i.e. documentCategoryName) and their corresponding documentCategoryId values:

System Document Category documentCategoryId
Resume 7
Agency 10
MailMatcherEmail 13
PositionDescription 14
ReportBuilderTemplate 17
EmployeeDocument 18
JobNote 19
Job, Offer, Application and Applicant Information

For the following attributes, you would only typically need to include only the relevant ids among the next set of fields, depending on if you are associating the document with a job, applicant, application, or offer:

  • jobId - PageUp reference ID (lJobID). Populate this if this is a job document.
  • offerId - PageUp reference ID (lOfferID). Populate this if this is an offer document.
  • applicationId - PageUp reference ID (lApplicationID). Populate this if this is an application or offer document.
  • applicantId - PageUp reference ID (lApplicantID). Populate this if this is an applicant, application, or offer document.
Sample request and response

Here is an example of a request body for this endpoint:

{
  "fileName": "uploadtest.txt",
  "title": "Test Document",
  "physicalFile": "61d1b6ab-19b5-415e-a62a-bf5db265665b.txt",
  "providerId": 9552,
  "documentCategoryId": 7,
  "applicationId": 16142309,
  "applicantId": 26459460
}

If this request is successful, you would receive a response similar to the following:

{
  "id": "8621",
  "title": "Test Document",
  "providerID": 9552,
  "fileName": "uploadtest.txt",
  "physicalFile": "74b6fdd9-7b3e-4d47-9762-8878d47bb03b.txt",
  "documentCategoryName": "Resume",
  "documentCategoryId": 1,
  "applicationId": 16142309,
  "applicantId": 26459460,
  "jobId": null,
  "offerId": null
}

B. Download recruitment document from PageUp

GET ***/document/

This endpoint accepts the following values:

  • id - Part of the path/URI, referring to the PageUp reference document ID (lDocumentID) of the file to be downloaded.
  • expiresInSeconds (optional) - The length of time the download link in the response is valid, with a minimum value of 10 seconds and a maximum value of 300 seconds. If not specified, the download link is valid for 60 seconds