Receiving a Candidate

This will be a route on the receiving application or integration and not the candidate hub. This route will accept standard candidate data and return a standard response to be consumed by the hub.
If parsing is enabled, two additional candidate documents will be included. The raw parsed XML as a "tagged_cv" and a JSON document of type "parsed_cv" (both Base64 encoded).

Endpoint Details

POST https://url_of_your_candidate_importer.com/importer_route

Content Type: application/json

Example Request (Without Parsing)
{
    "authentication": {
        "api_key": "123456789",
        "signature": "18089b5d73354533e380d05fdd677f2dbfb4a41412f057a0d05010ffd7e659ea",
        "time": "1713519108000"
    },
    "candidate": {
        "documents": [
            {
                "content": "JVBERi0yLjAKJbq63toKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUi9MYW5nKGVu
                KS9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4vU3RydWN0VHJlZVJvb3QgMyAwIFIvTWV0YWRhdGEgNCAwIFIvUGFnZUxhYmV
                scyA1IDAgUi9WaWV3ZXJQcmVmZXJlbmNlczw8L0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4+PgplbmRvYmoKMiAwIG9iajw8L1R5
                cGUvUGFnZXMvQ291bnQgMS9LaWRzWzYgMCBSXT4+CmVuZG9iagozIDAgb2JqPDwvVHlwZS9TdHJ1Y3RUcmVlUm9vdC9LWzc
                gMCBSXS9QYXJlbnRUcmVlPDwvS2lkc1s4IDAgUl0+Pj4+CmVuZG9iago0IDAgb2JqPDwvVHlwZS9NZXRhZGF0YS9TdWJ0eXB
                lL1hNTC9MZW5ndGggOSAwIFI+PnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN
                6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iAgbg0KMDAwMDA0NTMxMyAwMDAwMCBuDQowMDAwM
                DQ1MzYwIDAwMDAwIG4NCjAwMDAwNDU0MDcgMDAwMDAgbg0KMDAwMDA0NTQ1NCAwMDAwMCBuDQowMDAwMDQ1NDkwIDAwMDAwI
                G4NCjAwMDAwNDU1MTEgMDAwMDAgbg0KMDAwMDA0ODAwNiAwMDAwMCBuDQowMDAwMDQ4MDI4IDAwMDAwIG4NCnRyYWlsZXIKP
                DwvUm9vdCAxIDAgUi9JbmZvIDEyNiAwIFIvSURbPDI3RUJENDI5ODA4REJFMTFDQjJENjI3NjE2QUY5RjkwPjwyN0VCRDQy
                OTgwOERCRTExQ0IyRDYyNzYxNkFGOUY5MD5dL1NpemUgMTI3Pj4Kc3RhcnR4cmVmCjQ4MTg0CiUlRU9G",
                "filename": "1713519105-14432-qaPermissionsContact0012seven20io_parsedcandidate__0003.pdf",
                "type": "cv"
            },
            {
                "content": "LXR4dC0KCkRlYXIgUmVjcnVpdGVyLA0KDQpFbRmlyc3RuYW1lOiBQZXJtaXNzaW9uc0NvbnRhY3QNClN
                1cm5hbWU6IDAwMTINCkNvbnRhY3QgRW1haWw6IHFhK1Blcm1pc3Npb25zQ29udGFjdC4wMDEyQHNldmVuMjAuaW8NCg==",
                "filename": "email_body",
                "type": "email_body"
            }
        ],
        "email": "qa+PermissionsContact.0012@gmail.io",
        "name": "Permissions Contact"
    },
    "context": {
        "application_time": "2024-04-19T09:31:45Z",
        "candidate_source_id": "broadbean_demo_board",
        "candidate_source_name": "Broadbean Demo Board",
        "supplementary": {
            "board_id": "12660",
            "board_name": "broadbean_demo_board",
            "board_nice_name": "Broadbean Demo Board",
            "candidate_status": "received",
            "custom_field_ATS_id": "a022600000KWW5uAAH",
            "id": 627421,
            "is_requisition_ad": 0,
            "jobref": "0037",
            "jobtitle": "User1Job 0011",
            "locale": "en",
            "rank": "UNRANKED",
            "rank_time": 0,
            "screened": 0,
            "status_timestamp": "2024-04-19T09:31:45Z",
            "username": "testuser@testteam.testoffice.testclient"
        },
        "transformer": {
            "advert": {
                "id": 627421,
                "is_requisition_ad": 0,
                "jobref": "0037",
                "jobtitle": "User1Job 0011",
                "screened": 0
            },
            "application_time": "2024-04-19T09:31:45Z",
            "candidate_source_id": "broadbean_demo_board",
            "candidate_source_name": "Broadbean Demo Board",
            "candidate_status": "received",
            "consultant": {
                "locale": "en",
                "username": "testuser@testteam.testoffice.testclient"
            },
            "custom_fields": [
                {
                    "name": "ATS_id",
                    "value": "a022600000KWW5uAAH"
                }
            ],
            "response": {
                "id": 80957,
                "rank": "UNRANKED",
                "rank_time": 0
            },
            "response_details": {},
            "source": {
                "board_id": "12660",
                "board_name": "broadbean_demo_board",
                "board_nice_name": "Broadbean Demo Board"
            },
            "status_timestamp": "2024-04-19T09:31:45Z"
        }
    },
    "meta_info": {
        "hub_candidate_id": "A4FC7782-FXXX-1XXX-9BB8-CDXXXXXXXA",
        "hub_client_id": "testclient",
        "hub_delivery_id": "A5353CE8-FXXX-1XXX-9BB8-CDXXXXXXA",
        "hub_schema_version": 1,
        "hub_source_id": "testsource",
        "hub_transaction_id": "A4F3F576-FXXX-XXXX-9327-797XXXXX2",
        "import_process_report_url": "https://candidatehub.adcourier.com/candidate/report/A5F3A-FXXX-1XXX-9BB8-CXXDA"
    }
}

