Posting a job ad

    Suggestions will appear below the field as you type

    Posting a job ad

      Suggestions will appear below the field as you type

      Posting a job ad

      Posting a job ad

      The SEEK API surfaces two mutations to post job ads, postPosition and postPositionProfileForOpening. Posting typically takes less than a minute after which a PositionProfilePosted event will be emitted.
      Job ads on SEEK have a maximum period of 30 days. Your software must allow hirers to advertise a job on SEEK for this full period.

      Idempotency

      A unique idempotencyId  needs to be provided as an input to each job posting mutation. An idempotencyId should be randomly generated before executing the mutation, and an identical mutation input should be provided for all subsequent retries. Using the same idempotencyId with differing mutation inputs can lead to unexpected behaviour.
      In scenarios where your software needs to retry a job posting mutation due to an error, the use of an idempotencyId removes the risk of accidentally posting duplicate job ads. If your software has already posted a job ad with the same idempotencyId, a PostPositionPayload_Conflict  or PostPositionProfileForOpeningPayload_Conflict  payload will be returned. Your identifiers are isolated and will not conflict with those generated by other recruitment software providers.
      Refer to the Mutation conflicts section for details on the differences between success and conflict payloads, and how they can be handled.

      Operations

      The following sample mutations are provided for demonstration purposes only; they are not executable in the Playground environment. You should use your live partner credentials to post a job ad under your unsearchable SEEK test hirer for end-to-end testing.

      postPosition

      The postPosition mutation  creates a new position opening and posts a PositionProfile  in a single operation.
      MutationVariablesSuccess resultConflict result
      mutation ($input: PostPositionInput!) {
        postPosition(input: $input) {
          ... on PostPositionPayload_Success {
            positionOpening {
              documentId {
                value
              }
            }
            positionProfile {
              profileId {
                value
              }
            }
          }
          ... on PostPositionPayload_Conflict {
            conflictingPositionOpening {
              documentId {
                value
              }
            }
            conflictingPositionProfile {
              profileId {
                value
              }
            }
          }
        }
      }

      postPositionProfileForOpening

      A single position opening can contain a maximum of 300 position profiles. Once a position profile has been posted it will remain in the position opening until 180 days after its close date.
      MutationVariablesSuccess resultConflict result
      mutation ($input: PostPositionProfileForOpeningInput!) {
        postPositionProfileForOpening(input: $input) {
          ... on PostPositionProfileForOpeningPayload_Success {
            positionProfile {
              profileId {
                value
              }
            }
          }
          ... on PostPositionProfileForOpeningPayload_Conflict {
            conflictingPositionProfile {
              profileId {
                value
              }
            }
          }
        }
      }
      You will receive a FORBIDDEN error if the hirer in positionOrganizations  does not match the PostingRequester.id  of the existing position opening.

      Events

      PositionProfilePosted

      PositionProfilePosted events  are emitted when job ads have been posted on the SEEK job board. You will receive events for SEEK hirers you have a JobPosting relationship with at the time of posting.
      In response to these events you can request fields from the position profile. For example, you could query:
      This is an example of a webhook body containing a PositionProfilePosted event:
      JSON
      Copy
      {
        "events": [
          {
            "id": "seekAnzPublicTest:event:events:UeFHntCu5giQh9Z6CRc2J7",
            "type": "PositionProfilePosted",
            "createDateTime": "2019-08-20T21:02:24.611Z",
            // This can be passed to the `positionProfile` query
            "positionProfileId": "seekAnzPublicTest:positionProfile:jobAd:26d9DVAzs",
            // This is only available for signed webhook subscriptions
            "hirerId": "seekAnzPublicTest:organization:seek:93WyyF1h"
          }
        ],
        "subscriptionId": "seekAnzPublicTest:webhookSubscription:events:Kyak8JfPKhHCAXM2s9b9wX",
        "url": "https://example.com/1/2/3"
      }