# Getting Pledge History (Python or generic request)

**URL:** <https://www.patreondevelopers.com/t/getting-pledge-history-python-or-generic-request/2853>\
**Category:** Uncategorized\
**Created:** [March 8, 2020, 12:16am UTC](https://www.patreondevelopers.com/t/getting-pledge-history-python-or-generic-request/2853 "2020-03-08T00:16:22Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![NStephenH](https://yyz2.discourse-cdn.com/flex036/user_avatar/www.patreondevelopers.com/nstephenh/32/1212_2.png) [@NStephenH](https://www.patreondevelopers.com/u/NStephenH)\
**Post date:** [March 8, 2020, 12:16am UTC](https://www.patreondevelopers.com/t/getting-pledge-history-python-or-generic-request/2853/1 "2020-03-08T00:16:23Z")

</div>

Hello,  
I’m trying to figure out how to get the pledge history for a member of a campaign. I’ve tried  
campaign = api\_client.get\_campaigns\_by\_id\_members(campaign\_id, page\_size=50, cursor=cursor,  
fields={‘member’: [  
‘pledge\_history’,  
]})  
and it returns that pledge\_history is not a valid field. The library doesn’t mention pledge\_history or pledge events, and I can’t figure out how to get them. I finally figured out how to get the pledge\_history of the user using a request, but I need the details from pledge event and don’t know what endpoint to get it from.

```
suffix = "campaigns/{}/members?include=pledge_history".format(campaign_id)
        response = requests.get(
            "https://www.patreon.com/api/oauth2/v2/{}".format(suffix),
            headers={
                'Authorization': "Bearer {}".format(access_token),
                'User-Agent': "Patreon CGT",
            }
        )
        campaign = response.json()

```

Please let me know what endpoint to use for this information

---

<div class="post-metadata">

**Author:** ![sneakycrow](https://yyz2.discourse-cdn.com/flex036/user_avatar/www.patreondevelopers.com/sneakycrow/32/1592_2.png) [@sneakycrow](https://www.patreondevelopers.com/u/sneakycrow)\
**Post date:** [February 5, 2021, 3:19pm UTC](https://www.patreondevelopers.com/t/getting-pledge-history-python-or-generic-request/2853/2 "2021-02-05T15:19:38Z")

</div>

Hey NStephenH,

I’m running into the same issue. Were you able to solve for this?

---

<div class="post-metadata">

**Author:** ![codebard](https://yyz2.discourse-cdn.com/flex036/user_avatar/www.patreondevelopers.com/codebard/32/14_2.png) [@codebard](https://www.patreondevelopers.com/u/codebard)\
**Post date:** [February 5, 2021, 7:34pm UTC](https://www.patreondevelopers.com/t/getting-pledge-history-python-or-generic-request/2853/3 "2021-02-05T19:34:56Z")

</div>

That can be acquired by requesting pledge\_history as a relationship over member resource. When requesting the member resource, add pledge\_history as a relationship include in the request.

---

<div class="post-metadata">

**Author:** ![NStephenH](https://yyz2.discourse-cdn.com/flex036/user_avatar/www.patreondevelopers.com/nstephenh/32/1212_2.png) [@NStephenH](https://www.patreondevelopers.com/u/NStephenH)\
**Post date:** [February 5, 2021, 10:27pm UTC](https://www.patreondevelopers.com/t/getting-pledge-history-python-or-generic-request/2853/4 "2021-02-05T22:27:13Z")

</div>

It’s been nearly a year, but here’s how I extract a pledge history. I think it was a formatting issue with my specific request.

> **Code**
>
> ```
> def get_pledge_history(self):
> access_token = self.creator_access_token
> api_client = patreon.API(access_token)
> campaign_id = api_client.get_campaigns(page_size=1).json_data['data'][0]['id']
> total_members = 1
> cursor = None
> members = []
> pledge_data = []
> while len(members) < total_members:
> suffix = "campaigns/{}/members?include=pledge_history&fields[pledge-event]=" \
> "date%2Ctype%2Cpayment_status%2Ctier_title&fields[member]=email".format(campaign_id)
> if cursor:
> suffix += ("&page[cursor]={}".format(cursor))
> response = requests.get(
> "https://www.patreon.com/api/oauth2/v2/{}".format(suffix),
> headers={
> 'Authorization': "Bearer {}".format(access_token),
> 'User-Agent': "Patreon CGT",
> }
> )
> 
> campaign = response.json()
> members += campaign['data']
> try:
> pledge_data += campaign['included']
> except KeyError:
> print("No members found")
> pagination = campaign['meta']['pagination']
> try:
> total_members = pagination['total']
> print("Downloading members {}/{}".format(len(members), total_members), end="\r", flush=True)
> cursor = pagination['cursors']['next']
> except KeyError as e:
> break
> 
> ```

Edit: Formatting

---

<div class="post-metadata">

**Author:** ![carlos](https://avatars.discourse-cdn.com/v4/letter/c/ecae2f/32.png) [@carlos](https://www.patreondevelopers.com/u/carlos)\
**Post date:** [October 24, 2024, 8:47pm UTC](https://www.patreondevelopers.com/t/getting-pledge-history-python-or-generic-request/2853/5 "2024-10-24T20:47:46Z")

</div>

`pledge_history` is nice, and ~~it looks like it’s exactly the same as what we see when we click `See all payment history` for a particular member.~~

But am I correct in thinking that in `pledge_history`, there’s no way to tell whether the payment was for a month or a year? Is there any workaround to be able to differentiate between the length of a subscription?

My goal is to reconstruct the payment history.

**UPDATE:** There are major differences between what the website shows and the raw pledge history. It seems like the results are somehow non-trivially interpreted.

---

<div class="post-metadata">

**Author:** ![codebard](https://yyz2.discourse-cdn.com/flex036/user_avatar/www.patreondevelopers.com/codebard/32/14_2.png) [@codebard](https://www.patreondevelopers.com/u/codebard)\
**Post date:** [October 28, 2024, 11:48am UTC](https://www.patreondevelopers.com/t/getting-pledge-history-python-or-generic-request/2853/6 "2024-10-28T11:48:32Z")

</div>

You should be able to match the pledge\_event to the tier, and from the tier you can deduce the cadence (year/month).

---

<div class="post-metadata">

**Author:** ![carlos](https://avatars.discourse-cdn.com/v4/letter/c/ecae2f/32.png) [@carlos](https://www.patreondevelopers.com/u/carlos)\
**Post date:** [October 28, 2024, 12:23pm UTC](https://www.patreondevelopers.com/t/getting-pledge-history-python-or-generic-request/2853/7 "2024-10-28T12:23:55Z")

</div>

Isn’t cadence patron selectable?
