This content provides an early look at an upcoming extension to the SEEK API. You may use it to scope integration effort, but the features described are not fully implemented and may be adjusted ahead of a production release.Check with your SEEK contact before starting any build work described here.
postPosition mutation.A brief summary of important fields is provided below.Field | Path | Example | Requirement |
|---|---|---|---|
Identifier | seekPartnerPositionId | Mandatory | |
Hiring organization | postingRequester | Mandatory | |
Title | positionTitle | Senior Business Analyst | Mandatory |
Location | positionLocation | Mandatory | |
Description | positionFormattedDescriptions | Mandatory | |
Work type | seekAnzWorkTypeCode | FullTime | Mandatory |
Work arrangements | seekWorkArrangementCodes | OnSite | Mandatory |
Salary | offeredRemunerationPackage | Mandatory | |
Application URL | postingInstructions.applicationMethods | https://example.com/position/123/apply | Mandatory to link out |
Search bullet points | positionFormattedDescriptions | Recommended | |
Search summary | positionFormattedDescriptions | Recommended | |
Listing date | postingInstructions.start | 2048-01-01T00:00:00.000Z | Recommended |
Closing date | postingInstructions.end | 2048-01-31T00:00:00.000Z | Recommended |
Request snippet
Copy
"REQ-123"seekPartnerPositionId across all operations relating to the position.When sharing a position,
include the corresponding SEEK hirer id,
as well as a stable identifier that your software uses to uniquely identify the hiring organization, seekPartnerHirerId.Existing SEEK hirer
Copy
{"id": "seekAnzPublicTest:organization:seek:93WyyF1h",
"seekPartnerHirerId": "abc-123"
}Request snippetResponse snippet
Copy
{"communication": {
"address": {
"line": "Wallaman Falls, Lookout Rd",
"city": "Wallaman",
"countrySubDivisions": {
"type": "State",
"value": "QLD"
},
"postalCode": "4850",
"country": "AU"
},
"phone": {
"formattedNumber": "1900 654 321"
}
},
"name": "Acme Corp",
"personContacts": {
"name": { "formattedName": "Francis Admin" },
"roleCode": "AccountAdministrator",
"communication": {
"email": [{ "address": "francis.admin@example.com" }],
"phone": [{ "formattedNumber": "1800 160 401" }]
}
},
"seekPartnerHirerId": "abc-123"
}Structured dataGeolocation
Copy
{"city": "Wallaman",
"countrySubDivisions": {
"type": "State",
"value": "QLD"
},
"postalCode": "4850",
"country": "AU"
}seekWorkArrangementCodes to Remote.
A location is still required for a remote position;
this can be set to the headquarters or local branch of the hirer’s organization.Descriptions for the position are supplied in an array.Provide a complete representation of the position in AdvertisementDetails,
including paragraphs and formatting to make the content easier to read.
Do not truncate with … or similar.Request snippet
Copy
[// Short description to be shown in search results
{
"descriptionId": "SearchSummary",
"content": "Seasoned BA sought to lead strategic initiatives."
},
// Three bullet points to display in search results
{
"descriptionId": "SearchBulletPoint",
"content": "Stakeholder management and facilitation"
},
{
"descriptionId": "SearchBulletPoint",
"content": "Process mapping and requirement elicitation"
},
{
"descriptionId": "SearchBulletPoint",
"content": "Data-driven decision making"
},
// Detailed description to appear on a job ad
{
"descriptionId": "AdvertisementDetails",
"content": "<p>Acme Inc is seeking a business analyst to partner with business and technology teams to deliver high-impact, data-informed change.</p><p>You will lead discovery, define clear and testable requirements, map current and future processes, and support delivery through to adoption.</p><p>Bring strong stakeholder engagement, facilitation skills, and a pragmatic approach to complex problem solving.</p>"
}
]Request snippet
Copy
{"basisCode": "Salaried",
// 100,000–130,000 Australian dollars per year
"ranges": {
"minimumAmount": {
"value": 100000,
"currency": "AUD"
},
"maximumAmount": {
"value": 130000,
"currency": "AUD"
},
"intervalCode": "Year"
},
// Remuneration description visible to the candidate
"descriptions": ["Competitive salary, plus super"]
}- The pay type is expressed using a combination of two fields:
- The
basisCodedefines how the remuneration for the position is calculated - The
intervalCodedefines the period of time the minimum & maximum amounts are calculated over
- The salary range is specified in the major currency unit (e.g. dollars)The range is used to provide more relevant job search results to candidates, but the monetary values in
minimumAmountandmaximumAmountare not visible in search results nor on the job ad. - The remuneration description is displayed to candidatesThe description should be a short summary of the package, including further benefits such as bonus options and superannuation. Note that this field has a maximum length of 50 characters, which roughly corresponds to a single English sentence.SEEK may display the supplied
currencyandintervalCodealongside the description for clarity.
syncPositions mutation to share position data with SEEK.MutationVariablesResult
CopyGraphQL Explorer
{"input": {
"positionOpening": {
"postingRequester": {
// Hirer we're sharing the position on behalf of
"id": "seekAnzPublicTest:organization:seek:93WyyF1h",
"seekPartnerHirerId": "abc-123",
// Contact people for the position
"personContacts": [
{
"name": { "formattedName": "Jeff Manager" },
"roleCode": "HiringManager",
"communication": {
"email": [{ "address": "jeff.manager@example.com" }],
"phone": [{ "formattedNumber": "03 8517 4100" }]
}
}
]
},
// Unique identifier of the position in your software
"seekPartnerPositionId": "position-requisition-123",
// Express intent to automatically advertise the position based on status
"seekPositionIntent": "AdSync",
// The status of the position in your software
// This can be set to "Active" once it is ready to be advertised externally
"statusCode": "Incomplete"
},
"basePositionProfile": {
"positionTitle": "Señor business analyst",
"positionFormattedDescriptions": [
// Short description to be shown in search results
{
"descriptionId": "SearchSummary",
"content": "Seasoned BA sought to lead strategic initiatives."
},
// Three bullet points to display in search results
{
"descriptionId": "SearchBulletPoint",
"content": "Stakeholder management and facilitation"
},
{
"descriptionId": "SearchBulletPoint",
"content": "Process mapping and requirement elicitation"
},
{
"descriptionId": "SearchBulletPoint",
"content": "Data-driven decision making"
},
// Detailed description to appear on a job ad
{
"descriptionId": "AdvertisementDetails",
"content": "<p>Acme Inc is seeking a business analyst to partner with business and technology teams to deliver high-impact, data-informed change.</p><p>You will lead discovery, define clear and testable requirements, map current and future processes, and support delivery through to adoption.</p><p>Bring strong stakeholder engagement, facilitation skills, and a pragmatic approach to complex problem solving.</p>"
}
],
// 100,000–130,000 Australian dollars per year
"offeredRemunerationPackage": {
"basisCode": "Salaried",
"ranges": {
"minimumAmount": {
"value": 100000,
"currency": "AUD"
},
"maximumAmount": {
"value": 130000,
"currency": "AUD"
},
"intervalCode": "Year"
},
// Remuneration description visible to the candidate
"descriptions": ["Competitive salary, plus super"]
},
"seekAnzWorkTypeCode": "FullTime",
"seekWorkArrangementCodes": "OnSite",
// YouTube video to embed above the job ad's details
"seekVideo": {
"url": "https://www.youtube.com/watch?v=Q3UvigPHCjI"
},
"positionLocation": {
"geoLocation": {
"latitude": -18.592222,
"longitude": 145.801389
}
},
"postingInstructions": {
"applicationMethods": [
{
"applicationUri": {
"url": "https://example.com/position/123/apply"
}
}
]
}
},
"updateDateTime": "2048-01-01T00:00:00.000Z"
}
}syncPositions mutation,
which functions as a PUT operation.Setting positionOpening.statusCode to Active will trigger the Ad Sync engine to evaluate the position.
This status is appropriate when the position is ready to be advertised externally, which may depend on:- The status of the job requisition in your software
- Fields that are only collected in the job posting flow in your software, such as a detailed advertisement description and branding assets
positionOpening.statusCode as Closed—to the same syncPositions mutation.
The closure will propagate to job ads under the requisition.Directional Contact us if technical constraints prevent your software from synchronising the full position state whenever it changes.
Ad Sync may provide an alternative option of creating the position with syncPositions,
then performing granular update operations against the underlying PositionOpening and PositionProfile objects.Setting positionOpening.statusCode to Active will trigger the Ad Sync engine to evaluate the position.
This status is appropriate when the position is ready to be advertised externally, which may depend on:- The status of the job requisition in your software
- Fields that are only collected in the job posting flow in your software, such as a detailed advertisement description and branding assets
MutationVariablesResult
CopyGraphQL Explorer
{"input": {
"positionOpening": {
"documentId": "globalPublicTest:positionOpening:positions:E3Lz6HkSrbZCawh4gPGAtM",
"statusCode": "Active"
}
}
}Closed.
The closure will propagate to job ads under the requisition.MutationVariablesResult
CopyGraphQL Explorer
{"input": {
"positionOpening": {
"documentId": "globalPublicTest:positionOpening:positions:E3Lz6HkSrbZCawh4gPGAtM",
"statusCode": "Closed"
}
}
}MutationVariablesResult
CopyGraphQL Explorer
mutation ($input: UpdatePositionOpeningPersonContactsInput!) {
updatePositionOpeningPersonContacts(input: $input) {
positionOpening {
documentId {
value
}
}
}
}MutationVariablesResult
CopyGraphQL Explorer
mutation ($input: UpdateUnpostedPositionProfileInput!) {
updateUnpostedPositionProfile(input: $input) {
positionProfile {
profileId {
value
}
}
}
}- Whether to share positions in near real time or on a periodic interval
- Whether to share positions individually or in batches
updateDateTime that represents when the last update to the position actually occurred in your software;
it must not represent when the batch of positions is later sent to SEEK.Event | Timestamp | Use as updateDateTime? |
|---|---|---|
Hirer saves change to position description | 2048-01-01T09:45:32.617Z | |
Partner synchronises position updates for the past 1 hour | 2048-01-01T10:00:00.000Z |
syncPositions mutation for simplicity,
multiple positions can be shared at once.This is useful if your software may share more than one position at a time,
including if it:- Synchronises positions on a periodic interval rather than in near real time
- May modify multiple positions at once (e.g. due to process automation)
- Supports resending historical data (e.g. to correct data quality issues)
syncPositions operation.
If you have more than 25 positions to send,
split them into chunks of 25 and run multiple operations,
monitoring the SEEK API responses for rate limiting errors.