Step 1: Display 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://example.com/position/123/?seek-token=eyJqb2JJZCI6MCwiY2FuZGlkYXRlSWQiOjAsInNlc3Npb25JZCI6IiJ9
Propagate the token to the applyWithSeekButton query and subsequent signals like apply form submission. It is unique to that specific candidate, job ad, and session, and must 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://example.com/position/123/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://example.com/position/123/apply",

    // An optional hirer-provided free-text job reference.
    "seekHirerJobReference": "REQ-65558",

    // 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, propagate the seek-token parameter to 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://example.com/position/123/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://example.com/position/123/apply",

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

Render the button

Call the applyWithSeekButton query 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 single-use authorization URL to 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 Recommended

We recommend this option as it presents consistent and recognisable branding to the candidate while reducing ongoing maintenance effort.Take SEEK’s branded button by selecting one of the images. You should use buttonLabel as an accessible aria-label  or alt , and link the button to the supplied url.
QueryVariablesResult
query ($input: ApplyWithSeekButtonInput!) {
  applyWithSeekButton(input: $input) {
    buttonLabel
    images {
      accent
    }
    url
  }
}
Here are a few samples using JSX  pseudocode:
form + inputa + imgbutton
Copy
<form action={applyWithSeekButton.url} method="GET">
  <input
    style={{ background: applyWithSeekButton.images.accent }}
    type="submit"
    value={applyWithSeekButton.buttonLabel}
  />
</form>

Option 2: Custom button

We recommend taking SEEK’s branded button as it presents consistent and recognisable branding to the candidate while reducing ongoing maintenance effort. If your software has technical constraints that necessitate a custom button, contact us to discuss further.Your implementation will be required to follow our brand guidelines, and dynamically apply the buttonLabel and url to the custom element.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.

Security considerations

URL redirection

The SEEK API implicitly trusts your software to provide a safe redirectUri. This is the same treatment given to Job Posting applicationUris provided for linking out, and avoids the maintenance burden of strict URL allowlists.Follow best practices around URL redirection to protect candidates from phishing attempts. At a minimum, your software must have server-side provisions to ensure the redirectUri points to a web resource that your organization manages, and prevent bad actors from manipulating redirection behaviour.See the OWASP cheat sheet  for best practices, and our Terms of Use  for more information about your obligations.

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.