Journey Docs
Partner API ExplorerLoyaltyPrograms

Update a loyalty program

Required scopepartner:loyalty:programs:write
PATCH
/v1/partner/loyalty/programs/{externalId}

Partial update: only the fields present in the body are changed.

Authorization

headerAuthorizationBearer <token>

WorkOS access token (JWT) for a user who is a member of the partner organization. The organization the request is scoped to is taken from the token, not from a header or query parameter.

Only a JWT is accepted in this header. A Journey jny_ API key sent as a bearer token is rejected with 401 Invalid or expired token; send it in X-API-Key instead.

WorkOS organization API keys are not accepted yet.

Path Parameters

externalId*string

External loyalty program id.

Query Parameters

organizationId?string

External organization id (HXP UUID or WorkOS organization id). Only Journey superadmin callers may set it; for a partner credential the organization is taken from the credential and this parameter is ignored.

Request Body

application/json
  1. body
aboutUrl?|

"ABOUT PROGRAM" link surfaced on member reads. null clears it. Additive (B2.2) — omitting it leaves the stored value untouched.

Formaturi
Lengthlength <= 2000
cardImage?|null

Full-bleed background for the member wallet's program card, with the logo wordmark over it. Same all-or-nothing trio as the logo (loyalty_programs_card_image_check), so send the whole object or null to clear it; omitting it leaves the stored value untouched.

Configured, never derived: a background borrowed from property media would shift under the partner and give them no say in how their program is presented.

invitationLinkMode?string

Where a guest opening an unclaimed reservation's claim link ends up, for stays this program owns: journey (Journey claim page) or custom (this program's join page in invitation mode). custom is refused unless the program is active and its join page is published. Decided per click, so a change applies to links already sent.

Value in"custom""journey"
logo?|null

null clears the logo; an object replaces all three columns at once.

name?string
Length1 <= length <= 200
ownerExternalId?string

See {@link CreateLoyaltyProgramRequest.ownerExternalId}.

Lengthlength <= 255
ownerType?string

Re-scope the program (B1.1). Omitting ownerType leaves the stored scope untouched — there is no way to clear a scope, because every program has exactly one.

Re-scoping an ACTIVE program changes which stays credit it, so the Studio should treat it as a configuration change, not a cosmetic edit.

Value in"brand""org""venue"

Response Body

The updated program.

curl -X PATCH 'https://api-prd.cf.journey.com/v1/partner/loyalty/programs/string' \  -H 'Content-Type: application/json' \  -d '{}'
Empty