Step 1: Display the Apply with SEEK button

We strongly recommend that your software models its apply form in the following manner:
  • If the seek-prefill-id parameter is present, skip ahead to handle authorization in the Allow access scenario.
  • If the seek-prefill-id parameter is not present, display the Apply with SEEK button with a redirectUri back to the current page.
This simplified model enables your software to seamlessly handle all scenarios described below with minimal effort.

Pre-fill scenarios

Apply with SEEK can be used by a candidate to pre-fill in three scenarios:
  1. When a candidate links out from a SEEK job ad to your apply form, and they manually click the Apply with SEEK button on the form.
  2. When a candidate links out from a SEEK job ad to your apply form, and they have pre-authorized your software to pre-fill the form.
  3. When a candidate arrives on your apply form directly or through another channel, and they manually click the Apply with SEEK button on the form.

Scenario 1: Candidate arrives from SEEK without pre-authorization

If the candidate has linked out from a SEEK job ad, you will receive a seek-token parameter appended to the query string of the applicationUri :
Text
Copy
https://www.example.com/job/123445/?seek-token=93WyyF1h6eaeb58ccc384b0e8353daa3011f1ece
The token should be propagated in your software to the applyWithSeekButton query , and for subsequent signals like apply form submission. It is unique to that specific candidate, job ad, and session, and should not be reused outside of the context of their current application.
QueryVariablesResult
{
  "input": {
    // The HTTPS URL to redirect the candidate to after authorization.
    // Your software may embed dynamic state in the query string for CSRF protection.
    "redirectUri": "https://partner.example.com/jobad/00000001/apply",

    // The identifier for the SEEK hirer that is filling the position.
    // "Partner Name on behalf of Hirer Name" will be displayed on the authorization page.
    "hirerId": "seekAnzPublicTest:organization:seek:93WyyF1h",

    // The seek-token received as part of the query string when the candidate arrived from SEEK.
    "token": "eyJqb2JJZCI6MCwiY2FuZGlkYXRlSWQiOjAsInNlc3Npb25JZCI6IiJ9"
  }
}

Scenario 2: Candidate arrives from SEEK with pre-authorization

If your apply page receives a seek-prefill-id parameter in the query string, skip ahead to handle authorization in the Allow access scenario.
This is a variation of Scenario 1 where the candidate has linked out from a SEEK job ad, but they have additionally pre-authorized your software to pre-fill the form using their SEEK Profile. You may test this scenario by posting a job ad using your test hirer account with a position title that contains the string [PREAUTH].
As with Scenario 1, you should propagate the seek-token parameter for subsequent signals like apply form submission.

Scenario 3: Candidate arrives from another source

Where a candidate has arrived at your apply form from another source (direct link, company career site, etc.), the seek-token parameter will not be present in the query string and should be omitted from the applyWithSeekButton query .
QueryVariablesResult
{
  "input": {
    // The HTTPS URL to redirect the candidate to after authorization.
    // Your software may embed dynamic state in the query string for CSRF protection.
    "redirectUri": "https://partner.example.com/jobad/00000001/apply",

    // The identifier for the SEEK hirer that is filling the position.
    // "Partner Name on behalf of Hirer Name" will be displayed on the authorization page.
    "hirerId": "seekAnzPublicTest:organization:seek:93WyyF1h",

    // The HTTPS URL of your apply form for the specific position.
    "applicationUri": "https://partner.example.com/jobad/00000001/apply",

    // An optional hirer-provided opaque job reference.
    "seekHirerJobReference": "REQ-65558"
  }
}

Render the button

The applyWithSeekButton query  should be called each time your apply form is loaded without a seek-prefill-id parameter in the query string. It provides display assets for the Apply with SEEK button and a one-time use authorization URL that it should link to. The authorization page prompts the candidate to share their SEEK Profile for the purpose of pre-filling your apply form.

Option 1: SEEK button

For a simple out-of-the-box option, take SEEK’s branded button by selecting one of the images . You should use buttonLabel  as an accessible aria-label  and link the button to the supplied url .
QueryVariablesResult
query ($input: ApplyWithSeekButtonInput!) {
  applyWithSeekButton(input: $input) {
    buttonLabel
    images {
      accent
    }
    url
  }
}

Option 2: Custom button

If you would rather build the Apply with SEEK button using your own design system, apply the buttonLabel  to a custom button element and link it to the supplied url .
Make sure to exclude the images  field from your query. Your software should only select the fields it uses as a best practice to reduce the surface area of your integration.
QueryVariablesResult
query ($input: ApplyWithSeekButtonInput!) {
  applyWithSeekButton(input: $input) {
    buttonLabel
    url
  }
}

Content localisation

Your software should include the standard Accept-Language  HTTP request header when it executes the applyWithSeekButton query . We support multiple brands and languages across our markets, so providing accurate country information and language preferences enables us to provide a more familiar experience for the candidate.
See content localisation for more information.

Content Security Policy compatibility

This section is for integration partners who enforce strict content security policies in their web-based software.
Content Security Policy  (CSP) is a security feature that helps prevent various types of attacks, including Cross-Site Scripting (XSS) and data injection attacks. Add the following directive to your CSP to load Apply with SEEK assets from the SEEK API:
HTML
Copy
Content-Security-Policy: img-src 'self'
https://integration.seek.com/awsk/button-images/;
This sample directive instructs the browser to only load images from your own domain (self) and our images directory.