Example Request (With Parsing)
{
    "authentication": {
        "api_key": "123456789",
        "signature": "80be007bf2aebde3c4ed0ea78b8dd90c8b2e32a291aeb7233b971cfb1fda0242",
        "time": "1714480491000"
    },
    "candidate": {
        "application_email": "nttin.tn20.cvn222@gmail.com",
        "application_name": "Tran Nguyen Minh Vu",
        "contact_telephone": null,
        "current_job_employer": "OrangeLogic Vietnam",
        "current_job_enddate": "2024-04-19T00:00:00",
        "current_job_startdate": "2022-11-01T00:00:00",
        "current_job_title": "Senior NET Developer",
        "documents": [
            {
                "content": "JVBERi0xLjQNCiWhs8XXDQoyIDAgb2JqDQo8PC9TdHJ1Y3RQYXJlbnRzIDAvUmVzb3VyY2VzPDwvWE
                9iamVjdDw8L1gxMiAxMiAwIFIgPj4vRXh0R1N0YXRlPDwvRzMgMyAwIFIgL0c0IDQgMCBSID4+L1Byb2NTZXRbL1BE
                Ri9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXS9Gb250PDwvRjYgNiAwIFIgL0Y3IDcgMCBSIC9GOCA4IDAgUiAvRj
                kgOSAwIFIgL0YxMCAxMCAwIFIgL0YxMSAxMSAwIFIgL0Y1IDUgMCBSID4+Pj4vTWVkaWFCb3hbIDAgMCA4NDIgMTE5
                MF0vUGFyZW50IDE3IDAgUiAvQ29udGVudHMgMTQgMCBSIC9UeXBlL1BhZ2U+Pg0KZW5kb2JqDQoxMiAwIG9iag0KPD
                wvQ29sb3JTcGFjZS9EZXZpY2VSR0IvV2lkdGggMzYvQml0c1BlckNvbXBvbmVudCA4L0xlbmd0aCAxNTAxL0hlaWdo
                dCAzNi9GaWx0ZXIvRmxhdGVEZWNvZGUvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvU01hc2sgMTMgMCBSID4+c3
                RyZWFtDQp4nKVXS28TVxid/4BYtGBKWxJDQiDB+DEz97pZt6Lqhm13hapSFy2q1EUXRkJ9ACEk+DVzZ2wI6qKWuu2m
                i5QK0URYFHvmzjixiXmkqIF20f4B93yTByQeJ3EZjSJnMr7ne5zvfCeK0s+V6ey9uPLGZHs45+A+NN3s69u7uSLvfX
                z4zGVmOCPZNuCGcFIgL0luZm8gMSAwIFIgL0lEWzw5NTZDM0U2MEI2N0ExNEIxQ0VBNkQ3QkEzQjJENEY0Nj48OTU2
                QzNFNjBCNjdBMTRCMUNFQTZEN0JBM0IyRDRGNDY+XT4+c3RyZWFtDQp4nKWSPyhFYRjG3+87QiTJdjcx0TGwWfy3qL
                tYZLmTTSwMiEVxi4HEIMkgkaJuUcp0B0aDSbdM0h38S7gZdHzne3/qmJ3l1/M873ne0/cdK/ETRdY6ZIyxkWNOxBrH
                tBjr83/Q9Zk7KcW6fNn1OgYtytST0pR0XyErVfF87418ev9bc+nW/OJFqpO9s2vyHmu7pPlCUWqS+eWYvPl8ip6Msn
                KcvSn8OXQrXNS+sEJqk32FUF59HmretC91yfwjK89+Xxu9W0p7C0/xp9kzgZ9Dr3oaO8A5tZM/KMuu8TuZP4K79O4w
                n0Zz3ubkbx5cwWP8deY24Rk9fbAB5uE5nGee7wmK+P30bpAfoifJ7/G7eK8Dvwe/ET0MB/HpNb/neIDeRs8wv4e/4u
                8pyo9IfeKezNCXPPq8mf9hVOQHIqNFCA0KZW5kc3RyZWFtDQplbmRvYmoNCg0Kc3RhcnR4cmVmDQo4OTMxOQ0KJSVF
                T0YNCg==",
                "filename": "1713627687-6042-nttintn20cvn222gmailcom_TranNguyenMinhVu_DotNetDeveloper.docx.pdf",
                "type": "cv"
            },
            {
                "content": "LXR4dC0KCkRlYXIgUmVjcnVpdGVyLA0KDQpFbmNsb3NlZCBhcmUgdGhlIGRldGFpbHMgb2YgYSBjY
                W5kaWRhdGUgd2hvIHdpc2hlcyB0byBhcHBseSBmb3IgdGhlIGpvYiB0aXRsZWQ6IERyYWZ0IGpvYiBhZCAocmVmOi
                BwcmV2aWV3LTM4NjYtMTAwNTE4NCkuDQoNCkZpcnN0bmFtZTogVO+/vW4NClN1cm5hbWU6IFRydW5nDQpDb250YWN
                0IEVtYWlsOiBudHRpbi50bjIwLmN2bjIyMkBnbWFpbC5jb20NCkhvbWUvRXZlbmluZyBUZWw6ICs4NDM5MzM1NDg3
                NQ0KV29yay9EYXl0aW1lIFRlbDogKzg0MzkzMzU0ODMyDQpNb2JpbGUgVGVsOiAwMzkzMzEyNTA5DQo=",
                "filename": "email_body",
                "type": "email_body"
            },
            {
                "content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPFJlc3VtZSB4bWxucz0iaHR0\
                ncDovL25zLmhyLXhtbC5vcmcvMjAwNy0wNC0xNSI+CiAgPFN0cnVjdHVyZWRYTUxSZXN1bWU+CiAg\nICA8Q29udG
                FjdEluZm8+CiAgICAgIDxQZXJzb25OYW1lPgogICAgICAgIDxGb3JtYXR0ZWROYW1l\nPlRSQU4gTkdVWUVOIE1JT
                kggVlU8L0Zvcm1hdHRlZE5hbWU+CiAgICAgICAgPEdpdmVuTmFtZT5U\nUkFOPC9HaXZlbk5hbWU+CiAgICAgICAg
                PE1pZGRsZU5hbWU+IE5HVVlFTiBNSU5IPC9NaWRhbHVlLz4KICAgICAgICA8\nU3VwcG9ydGluZ0luZm9ybWF0aW9u
                PlNlY3Rpb24gb2YgQ1YgZm91bmQgaW46IGV4cGVyaWVuY2U8\nL1N1cHBvcnRpbmdJbmZvcm1hdGlvbj4KICAgICAg
                PC9Db21wZXRlbmN5V2VpZ2h0PgogICAgPC9D\nb21wZXRlbmN5PgogICAgPENvbXBldGVuY3kgbmFtZT0idXNlciBp
                bnRlcmZhY2UgZGVzaWduIj4K\nICAgICAgPENvbXBldGVuY3lXZWlnaHQ+CiAgICAgICAgPFN0cmluZ1ZhbHVlLz4K
                ICAgICAgICA8\nU3VwcG9ydGluZ0luZm9ybWF0aW9uPlNlY3Rpb24gb2YgQ1YgZm91bmQgaW46IGV4cGVyaWVuY2U8
                \nL1N1cHBvcnRpbmdJbmZvcm1hdGlvbj4KICAgICAgPC9Db21wZXRlbmN5V2VpZ2h0PgogICAgPC9D\nb21wZXRlbm
                N5PgogICAgPENvbXBldGVuY3kgbmFtZT0id2ViIHNpdGUgcHJvZHVjdGlvbiI+CiAg\nICAgIDxDb21wZXRlbmN5V2
                VpZ2h0PgogICAgICAgIDxTdHJpbmdWYWx1ZT4zIC0gNCB5cnM8L1N0\ncmluZ1ZhbHVlPgogICAgICAgIDxTdXBwb3
                J0aW5nSW5mb3JtYXRpb24+WWVhciBsYXN0IHVzZWQ6\nIDIwMjI8L1N1cHBvcnRpbmdJbmZvcm1hdGlvbj4KICAgIC
                AgICA8U3VwcG9ydGluZ0luZm9ybWF0\naW9uPlNlY3Rpb24gb2YgQ1YgZm91bmQgaW46IGV4cGVyaWVuY2UgLSAyLD
                M8L1N1cHBvcnRpbmdJ\nbmZvcm1hdGlvbj4KICAgICAgPC9Db21wZXRlbmN5V2VpZ2h0PgogICAgPC9Db21wZXRlbm
                N5Pgog\nIDwvVXNlckFyZWE+CjwvUmVzdW1lPgo=\n",
                "description": "Tagger: BurningGlass, Conversion: hr_xml",
                "filename": "1713627687-6042-nttintn20cvn222gmailcom_TranNguyenMinhVu_DotNetDeveloper.docx.xml",
                "type": "parsed_cv"
            }
        ],
        "education": [],
        "email": "nttin.tn20.cvn222@gmail.com",
        "employment": [
            {
                "employer": "OrangeLogic Vietnam",
                "end_date": "2023-06-01T00:00:00",
                "start_date": "2022-07-01T00:00:00",
                "summary": "An media management product that provides lots of tools to upload/download media 
                (image, video, file,...),\nmanage permissions to access, sharing permissions and the payments
                .\n▪ Responsibility:\n● Receive, analyze and solve by myself the tasks from the US team or
                 client directly, do self-testing as well.\n● Improve performance.\n● Unit tests.\n▪ 
                 Technology: ASP.NET, MSSQL Server, HTML, CSS, JavaScript, JQuery.",
                "title": "Senior .NET Software Engineer"
            },
            {
                "employer": "ASWhite VietNam",
                "end_date": "2022-07-01T00:00:00",
                "start_date": "2019-10-01T00:00:00",
                "summary": "o EML\n▪ Domain: An insurance website that allows users to create and manage
                 claims of claimants. It also calculates the amount\nthat company must pay each week for
                  claimants.\n▪ Responsibility:\n● Participate in research and propose solutions for 
                  incoming challenges.\n● Provide a plan, tasks and estimation for old features that 
                  need to be refactored.\n● Responsible for production issues.\n● Contribute to improve
                   features of EML's platform.\n● Review code for other dev and collaborate with them to 
                   keep code clean, follow structure of project.\n● Working through database, back-end, 
                   front-end to complete user stories.\n● SCRUM experienced.\n▪ Technology: ASP.NET, 
                   ASP.NET Core, .NET Web API, MSSQL Server, HTML, CSS, JavaScript, JQuery, RabbitMQ, Microservices.",
                "title": "Senior Fullstack .NET Software Engineer"
            },
            {
                "employer": "Flexidata VietNam",
                "end_date": "2019-06-01T00:00:00",
                "start_date": "2018-09-01T00:00:00",
                "summary": "Health\n▪ Domain: A CRM website which provides the solution to Bayer's 
                administrators to create their campaigns for their\ncompany's customers. The customers 
                can participate to earn points and exchange gifts.\n▪ Responsibility:\n● Analyze 
                requirements and provide estimation to help BA prepare execution plans for clients.\n● 
                Propose solution and implement to adapt business requirements such as events, background 
                jobs, SSO.\n● Self-managed task.\n▪ Technology: Angular2, ASP.NET Core, .NET Web API,
                 IdentityServer4, ASP.NET boilerplate, MSSQL Server.\no Connector projects: ZaloConnector, 
                 VivasConnector, GotitConnector\n▪ Domain: These projects are responsible for interacting
                  with 3rd parties, recording transactions and supplying the APIs for\ninternal applications.
                  \n▪ Responsibility:\n● Collaborate directly with IT teams of 3rd parties to implement 
                  features.\n● Define output structure of APIs for internal members.\n▪ Technology: 
                  Angular2, ASP.NET Core, .NET Web API, ASP.NET boilerplate, MSSQL Server.",
                "title": "Fullstack .NET Software Engineer"
            },
            {
                "employer": "NashTech VietNam",
                "end_date": "2018-05-01T00:00:00",
                "start_date": "2015-08-01T00:00:00",
                "summary": null,
                "title": "Fullstack .NET Software Engineer"
            }
        ],
        "first_name": "Tran Nguyen Minh",
        "last_name": "Vu",
        "location_address": null,
        "location_city": null,
        "location_country": null,
        "location_country_code": null,
        "location_county": null,
        "location_postcode": null,
        "mobile_telephone": "+84 356 037 181",
        "name": "Tran Nguyen Minh Vu"
    },
    "context": {
        "application_time": "2024-04-30T12:34:48Z",
        "candidate_source_id": "jobscabi",
        "candidate_source_name": "Jobs Cabinet (Test Board)",
        "supplementary": {
            "board_id": "2336",
            "board_name": "jobscabi",
            "board_nice_name": "Jobs Cabinet (Test Board)",
            "candidate_status": "ranked",
            "custom_field_ATSInternalID": "9820240327191635",
            "id": 80065,
            "is_requisition_ad": 0,
            "jobref": "0000000025",
            "jobtitle": "Directeur des Ressources Humaines",
            "locale": "en_usa",
            "rank": "SUITABLE",
            "rank_time": 0,
            "screened": 0,
            "status_timestamp": "2024-04-30T12:34:48Z",
            "username": "testuser@testteam.testoffice.testclient"
        },
        "transformer": {
            "advert": {
                "id": 592580,
                "is_requisition_ad": 0,
                "jobref": "0000000025",
                "jobtitle": "Directeur des Ressources Humaines",
                "screened": 0
            },
            "application_time": "2024-04-30T12:34:48Z",
            "candidate_source_id": "jobscabi",
            "candidate_source_name": "Jobs Cabinet (Test Board)",
            "candidate_status": "ranked",
            "consultant": {
                "locale": "en_usa",
                "username": "testuser@testteam.testoffice.testclient"
            },
            "custom_fields": [
                {
                    "name": "ATSInternalID",
                    "value": "9820240327191635"
                }
            ],
            "response": {
                "id": 80065,
                 "rank": "SUITABLE",
                "rank_time": 1713629397
            },
            "response_details": {},
            "source": {
                "board_id": "2336",
                "board_name": "jobscabi",
                "board_nice_name": "Jobs Cabinet (Test Board)"
            },
            "status_timestamp": "2024-04-30T12:34:48Z"
        }
    },
    "meta_info": {
        "hub_candidate_id": "09361F02-0XXX-11EF-AE34-E6XXXXXXA",
        "hub_client_id": "testclient",
        "hub_delivery_id": "09705578-06EE-1XXX-AE34-E6XXXXX0DA",
        "hub_schema_version": 1,
        "hub_source_id": "testsource",
        "hub_transaction_id": "092EC4BE-0XXX-11XF-8BF7-37AXXXXXE4",
        "import_process_report_url": "https://candidatehub.adcourier.com/candidate/report/09XX-0XXX-11EF-AE34-E6XXA"
    }
}
Example Response (200 OK)
{
    "success": 1,
    "message": "Candidate Received for processing"
}

