Skip to content

Instantly share code, notes, and snippets.

@jeremystretch
Created June 12, 2024 14:11
Show Gist options
  • Save jeremystretch/2c09f76837fc5af787fe9ff7747ecf3f to your computer and use it in GitHub Desktop.
Save jeremystretch/2c09f76837fc5af787fe9ff7747ecf3f to your computer and use it in GitHub Desktop.
Mark GitHub notifications as read

I've needed to do this several times to combat "ghost" notifications. These occur when a discussion is created and then deleted (e.g. for spam) before the notofication is read. You may see something like "1-0 of 4" at the bottom of the notifications page.

You can use the GitHub API client to show these notifications:

gh api notifications

To mark all notifications as read, send the API request below with curl. (Update the last_read date as needed.)

curl -L \
  -X PUT \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/notifications \
  -d '{"last_read_at":"2024-06-12T00:00:00Z","read":true}'

Unfortunately, this does not delete ghost notifications; it only marks them as read. But this at least fixes the constant notification alert.

@DanSheps
Copy link

DanSheps commented Jul 24, 2024

To delete (mark done) in python:

import requests

TOKEN = '<TOKEN>'

headers = {
    'Accept': 'application/vnd.github+json',
    'Authorization': f'Bearer {TOKEN}',
    'X-Github-Api-Version': '2022-11-28',
}

notifications = requests.get('https://api.github.com/notifications', headers=headers)

for notification in notifications.json():
    print(f"{notification['id']}: {notification['subject']['title']}")
    requests.delete(f'https://api.github.com/notifications/threads/{notification["id"]}', headers=headers)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment