Barclays Rewards Earn API

Record and query rewards points earned on a Barclaycard account, for partners integrating a Barclays loyalty programme with their own earn events.

Operations 1

GET /cards/accounts/external/{externalAccountId}/rewards-earn/history Get Rewards Earn History Details #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/rewards-earn-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

barclays-rewards-earn-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Rewards Earn
  description: API for retrieving reward earned information of an account
  version: '1.0'
x-method: searched
x-source: https://developer.barclays.com/api/apis/versions/556aab79-528f-41bf-b75e-29aa4874061a.bdn/design?specification=oas31
x-harvested: '2026-09-04'
x-harvested-note: Verbatim OpenAPI 3.1 design export from the Barclays API Exchange registry (developer.barclays.com), fetched
  anonymously. The untouched export is in openapi/_original/barclays-rewards-earn-openapi.json. The UK Open Banking documents
  carry OBIE (openbanking.org.uk) in info.contact/termsOfService because they are the OBIE standard contract as Barclays implements
  and publishes it — the API, the registry record and the host are Barclays'.
tags:
- name: RewardsEarnHistory
  description: Rewards Earn History Details
paths:
  /cards/accounts/external/{externalAccountId}/rewards-earn/history:
    summary: Get Rewards Earn History Details
    description: Get Rewards Earn History Details
    get:
      tags:
      - RewardsEarnHistory
      summary: Get Rewards Earn History Details
      description: "Retrieves a list of reward posted for a specific external account.\n\n**Query Parameters:**\n- `numberOfPastCycles`:\
        \ Number of past cycles required \n\n**Response includes:**\n- List of Reward Earned"
      operationId: getRewardsEarnHistoryDetails
      parameters:
      - name: Correlation-ID
        in: header
        description: "Unique end-to-end trace ID. The initiating system (such as a Channel or \nBatch Job), must generate\
          \ this unique ID, then this must be passed \nthrough the API call stack. This is required to maintain compliance\
          \ with the current Barclays REST Standard."
        required: true
        deprecated: false
        allowEmptyValue: false
        schema:
          type: string
          maxLength: 36
          minLength: 36
          pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
        example: 7d444840-9dc0-11d1-b245-5ffdce74fad2
      - name: externalAccountId
        in: path
        description: A unique id (similar to UUID) created for each customer account
        required: true
        schema:
          type: string
          format: uuid
          example: 0dbcb7ee-6c59-483b-966a-44d11557665b
          maxLength: 36
          minLength: 36
          pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
        example: 0dbcb7ee-6c59-483b-966a-44d11557665b
      - name: numberOfPastCycles
        in: query
        description: Number of past billing cycles to retrieve (excluding current cycle). Maximum 24 cycles allowed.
        required: false
        schema:
          type: integer
          default: 24
          maximum: 24
          minimum: 0
        example: 24
      - name: Authorization
        in: header
        description: TIAA-US External token
        required: true
        deprecated: false
        schema:
          type: string
        example: Bearer <token>
      responses:
        '200':
          $ref: '#/components/responses/RewardEarnHistoryRes'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      deprecated: false
