Create a loyalty program
partner:loyalty:programs:writeCreates a program in draft. It earns nothing and shows nowhere until it is activated.
AuthorizationBearer <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.
application/json- body
name*string1 <= length <= 200organizationId?stringExternal org ID for global-scope (superadmin) callers creating within a specific org. Partner tokens ignore this — they are scoped to their own org.
ownerExternalId?stringEXTERNAL identifier of the owning brand (document/external id) or venue
(property external id). REQUIRED when ownerType is brand or venue;
rejected for org, which is always owned by the calling organization.
Never an internal id — the server resolves it and refuses anything the caller's org does not own (non-disclosing 404).
length <= 255ownerType?stringProgram SCOPE (OpenSpec add-partner-loyalty-tiers, B1.1). Defaults to
org — which is what every pre-tiers program is — so omitting both fields
keeps the original create contract byte-for-byte.
Stay-credit attribution is highest-specificity-wins: a stay credits the most specific active program covering the property (venue > brand > org) and no less-specific one, so this is the field that decides which program a stay qualifies toward.
"brand""org""venue"The newly created draft program.
curl -X POST 'https://api-prd.cf.journey.com/v1/partner/loyalty/programs' \ -H 'Content-Type: application/json' \ -d '{ "name": "string"}'