Journey Docs
Partner API ExplorerLoyaltyBenefits

Update a benefit

Required scopepartner:loyalty:benefits:write
PATCH
/v1/partner/loyalty/programs/{programExternalId}/benefits/{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 benefit id.

programExternalId*string

External id of the loyalty program that owns the benefit.

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
cadence?string
Value in"one_time""annual""per_stay""every_n_stays"
cadenceN?|

Required when cadence becomes every_n_stays and the stored row does not already carry an N. Switching AWAY from every_n_stays clears it automatically — an explicit null is accepted but never necessary.

description?string
Lengthlength <= 2000
memberTitle?string

Guest-facing title. See the note on CreateBenefitRequest.memberTitle.

Length1 <= length <= 200
memberVisible?boolean

Publish or unpublish. Turning this ON requires a guest title — either sent in the same patch or already stored — or the write is a 400.

name?string
Length1 <= length <= 200
rateCode?|

Rate code. Send null to CLEAR it — not '', which is a 400. An empty string would otherwise store as an empty code that reads back as one, and the "belongs to the member-rate benefit" guard tests for presence.

Length1 <= length <= 64
rateCodeParam?|

Booking-engine query parameter. null clears it; '' is a 400.

Length1 <= length <= 64
valueAmount?string
valueUnit?string
Value in"multiplier""count""points""usd""percent"

Response Body

The updated benefit.

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