components:
  schemas:
    ErrorType:
      type: object
      additionalProperties: true
      description: Message details - additional operation execution information.
      properties:
        id:
          type: string
          description: Generated message identifier for particular request, helping to locate server logs.
          example: 9709-4675-2456-7801
          maxLength: 50
          minLength: 1
          pattern: ^[a-zA-Z0-9\-]{1,50}$
        code:
          type: string
          description: Machine readable, unique code of the message related to particular case within operation execution.
          example: ACCOUNT_NUMBER_NOT_FOUND
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z0-9_]{1,100}$
        title:
          type: string
          description: Short description of the error. Not for displaying purposes.
          example: The authorization credentials required for this request are invalid.
          maxLength: 250
          minLength: 1
          pattern: ^[a-zA-Z0-9\s"=,.']{1,250}$
        detail:
          type: string
          description: Provides additional low-level details about the error to assist with troubleshooting. Not for displaying
            purposes.
          maxLength: 250
          minLength: 1
          pattern: ^[a-zA-Z0-9\s"=,.']{1,250}$
        meta:
          type: object
          additionalProperties: true
          description: Object containing non-standard meta-information about the error.
      required:
      - code
      - id
      - title
    RewardInformation:
      type: object
      properties:
        description:
          type: string
          description: Description of the reward
          example: All Off Partner Purchases
          maxLength: 255
          minLength: 0
          pattern: ^[a-zA-Z0-9\s\-.,&()'/]+$
        type:
          type: string
          description: Type of reward
          enum:
          - BASE_EARN
          - BONUS
          - ADJ
          example: BASE_EARN
        earnedAwardValue:
          type: number
          format: double
          description: Reward amount
          example: 10
          maximum: 10000000
          minimum: -10000000
      required:
      - description
      - earnedAwardValue
      - type
    ErrorResponseType:
      type: object
      additionalProperties: false
      deprecated: false
      description: 'An API error response.

        '
      properties:
        meta:
          type: object
          additionalProperties: true
          description: Contains Non-standard meta information
        errors:
          type: array
          description: 'Contains one or more error messages and is mutually exclusive with the data item.

            This will not be returned in success scenarios.

            '
          items:
            $ref: '#/components/schemas/ErrorType'
          maxItems: 50
          minItems: 0
      nullable: false
    RewardsEarnHistoryData:
      type: object
      deprecated: false
      properties:
        rewardCurrency:
          type: string
          description: Currency type for the reward
          example: cash rewards
          maxLength: 255
          minLength: 1
          pattern: ^[a-zA-Z0-9®™$\s_\-\.]+$
        rewardHistory:
          type: array
          description: List of reward earned by statementDate
          items:
            $ref: '#/components/schemas/RewardInformationSummaryResponse'
          maxItems: 100
          minItems: 0
      required:
      - rewardCurrency
      - rewardHistory
      nullable: false
    RewardInformationSummaryResponse:
      type: object
      properties:
        statementDate:
          type: string
          format: date
          description: Statement date for the cycle
          example: '2025-11-01'
        isCurrent:
          type: boolean
          description: cycle type
          example: true
        totalEarnedAwardValue:
          type: number
          format: double
          description: Reward amount
          example: 10
          maximum: 10000000
          minimum: -10000000
        rewardInformationList:
          type: array
          description: summary of reward earned by award description
          items:
            $ref: '#/components/schemas/RewardInformation'
          maxItems: 200
          minItems: 0
      required:
      - isCurrent
      - rewardInformationList
      - statementDate
      - totalEarnedAwardValue
    RewardsEarnHistoryResponse:
      type: object
      deprecated: false
      properties:
        data:
          $ref: '#/components/schemas/RewardsEarnHistoryData'
      required:
      - data
      nullable: false
  responses:
    BadRequest:
      description: "The request could not be understood by the server due to malformed \nsyntax. The client SHOULD NOT repeat\
        \ the request without \nmodifications.\n"
      headers:
        Cache-Control:
          $ref: '#/components/headers/Cache-Control'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseType'
          examples:
            example-error-400-bad-request:
              $ref: '#/components/examples/example-error-400-bad-request'
    RewardEarnHistoryRes:
      description: Successful response.
      headers:
        Cache-Control:
          $ref: '#/components/headers/Cache-Control'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RewardsEarnHistoryResponse'
          examples:
            multipleRewards:
              summary: Multiple reward earned
              $ref: '#/components/examples/rewards-earn-history'
    TooManyRequests:
      description: "When a server is under attack or just receiving a very \nlarge number of requests from a single party,\
        \ responding \nto each with a 429 status code will consume resources. \nTherefore, servers may drop connections or\
        \ take other steps\ninstead of responding with the 429 status code, when limiting\nresource usage.\n"
      headers:
        Cache-Control:
          $ref: '#/components/headers/Cache-Control'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseType'
          examples:
            example-error-429:
              $ref: '#/components/examples/example-error-429'
    Unauthorized:
      description: 'The user could not be authenticated for this request.

        '
      headers:
        Cache-Control:
          $ref: '#/components/headers/Cache-Control'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseType'
          examples:
            example-error-401:
              $ref: '#/components/examples/example-error-401'
    Forbidden:
      description: 'The user is not permitted to access the requested operation and it cannot be completed.

        '
      headers:
        Cache-Control:
          $ref: '#/components/headers/Cache-Control'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseType'
          examples:
            example-error-403:
              $ref: '#/components/examples/example-error-403'
    ServiceUnavailable:
      description: "temporary maintenance of service, try again later. The implication \nis that this is a temporary condition\
        \ which will be alleviated \nafter some delay. If known, the length of the delay will be \nindicated in a Retry-After\
        \ header. If no Retry-After is given, \nthe client SHOULD handle the response as it would for a 500 response. \nNote:\
        \ The existence of the 503 status code does not imply that a \nserver will use it when becoming overloaded. Servers\
        \ may simply \nrefuse the connection.\n"
      headers:
        Cache-Control:
          $ref: '#/components/headers/Cache-Control'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseType'
          examples:
            example-error-503:
              $ref: '#/components/examples/example-error-503'
    InternalServerError:
      description: "Server encountered an error processing request. This should not \nhappen normally, but it is a generic\
        \ error message, given when \nno more specific message is suitable.\n"
      headers:
        Cache-Control:
          $ref: '#/components/headers/Cache-Control'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseType'
          examples:
            example-error-500:
              $ref: '#/components/examples/example-error-500'
    NotFound:
      description: "Server has not found a resource with that URI. This may be \ntemporary and permanent condition. This status\
        \ code is \ncommonly used when the server does not wish to reveal \nexactly why the request has been refused, or when\
        \ no other \nresponse is applicable.\n"
      headers:
        Cache-Control:
          $ref: '#/components/headers/Cache-Control'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseType'
          examples:
            example-error-404:
              $ref: '#/components/examples/example-error-404'
  parameters:
    Authorization:
      name: Authorization
      in: header
      description: Bearer Token
      required: true
      deprecated: false
      allowEmptyValue: false
      schema:
        type: string
        maxLength: 2048
        minLength: 32
        pattern: ^[A-Za-z0-9\-_\.\ ]{32,2048}$
      example: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0
    Correlation-ID:
      name: Correlation-ID
      in: header
      description: "Unique end-to-end trace ID. The initiating system (such as a Channel or \nBatch Job), must generate this\
        \ unique ID, then this must be passed \nthrough the API call stack. This is required to maintain compliance with the\
        \ current Barclays REST Standard.\n"
      required: true
      deprecated: false
      allowEmptyValue: false
      schema:
        type: string
        maxLength: 36
        minLength: 36
        pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
      example: 7d444840-9dc0-11d1-b245-5ffdce74fad2
    NumberOfPastCycles:
      name: numberOfPastCycles
      in: query
      description: Number of past billing cycles to retrieve (excluding current cycle). Maximum 24 cycles allowed.
      required: false
      schema:
        type: integer
        default: 24
        maximum: 24
        minimum: 0
      example: 24
    ExternalAccountID:
      name: externalAccountId
      in: path
      description: A unique id (similar to UUID) created for each customer account
      required: true
      schema:
        type: string
        format: uuid
        example: 0dbcb7ee-6c59-483b-966a-44d11557665b
        maxLength: 36
        minLength: 36
        pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
      example: 0dbcb7ee-6c59-483b-966a-44d11557665b
  examples:
    example-error-404:
      value:
        errors:
        - id: 9709-4675-2456-7801
          code: RESOURCE_NOT_FOUND
          title: The requested operation failed because a resource associated with the request could not be found.
    example-error-503:
      value:
        errors:
        - id: 9709-4675-2456-7801
          code: SERVICE_UNAVAILABLE
          title: The server is currently unavailable
    rewards-earn-history:
      value:
        data:
          rewardCurrency: cash rewards
          rewardHistory:
          - statementDate: '2026-02-26'
            isCurrent: true
            totalEarnedAwardValue: 125.5
            rewardInformationList:
            - description: Samsung On partner
              type: BASE_EARN
              earnedAwardValue: 25.5
            - description: Welcome Bonus
              type: BONUS
              earnedAwardValue: 100
          - statementDate: '2026-01-26'
            isCurrent: false
            totalEarnedAwardValue: 50
            rewardInformationList:
            - description: Samsung On partner
              type: BASE_EARN
              earnedAwardValue: 20
            - description: Samsung Off partner
              type: BASE_EARN
              earnedAwardValue: 30
          - statementDate: '2026-12-26'
            isCurrent: false
            totalEarnedAwardValue: 0
            rewardInformationList: []
          - statementDate: '2025-11-26'
            isCurrent: false
            totalEarnedAwardValue: 40
            rewardInformationList:
            - description: Samsung On partner
              type: BASE_EARN
              earnedAwardValue: 20
            - description: Adhoc Rewards
              type: ADJ
              earnedAwardValue: 20
    example-error-429:
      value:
        errors:
        - id: 9709-4675-2456-7801
          code: TOO_MANY_REQUESTS
          title: Too many requests
    example-error-400-bad-request:
      value:
        errors:
        - id: 9709-4675-2456-7801
          code: BAD_REQUEST
          title: The request is invalid or not properly formed.
    example-error-401:
      value:
        errors:
        - id: 9709-4675-2456-7801
          code: AUTHENTICATION_ERROR
          title: The user could not be authenticated for this request.
    example-error-500:
      value:
        errors:
        - id: 9709-4675-2456-7801
          code: INTERNAL_SERVER_ERROR
          title: The request failed due to an internal error.
    example-error-403:
      value:
        errors:
        - id: 9709-4675-2456-7801
          code: ACCESS_FORBIDDEN
          title: The user is not permitted to access the requested operation and it cannot be completed.
  headers:
    Cache-Control:
      description: GIS mandatory response header. This is added by the Cognac sidecar.
      schema:
        type: string
        default: no-cache, no-store, must-revalidate
        deprecated: false
        example: no-cache, no-store, must-revalidate
        maxLength: 35
        minLength: 35
        pattern: ^no-cache, no-store, must-revalidate$
        nullable: false
  securitySchemes:
    ExternalTiaaUsCCAuth:
      type: oauth2
      description: OAuth2.0 Client Credentials Grant authentication using TIAA-US for external APIs
      flows:
        clientCredentials:
          tokenUrl: https://token.tiaa-dev.us.barclays.intranet:8443/as/token.oauth2
          scopes:
            read: read only
            write: write only