Get Benefit

Retrieve a single loyalty benefit by ID.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Get Benefit

Retrieves the details of a single loyalty benefit by its loyaltyBenefitId. By default, this returns the benefit's current published version. If a LIVE benefit has an edit in progress, the published version is still returned by default — pass status=DRAFT to retrieve the in-progress draft fork instead.

Example request

curl -X GET "https://eu.intouch.capillarytech.com/v3/benefits/86c29c3653f74c0a9f1b2c3d4e5f6a7b" \
  -H "Authorization: Basic <base64-encoded-credentials>"
curl -X GET "https://eu.intouch.capillarytech.com/v3/benefits/86c29c3653f74c0a9f1b2c3d4e5f6a7b?status=DRAFT" \
  -H "Authorization: Basic <base64-encoded-credentials>"

Prerequisites

  • Authentication: Basic auth or OAuth token with loyalty program read permissions.

Resource information

HTTP methodGET
AuthenticationBasic or OAuth
Pagination supported?NO
Rate limitYES
Batch supportNO

Path parameters

FieldTypeRequiredDescription
loyaltyBenefitIdstringRequiredUnique ID of the benefit, returned by Create Benefit.

Query parameters

FieldTypeRequiredDescription
statusenumOptionalPass DRAFT to fetch the in-progress draft fork of a LIVE benefit. Omit this parameter to get the current published version. Supported values: DRAFT.

Example response

{
  "data": {
    "loyaltyBenefitId": "86c29c3653f74c0a9f1b2c3d4e5f6a7b",
    "version": 0,
    "metadata": {
      "name": "Birthday bonus",
      "description": "Extra points on birthday month",
      "programId": "973",
      "orgId": 12345,
      "expiryType": "CUSTOM",
      "status": "DRAFT",
      "customerEligibilityType": null,
      "benefitIdentifier": null,
      "loyaltyBenefitRecordId": null,
      "startDate": "2026-07-01T00:00:00+05:30",
      "endDate": "2026-12-31T23:59:59+05:30",
      "timezoneName": "Asia/Kolkata",
      "createdOn": "2026-06-23T14:32:24+05:30",
      "lastModifiedOn": "2026-06-23T14:32:24+05:30",
      "createdBy": 123456,
      "lastModifiedBy": 123456,
      "draftDetails": null
    },
    "benefitCategoryId": -1,
    "tierIds": [8159, 8165],
    "optin": {
      "basedOn": null,
      "audienceMapping": null,
      "activities": null,
      "restrictions": null,
      "optInStartDate": "2026-07-01T09:00:00+05:30",
      "optInEndDate": "2026-12-31T18:00:00+05:30"
    },
    "activities": [
      {
        "type": "SINGLE",
        "event": "TransactionAdd",
        "allCycles": []
      }
    ],
    "limits": null,
    "configAttributes": null,
    "liabilityOwnerSplitInfo": null,
    "workflowMetadata": null,
    "communicationApprovalStatus": null,
    "parentId": null,
    "parentDetails": null,
    "comments": null,
    "id": "6a3a4ba0c1d2e3f4a5b6c7d8"
  },
  "errors": null,
  "warnings": null
}

Response parameters

FieldTypeDescription
dataobjectObject containing the benefit.
.loyaltyBenefitIdstringUnique ID of the benefit.
.versionintegerVersion number of the benefit. Increments on every update.
.metadataobjectObject containing the benefit's core attributes and audit details.
..namestringDisplay name of the benefit.
..descriptionstringDescription of the benefit.
..programIdstringLoyalty program ID the benefit belongs to.
..orgIdintegerOrg ID derived from the auth token.
..expiryTypeenumHow the benefit's validity ends. Possible values: CUSTOM, INDEFINITE.
..statusenumCurrent stage of the benefit lifecycle. Possible values: DRAFT, PENDING_APPROVAL, LIVE, UPCOMING, PAUSED, STOPPED.
..customerEligibilityTypestringCustomer eligibility configuration. null unless advanced eligibility is set up.
..benefitIdentifierstringIdentifier assigned when the benefit is approved. null while the benefit is in DRAFT or PENDING_APPROVAL.
..loyaltyBenefitRecordIdintegerRecord ID assigned when the benefit is approved. null while the benefit is in DRAFT or PENDING_APPROVAL.
..startDatestringDate and time when the benefit starts, in ISO 8601 format. Returned in the offset it was sent in.
..endDatestringDate and time when the benefit ends, in ISO 8601 format. For INDEFINITE benefits, set to a far-future date automatically.
..timezoneNamestringIANA time zone name, as sent.
..createdOntimestampIndicates the date and time the benefit was created, in ISO 8601 format, returned in the server time zone.

EU server example: 2025-12-16T14:30:45Z → 16 December 2025, 14:30:45 (UTC)

India server example (real capture from this environment): 2026-06-23T14:32:24+05:30 → 23 June 2026, 14:32:24 (IST)

