Add or move an applicant's location
Puts an applicant you already sent at another location in the same registry, or moves them there from a location they are at.
Add. Send location_ref alone. The applicant gets a new
application at that location; their other applications are
unchanged. You receive candidate.location_added.
Move. Also send move_from_location_ref. The new application is
created as for an add, and the application at the old location is
closed. A move is not a rejection: you receive one
candidate.location_changed and no candidate.status_changed →
rejected for the location they left. The applicant gets no message
about the closed application.
Idempotent. 201 when a new application was created; 200 with
created: false when the applicant already had one at that location,
in which case nothing about that application changes. Replaying a move
is safe: if the old location’s application is still open, the replay
closes it.
Screening is reused, and only the gaps are asked. The new
application copies the applicant’s completed screening when it covers
the new location. screening in the response says which case applied:
Follow-up calls. For a new application with screening pending
or none, CONFIRM works out what is still unanswered:
- If the applicant’s screening call has not been placed yet, the new location joins it.
- If a call for another of their locations is in progress, the new location waits for it to finish, then continues below.
- Otherwise a short follow-up call asks only the questions the applicant has not already answered. Earlier answers carry over only when the question is asked exactly the same way: a question that names a different address, for example, is asked again.
- If nothing is left to ask, no call is placed: the outcome at the new location is decided from the earlier answers.
There is no second heads-up SMS. The applicant must have given contact
consent and have a valid phone, as for any call. The result arrives as
screening.completed and candidate.status_changed for the new
location. screening in the response does not change with any of
this. See
follow-up calls.
Callback URL. The new application keeps the webhook_url the
applicant was posted with (on a move, the old location’s), so its events
reach the same place.
Paused locations are fine; closed ones are not. A target location
closed with PATCH /locations/{ref} returns 409 location_closed,
unless the applicant already has an application there (200).
Authentication
Partner API key sent as Authorization: Bearer cfk_.... Keys are partner-level — one key reaches every registry linked to your partner account and nothing else. CONFIRM issues and revokes them; a key is shown exactly once at creation because only its hash is stored, and revocation takes effect on the next request. Develop against the sandbox base URL with a sandbox key, where telephony is restricted to an allowlist you provide.
Path parameters
Your applicant identifier (the external_ref you sent to POST /candidates).
Request
The location to add the applicant to (its external_ref).
Set to move instead of add: the location the applicant is leaving. Must be in the same registry as location_ref, the applicant must have an application there, and it must differ from location_ref.
Response headers
The ID of this request. On an error it equals request_id in the body. If you sent an X-Request-Id, it is your value, returned unchanged. Log it, and quote it when contacting CONFIRM support.
Response
Application created at the location. If the applicant already had one there you get 200 with created: false and that application.
The application at location_ref.
How much of an existing screening the application reuses, at the moment it was created. See the table in the endpoint description. For pending and none, a follow-up call (or the applicant’s not-yet-placed screening call) covers the rest; this value does not change when it does.
On a move, the location the applicant left and its now-closed application. null on an add.