Request Fields
Payload Fields
Field Description Mandatory
meta_info Meta Info used to identify the specific request/payload Y
candidate See Candidate Entity for a detailed description on how to populate this node Y
context See Candidate Context for detailed description on what this node includes N
authentication Authentication details used to verify the request/payload came from CandidateHub N

Meta Info
Field Description Mandatory
hub_transaction_id Unique ID for a Transaction in CandidateHub Y
hub_candidate_id Unique ID for a Candidate application Y
hub_client_id ID for the client as setup in CandidateHub Y
hub_source_id ID for the source as setup in CandidateHub. For source tracking you may want to use details from Candidate Context instead Y
import_process_report_url Used to send a Candidate Processing Report callback after the candidate import has been processed on the receiving system Y

Authentication
Field Description Mandatory
api_key The API Key used to generate the signature. This is provided by Veritone Hire at the time of setup Y
time The time at which the signature was generated Y
signature The unique request signature which you should verify to ensure the request came from CandidateHub. See Verifying the authentication/signature for details on how verify this. Y

Verifying the authentication/signature

To verify the signature you will need to generate it again and make sure it matches the one in the payload

1. Obtain secret from Veritone Hire. eg: 1secret1
2. Obtain api_key from payload eg: apiKey1
3. Obtain time ( time signature was generated ) from the payload, this is an epoch timestamp in ms. eg: 1594796637012 ( Wednesday, 15 July 2020 07:03:57.012 GMT )
4. Concatenate api_key and time separated by a pipe. eg: apiKey1|1594796637012
5. HMAC-SHA256 encode the concatenated string with the secret from Veritone Hire.

Example using Bash and OpenSSL:
# Usage: echo -n {api_key}|{time} | openssl dgst -sha256 -hmac {secret}
echo -n 'apiKey1|1594796637012' | openssl dgst -sha256 -hmac 1secret1
# Output:
(stdin)= 90f794a2d7cc174dcae31a901123bbde38ec43f82d86b8ef58e86e9ed6693e66

6. The secret key in this example would be 90f794a2d7cc174dcae31a901123bbde38ec43f82d86b8ef58e86e9ed6693e66 and should match the the /authentication/signature value in the payload

Return to top