Note: The response time zone always matches the server time zone, regardless of the time zone offset in the request.
..lastModifiedOntimestampIndicates the date and time the benefit was last modified, in ISO 8601 format, returned in the server time zone.

EU server example: 2025-12-16T14:30:45Z → 16 December 2025, 14:30:45 (UTC)

India server example (real capture from this environment): 2026-06-23T14:32:24+05:30 → 23 June 2026, 14:32:24 (IST)

Note: The response time zone always matches the server time zone, regardless of the time zone offset in the request.
..createdByintegerTill ID of the person who created the benefit. Retrieve till IDs with the Get Active Tills API.
..lastModifiedByintegerTill ID of the person who last modified the benefit. Retrieve till IDs with the Get Active Tills API.
..draftDetailsobjectObject containing details of an in-progress draft when a LIVE benefit has an edit underway. Contains the draft's id, status, version, lastModifiedBy, and lastModifiedOn. null when there's no draft in progress.
.benefitCategoryIdintegerBenefit category ID. -1 means no benefit category is assigned.
.tierIdsarrayTier IDs the benefit applies to.
.optinobjectObject containing the opt-in window, as sent. null if no opt-in window was configured.
..basedOnstringOpt-in basis. null unless configured.
..audienceMappingobjectObject containing the opt-in's audience mapping. null unless configured.
..activitiesarrayActivities scoped to the opt-in. null unless configured.
..restrictionsobjectObject containing the opt-in's restrictions. null unless configured.
..optInStartDatestringDate and time when the opt-in window opens, in ISO 8601 format.
..optInEndDatestringDate and time when the opt-in window closes, in ISO 8601 format.
.activitiesarrayActivities the benefit applies to.
..typeenumActivity type. Possible values: SINGLE.
..namestringName of the activity. Returned only when a name is set.
..eventstringEvent that triggers the activity.
..expJSONstringJSON representation of the activity's rule expression. Returned only when a rule expression is set.
..commonCycleActionMappingarrayCycle-to-action mappings for the activity. Returned only when cycles are configured.
...cyclestringID of the cycle this mapping applies to.
...actionsarrayActions that run when the target is achieved in this cycle.
...startDatestringIndicates the cycle's start date and time in ISO 8601 format, returned in the server time zone.

EU server example: 2025-12-16T14:30:45Z → 16 December 2025, 14:30:45 (UTC)

India server example (real capture from this environment): 2026-06-18T00:00:00+05:30 → 18 June 2026, 00:00:00 (IST)

Note: The response time zone always matches the server time zone, regardless of the time zone offset in the request.
...endDatestringIndicates the cycle's end date and time in ISO 8601 format, returned in the server time zone.

EU server example: 2025-12-16T14:30:45Z → 16 December 2025, 14:30:45 (UTC)

India server example (real capture from this environment): 2026-07-30T23:59:59+05:30 → 30 July 2026, 23:59:59 (IST)

Note: The response time zone always matches the server time zone, regardless of the time zone offset in the request.
..milestonesarrayMilestone definitions for the activity. Returned only when milestones are configured.
..allCyclesarrayCycle entries computed for the activity.
.limitsarrayUsage limits configured for the benefit. null or empty unless limits are configured.
.configAttributesobjectObject containing advanced configuration attributes. null unless configured.
.liabilityOwnerSplitInfoarrayLiability split configuration entries. Each entry defines how liability for the benefit is split. null unless configured.
..liabilityOwnerIdintegerID of the liability owner.
..liabilityOwnerNamestringName of the liability owner.
..liabilityOwnerTypeenumType of the liability owner. Possible values: PARTNER, PROGRAM.
..componentTypeenumComponent the split applies to. Possible values: PROGRAM, PROMOTION, BENEFITS.
..componentIdintegerID of the component the split applies to.
..rationumberPercentage share of the liability assigned to this owner.
..orgIdintegerOrg ID of the liability owner entry.
..createdByintegerID of the user who created the liability owner entry.
..activebooleanWhether the liability owner entry is active.
.workflowMetadataobjectObject containing additional workflow data. null unless configured.
.communicationApprovalStatusobjectObject containing the communication approval result. null until the benefit is approved.
.parentIdstringID of the parent benefit, when this benefit is a draft fork of a LIVE benefit. null otherwise.
.parentDetailsobjectObject containing details of the parent benefit. null otherwise.
.commentsstringReviewer's note from the most recent workflow action. null until reviewed.
.idstringUnique ID of this benefit record.
errorsarrayError list. null on success.
warningsarrayWarning list. null on success.

Error & warning codes

CodeTypeDescription
loyaltyBenefitId=<id>ErrorNo benefit matches the given loyaltyBenefitId. HTTP 404.

Note: This error returns a generic numeric code on the wire rather than an error-specific number. The Code column shows the identifying text carried in the error message.


Path Params
string
required
Query Params
string
enum
Allowed:
Headers
string
Responses
200

Benefit record

401

Authentication failed

404

No benefit matches the given loyaltyBenefitId

Language
Credentials
Basic
base64
:
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here!