Application form links
Publish the account’s one stable public application-form link, or mint per-campaign links that each carry their own document checklist.
Two different kinds of link, six endpoints
The account link is ONE per account, published once and dropped into your careers page — POST is an idempotent ensure, never a rotation. A campaign link is minted as many times as you like, each with its own documents checklist, and can be revoked independently.
The account link#
Read the account’s one stable public application-form link, if one has been published.
Headers
X-Api-Keyonb_live_<key_id>_<secret>required- Your issued Partner API key — see Authentication.
Status codes
2002xx{ url: null, slug: null }when nothing has been published yet — a genuine checked answer, never an error. Otherwise the live link.4014xx- Missing, malformed, unknown, revoked or expired key. Every authentication failure looks the same — see Authentication.
4294xx- Per-key or per-account rate limit exceeded. Retry after the
Retry-Afterheader.Too many requests — please try again shortly. 5035xx- The read itself failed. Never a confident
{ url: null, slug: null }— retry.Some of this candidate’s records could not be read right now. Try again shortly.
Account-level, not candidate-level — there is no {id} in this path, and no request body.
curl \ "https://rca-onboardly.com/api/v1/application-form/link" \ -H "X-Api-Key: $ONB_KEY"{ "url": null, "slug": null}{ "url": "https://rca-onboardly.com/application-form/k7m9pqr2", "slug": "k7m9pqr2"}Mint the account’s one stable public application-form link, or return the one that already exists.
Headers
X-Api-Keyonb_live_<key_id>_<secret>required- Your issued Partner API key — see Authentication.
Status codes
2002xx- Minted, or (this account already published one) the SAME existing link — a repeat call is always safe to make again.
4014xx- Missing, malformed, unknown, revoked or expired key. Every authentication failure looks the same — see Authentication.
4034xx- The key’s user has the
viewerteam role, or their account could not be read just then (retry) — or the key was created Read only (code: "key_read_only", refused before anything else). Checked before the body or any id — see Authentication.Your team role doesn't allow this. Ask your team's admin or owner.This API key is read-only. Create a full-access key to make changes. 4294xx- Per-key or per-account rate limit exceeded. Retry after the
Retry-Afterheader.Too many requests — please try again shortly. 5005xx- No service client, the mint failed, or (the already-published case) the follow-up read of the existing link failed. Every failure on this route returns the same message — retry.
This resource is temporarily unavailable. Try again shortly.
No rotate verb — deliberately
This call only ever ENSURES a link exists; it never replaces one. Rotating would silently break every careers page already carrying the old URL. If you need a fresh URL for a specific campaign instead of the account’s one stable link, mint a campaign link below rather than trying to force this one to change.
No request body — the API key alone identifies which account’s link to ensure.
curl -X POST \ "https://rca-onboardly.com/api/v1/application-form/link" \ -H "X-Api-Key: $ONB_KEY"{ "url": "https://rca-onboardly.com/application-form/k7m9pqr2", "slug": "k7m9pqr2"}{ "url": "https://rca-onboardly.com/application-form/k7m9pqr2", "slug": "k7m9pqr2"}Campaign links#
List every campaign application-form link this account has minted.
Headers
X-Api-Keyonb_live_<key_id>_<secret>required- Your issued Partner API key — see Authentication.
Status codes
2002xx- Every link this account owns, most recent first — see the note below about revoked ones.
4014xx- Missing, malformed, unknown, revoked or expired key. Every authentication failure looks the same — see Authentication.
4294xx- Per-key or per-account rate limit exceeded. Retry after the
Retry-Afterheader.Too many requests — please try again shortly. 5035xx- The read itself failed. Never a confident empty list — retry.
Some of this candidate’s records could not be read right now. Try again shortly.
This list INCLUDES revoked links
A revoked link is not filtered out server-side — it is returned with revokedAt set, the same way the dashboard’s own manage list shows it. Filter for revokedAt === null yourself if you only want links that currently resolve.
curl \ "https://rca-onboardly.com/api/v1/application-form/links" \ -H "X-Api-Key: $ONB_KEY"[ { "id": "5b7e2b4b-6f8b-4a9e-9c3a-8e1c9d0a6f52", "slug": "k7m9pqr2", "url": "https://rca-onboardly.com/application-form/k7m9pqr2", "documents": [ "DBS", "Right to Work" ], "label": "Support Workers — autumn intake", "application_form_sections": null, "start_after_application_form": false, "brand_id": null, "createdAt": "2026-09-10T09:02:14Z", "expiresAt": null, "revokedAt": null }]Mint a fresh campaign application-form link with its own document checklist.
Headers
X-Api-Keyonb_live_<key_id>_<secret>required- Your issued Partner API key — see Authentication.
Request fields
documentsstring[]required- Each entry must be one of this deployment's CLOSED document-type names — unlike Create a candidate and Add documents (see Document names), an unrecognised name here is refused with
invalid_documents, not accepted freely. Up to 50 entries. May be[]to mint a link with no checklist yet. labelstring or nulloptional- Up to 80 characters. Your own name for the campaign — never shown to the candidate.
application_form_sectionsstring[]optional- Which parts of the form are shown, as on Create a candidate; must include
email, because a candidate who arrives through a shared link is created from their email address (a list without it is a 400). Optional. Which parts of the candidate's application form are shown, as a list of any of: address, eligibility, dbs, referees, cv_upload, documents, date_of_birth, email, declarations. Full name and phone number are always shown. Leave the field out to show every part. An empty list[]shows only name and phone number;["cv_upload"]asks name, phone number and an optional CV. A part you leave out is not asked. If you leave outdeclarations, the candidate signs nothing and no signed declaration is kept: the compliance pack lists the declarations as not recorded. The consent is recorded in the declarations, so a list that includesdbsordocumentsmust includedeclarationstoo (a 400 otherwise);cv_uploaddoes not need it. A list has at most 18 entries. An unknown value is a 400 naming the allowed values; duplicates are ignored. Leave it out to show every part; the response and the list then carrynull. start_after_application_formbooleanoptional- Must be the literal
trueto have Onboardly start the WhatsApp conversation automatically for every candidate who fills in this link: the form asks the candidate to agree to WhatsApp messages, and a few minutes after they submit it Onboardly sends the first WhatsApp message to the phone number they gave, only if they ticked that agreement. Nothing is sent when the candidate is created. Leave it out, or sendfalse, and nothing changes: no WhatsApp is sent for this link. A non-boolean value is a 400. The response and each list item carry the stored value (falsewhen unset). An existing link is not changed by this; ask us to change one. brand_idstring (UUID) or nulloptional- The id of one of YOUR client brands (list them with List client brands). The form this link opens then carries that client’s name, logo and colours. Leave it out, or send
null, for Onboardly branding. A value that is not a UUID isinvalid_brand_id; an id that is not one of your brands isbrand_not_found(the same answer whether it does not exist or belongs to another account); an archived brand isbrand_archived. The response and each list item carry the stored value (nullwhen unset). An existing link is not changed by this; ask us to change one.
Status codes
2002xx- Minted. Always a fresh id and slug — there is no idempotent-ensure behaviour here, unlike the single account link above.
4004xx- Malformed body, an unrecognised document name, too many documents, an over-length label, a document set with nothing collectible in it, an invalid
application_form_sections(the message names the problem; a list withoutemailis refused too), or astart_after_application_formthat is not a boolean.invalid_jsoninvalid_documentsinvalid_labellabel_too_longtoo_many_documentsno_collectible_documentsinvalid_brand_idbrand_not_foundbrand_archived 4014xx- Missing, malformed, unknown, revoked or expired key. Every authentication failure looks the same — see Authentication.
4034xx- The key’s user has the
viewerteam role, or their account could not be read just then (retry) — or the key was created Read only (code: "key_read_only", refused before anything else). Checked before the body or any id — see Authentication.Your team role doesn't allow this. Ask your team's admin or owner.This API key is read-only. Create a full-access key to make changes. 4294xx- Per-key or per-account rate limit exceeded. Retry after the
Retry-Afterheader.Too many requests — please try again shortly. 5005xx- No service client, the brand lookup failed (nothing is minted), or the mint could not be committed after retrying.
This resource is temporarily unavailable. Try again shortly.exhaustedwrite_failed
`documents` is a CLOSED list here — not the same rule as Create a candidate / Add documents
Recognised names today: Passport, DBS, Social Work England, NMC Registration, HCPC Registration, Right to Work, Proof of Address 1, Proof of Address 2, Driving Licence, Training Certificate. Any other string is refused with invalid_documents — this endpoint does NOT accept an arbitrary role-specific name the way Create a candidate and Add documents do. no_collectible_documents guards a non-empty set that is entirely reference/CV-shaped names; no name in the list above is one, so it is not reachable through this vocabulary as the config stands today — it exists in case that config ever changes.
organisationId and createdBy are always null on a link minted through this API — an integration key identifies a recruiter, not a human user.
curl -X POST \ "https://rca-onboardly.com/api/v1/application-form/links" \ -H "X-Api-Key: $ONB_KEY" \ -H "Content-Type: application/json" \ -d '{ "documents": [ "DBS", "Right to Work" ], "label": "Support Workers — autumn intake"}'{ "documents": [ "DBS", "Right to Work" ], "label": "Support Workers — autumn intake"}{ "id": "5b7e2b4b-6f8b-4a9e-9c3a-8e1c9d0a6f52", "slug": "k7m9pqr2", "url": "https://rca-onboardly.com/application-form/k7m9pqr2", "documents": [ "DBS", "Right to Work" ], "label": "Support Workers — autumn intake", "application_form_sections": null, "start_after_application_form": false, "brand_id": null}Revoke one campaign application-form link.
Headers
X-Api-Keyonb_live_<key_id>_<secret>required- Your issued Partner API key — see Authentication.
Request fields
linkIdstring (UUID)required- The
idfrom a List application-form links row or a Mint a campaign link response.
Status codes
2002xx- Revoked. Re-revoking an already-revoked link is a harmless no-op, not an error.
4004xx- Malformed body, or
linkIdmissing/blank.invalid_jsonlink_id_required 4014xx- Missing, malformed, unknown, revoked or expired key. Every authentication failure looks the same — see Authentication.
4034xx- The key’s user has the
viewerteam role, or their account could not be read just then (retry) — or the key was created Read only (code: "key_read_only", refused before anything else). Checked before the body or any id — see Authentication.Your team role doesn't allow this. Ask your team's admin or owner.This API key is read-only. Create a full-access key to make changes. 4044xx- A
linkIdthat is not even UUID-shaped, one this account does not own, or one that does not exist — one outcome, never distinguishable, and checked before the rate limit is spent.not_found 4294xx- Per-key or per-account rate limit exceeded. Retry after the
Retry-Afterheader.Too many requests — please try again shortly. 5005xx- No service client, or the write itself failed.
This resource is temporarily unavailable. Try again shortly.write_failed
A non-UUID-shaped linkId 404s here rather than 400ing — a ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ shape check runs before any query, so a malformed id gets the SAME 404 a genuine foreign or missing id does.
curl -X DELETE \ "https://rca-onboardly.com/api/v1/application-form/links" \ -H "X-Api-Key: $ONB_KEY" \ -H "Content-Type: application/json" \ -d '{ "linkId": "5b7e2b4b-6f8b-4a9e-9c3a-8e1c9d0a6f52"}'{ "linkId": "5b7e2b4b-6f8b-4a9e-9c3a-8e1c9d0a6f52"}{ "revoked": true}Client brands#
List the client brands this account holds, to choose a `brand_id` for a campaign link.
Headers
X-Api-Keyonb_live_<key_id>_<secret>required- Your issued Partner API key — see Authentication.
Status codes
2002xx- Every brand this account owns, most recent first; archived brands are not listed.
4014xx- Missing, malformed, unknown, revoked or expired key. Every authentication failure looks the same — see Authentication.
4294xx- Per-key or per-account rate limit exceeded. Retry after the
Retry-Afterheader.Too many requests — please try again shortly. 5035xx- The read itself failed. Never a confident empty list — retry.
Some of this candidate’s records could not be read right now. Try again shortly.
logo_url is an absolute URL, or null for a brand without a logo. An archived brand cannot be put on a new link (brand_archived). Create a brand with Create a client brand.
curl \ "https://rca-onboardly.com/api/v1/application-form/brands" \ -H "X-Api-Key: $ONB_KEY"[ { "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "client_name": "Northgate Care", "agency_name": "Example Recruitment", "logo_url": "https://rca-onboardly.com/api/email-assets/3f2b8c1e-5d4a-4b7e-9a10-2c6d8e0f1a23.png", "primary_colour": "#1D254C", "accent_colour": "#26AA9E", "created_at": "2026-10-20T09:00:00Z", "archived_at": null }]Create a client brand (names, optional logo and colours) on your account, to put on campaign links.
Headers
X-Api-Keyonb_live_<key_id>_<secret>required- Your issued Partner API key — see Authentication.
Request fields
client_namestringrequired- The client the form is branded for, 1 to 80 characters. Shown to candidates and written into the consent sentence they tick, so it can never be changed afterwards. A client_name equal to your account company name makes an agency-only brand: candidates see your company once, with a one-party consent sentence.
agency_namestringoptional- Not accepted: sending this field at all (even empty) is
400agency_name_not_settable. The agency in the consent sentence is always your account’s company name from Settings, because the first WhatsApp message a candidate gets names that company. If the account has none, create is400agency_name_requiredwith amessageto set it first. A brand keeps the agency name it was created with; if the company is renamed, brands made under the old name stop showing their client branding, so create a new one. primary_colourstringoptional#RRGGBB. Used for buttons and links, so it must have a contrast ratio of at least 4.5 against white; otherwiseprimary_colour_low_contrastcomes back withmeasured_ratio,minimumand asuggested_primarythat passes.accent_colourstringoptional#RRGGBB. The header stripe only; never contrast-checked.logofileoptional- PNG, JPEG or SVG. Omit for a name-only brand.
logo_rights_confirmedstringrequired- Must be exactly
true. It stands for: “We have the client’s permission to use its name and logo on our application forms, and will archive this brand when that permission ends.”
Status codes
2012xx- Brand created. Use its
idasbrand_idon a campaign link. 4004xx- A field failed validation, an
agency_namewas sent, or the body is not multipart.invalid_multipartagency_name_not_settableclient_name_requiredclient_name_too_longagency_name_requiredagency_name_too_longinvalid_colourprimary_colour_low_contrastlogo_rights_not_confirmed 4014xx- Missing, malformed, unknown, revoked or expired key. Every authentication failure looks the same — see Authentication.
4034xx- The key’s user has the
viewerteam role, or their account could not be read just then (retry) — or the key was created Read only (code: "key_read_only", refused before anything else). Checked before the body or any id — see Authentication.Your team role doesn't allow this. Ask your team's admin or owner.This API key is read-only. Create a full-access key to make changes. 4094xx- The account already holds the most active brands it may (archived ones do not count).
brand_limit_reached 4134xx- The upload is over the size cap (2 MB for PNG and JPEG, 512 KB for SVG). Refused before the body is parsed.
logo_too_large 4154xx- The logo is not a PNG, JPEG or SVG, an SVG contains something refused (script, external reference, entity), or the file cannot be decoded.
unsupported_logounsafe_svgundecodable_logo 4294xx- Per-key or per-account rate limit exceeded. Retry after the
Retry-Afterheader.Too many requests — please try again shortly. 5005xx- No service client, or a write failed. Nothing is left behind.
server_error 5035xx- Logo storage is not available right now. Retry.
storage_unavailable
The body is multipart/form-data, not JSON. The logo is stored as a PNG; an SVG is rasterised and never served as SVG. A brand is always created on the account that owns the API key; a recruiter_id field in the body is ignored.
curl -X POST \ "https://rca-onboardly.com/api/v1/application-form/brands" \ -H "X-Api-Key: $ONB_KEY"{ "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "client_name": "Northgate Care", "agency_name": "Example Recruitment", "logo_url": "https://rca-onboardly.com/api/email-assets/3f2b8c1e-5d4a-4b7e-9a10-2c6d8e0f1a23.png", "primary_colour": "#1D254C", "accent_colour": "#26AA9E", "created_at": "2026-10-20T09:00:00Z", "archived_at": null}Change a client brand’s logo and/or colours. The names never change.
Headers
X-Api-Keyonb_live_<key_id>_<secret>required- Your issued Partner API key — see Authentication.
Request fields
logofileoptional- A replacement PNG, JPEG or SVG. Needs
logo_rights_confirmed. Once the new logo is in place the old file is deleted (unless another of your brands still uses it). Logo changes are limited to 10 per brand per hour (429). logo_rights_confirmedstringoptional- Must be exactly
truewhen a logo is sent. It stands for: “We have the client’s permission to use its name and logo on our application forms, and will archive this brand when that permission ends.” primary_colourstringoptional#RRGGBB, contrast-checked as on create. Send the field empty to clear it; leave it out to keep the stored value.accent_colourstringoptional#RRGGBB. Send the field empty to clear it; leave it out to keep the stored value.
Status codes
2002xx- Updated. The brand as it now stands.
4004xx- The body names a name field (names cannot change; create a new brand), carries nothing to change, is not multipart, a colour or the rights confirmation failed validation, or the brand is archived.
brand_names_immutablenothing_to_updatebrand_archivedinvalid_multipartinvalid_colourprimary_colour_low_contrastlogo_rights_not_confirmed 4014xx- Missing, malformed, unknown, revoked or expired key. Every authentication failure looks the same — see Authentication.
4034xx- The key’s user has the
viewerteam role, or their account could not be read just then (retry) — or the key was created Read only (code: "key_read_only", refused before anything else). Checked before the body or any id — see Authentication.Your team role doesn't allow this. Ask your team's admin or owner.This API key is read-only. Create a full-access key to make changes. 4044xx- An
idthat is not UUID-shaped (refused before the rate limit), does not exist or belongs to another account — one outcome, never distinguishable.brand_not_found 4094xx- Another logo change for this brand landed between this request reading the brand and writing it. Nothing changed; read the brand again and retry.
logo_changed_concurrently 4134xx- The upload is over the size cap (2 MB for PNG and JPEG, 512 KB for SVG). Refused before the body is parsed.
logo_too_large 4154xx- The logo is not a PNG, JPEG or SVG, an SVG contains something refused (script, external reference, entity), or the file cannot be decoded.
unsupported_logounsafe_svgundecodable_logo 4294xx- Per-key or per-account rate limit exceeded. Retry after the
Retry-Afterheader.Too many requests — please try again shortly. 5005xx- No service client, or the write failed.
server_error 5035xx- Logo storage is not available right now. Retry.
storage_unavailable
The body is multipart/form-data, not JSON. The logo is stored as a PNG; an SVG is rasterised and never served as SVG. A brand is always created on the account that owns the API key; a recruiter_id field in the body is ignored.
Links already minted with this brand pick up the new logo and colours at once. Candidates who already submitted keep the names they ticked.
curl -X PATCH \ "https://rca-onboardly.com/api/v1/application-form/brands/<candidate id>" \ -H "X-Api-Key: $ONB_KEY"{ "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "client_name": "Northgate Care", "agency_name": "Example Recruitment", "logo_url": "https://rca-onboardly.com/api/email-assets/3f2b8c1e-5d4a-4b7e-9a10-2c6d8e0f1a23.png", "primary_colour": "#1D254C", "accent_colour": "#26AA9E", "created_at": "2026-10-20T09:00:00Z", "archived_at": null}Archive a client brand. It leaves the list and cannot go on a new link.
Headers
X-Api-Keyonb_live_<key_id>_<secret>required- Your issued Partner API key — see Authentication.
Status codes
2002xx- Archived (or already archived: the call is idempotent). The brand is kept, never deleted.
4014xx- Missing, malformed, unknown, revoked or expired key. Every authentication failure looks the same — see Authentication.
4034xx- The key’s user has the
viewerteam role, or their account could not be read just then (retry) — or the key was created Read only (code: "key_read_only", refused before anything else). Checked before the body or any id — see Authentication.Your team role doesn't allow this. Ask your team's admin or owner.This API key is read-only. Create a full-access key to make changes. 4044xx- An
idthat is not UUID-shaped (refused before the rate limit), does not exist or belongs to another account — one outcome, never distinguishable.brand_not_found 4294xx- Per-key or per-account rate limit exceeded. Retry after the
Retry-Afterheader.Too many requests — please try again shortly. 5005xx- No service client, or the write failed.
server_error
Links already minted with the brand keep working, but from now on they open the form with Onboardly branding for new applicants. An applicant who already started under the brand keeps seeing it. Archiving also hides the brand from the list and stops it being chosen for new links.
curl -X DELETE \ "https://rca-onboardly.com/api/v1/application-form/brands/<candidate id>" \ -H "X-Api-Key: $ONB_KEY"{ "archived": true}GET /api/v1/application-form/link
curl \ "https://rca-onboardly.com/api/v1/application-form/link" \ -H "X-Api-Key: $ONB_KEY"{ "url": null, "slug": null}{ "url": "https://rca-onboardly.com/application-form/k7m9pqr2", "slug": "k7m9pqr2"}POST /api/v1/application-form/link
curl -X POST \ "https://rca-onboardly.com/api/v1/application-form/link" \ -H "X-Api-Key: $ONB_KEY"{ "url": "https://rca-onboardly.com/application-form/k7m9pqr2", "slug": "k7m9pqr2"}{ "url": "https://rca-onboardly.com/application-form/k7m9pqr2", "slug": "k7m9pqr2"}GET /api/v1/application-form/links
curl \ "https://rca-onboardly.com/api/v1/application-form/links" \ -H "X-Api-Key: $ONB_KEY"[ { "id": "5b7e2b4b-6f8b-4a9e-9c3a-8e1c9d0a6f52", "slug": "k7m9pqr2", "url": "https://rca-onboardly.com/application-form/k7m9pqr2", "documents": [ "DBS", "Right to Work" ], "label": "Support Workers — autumn intake", "application_form_sections": null, "start_after_application_form": false, "brand_id": null, "createdAt": "2026-09-10T09:02:14Z", "expiresAt": null, "revokedAt": null }]POST /api/v1/application-form/links
curl -X POST \ "https://rca-onboardly.com/api/v1/application-form/links" \ -H "X-Api-Key: $ONB_KEY" \ -H "Content-Type: application/json" \ -d '{ "documents": [ "DBS", "Right to Work" ], "label": "Support Workers — autumn intake"}'{ "documents": [ "DBS", "Right to Work" ], "label": "Support Workers — autumn intake"}{ "id": "5b7e2b4b-6f8b-4a9e-9c3a-8e1c9d0a6f52", "slug": "k7m9pqr2", "url": "https://rca-onboardly.com/application-form/k7m9pqr2", "documents": [ "DBS", "Right to Work" ], "label": "Support Workers — autumn intake", "application_form_sections": null, "start_after_application_form": false, "brand_id": null}DELETE /api/v1/application-form/links
curl -X DELETE \ "https://rca-onboardly.com/api/v1/application-form/links" \ -H "X-Api-Key: $ONB_KEY" \ -H "Content-Type: application/json" \ -d '{ "linkId": "5b7e2b4b-6f8b-4a9e-9c3a-8e1c9d0a6f52"}'{ "linkId": "5b7e2b4b-6f8b-4a9e-9c3a-8e1c9d0a6f52"}{ "revoked": true}GET /api/v1/application-form/brands
curl \ "https://rca-onboardly.com/api/v1/application-form/brands" \ -H "X-Api-Key: $ONB_KEY"[ { "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "client_name": "Northgate Care", "agency_name": "Example Recruitment", "logo_url": "https://rca-onboardly.com/api/email-assets/3f2b8c1e-5d4a-4b7e-9a10-2c6d8e0f1a23.png", "primary_colour": "#1D254C", "accent_colour": "#26AA9E", "created_at": "2026-10-20T09:00:00Z", "archived_at": null }]POST /api/v1/application-form/brands
curl -X POST \ "https://rca-onboardly.com/api/v1/application-form/brands" \ -H "X-Api-Key: $ONB_KEY"{ "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "client_name": "Northgate Care", "agency_name": "Example Recruitment", "logo_url": "https://rca-onboardly.com/api/email-assets/3f2b8c1e-5d4a-4b7e-9a10-2c6d8e0f1a23.png", "primary_colour": "#1D254C", "accent_colour": "#26AA9E", "created_at": "2026-10-20T09:00:00Z", "archived_at": null}PATCH /api/v1/application-form/brands/{id}
curl -X PATCH \ "https://rca-onboardly.com/api/v1/application-form/brands/<candidate id>" \ -H "X-Api-Key: $ONB_KEY"{ "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7", "client_name": "Northgate Care", "agency_name": "Example Recruitment", "logo_url": "https://rca-onboardly.com/api/email-assets/3f2b8c1e-5d4a-4b7e-9a10-2c6d8e0f1a23.png", "primary_colour": "#1D254C", "accent_colour": "#26AA9E", "created_at": "2026-10-20T09:00:00Z", "archived_at": null}DELETE /api/v1/application-form/brands/{id}
curl -X DELETE \ "https://rca-onboardly.com/api/v1/application-form/brands/<candidate id>" \ -H "X-Api-Key: $ONB_KEY"{ "archived": true}