{"id":13761367,"url":"https://github.com/theoldreader/api","last_synced_at":"2025-05-10T12:31:50.510Z","repository":{"id":8987295,"uuid":"10734931","full_name":"theoldreader/api","owner":"theoldreader","description":"The Old Reader API","archived":false,"fork":false,"pushed_at":"2016-10-04T13:27:51.000Z","size":428,"stargazers_count":191,"open_issues_count":11,"forks_count":12,"subscribers_count":32,"default_branch":"master","last_synced_at":"2024-11-16T18:34:30.615Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://theoldreader.com","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theoldreader.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-06-17T10:22:13.000Z","updated_at":"2024-09-30T13:13:46.000Z","dependencies_parsed_at":"2022-09-11T02:50:27.538Z","dependency_job_id":null,"html_url":"https://github.com/theoldreader/api","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theoldreader%2Fapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theoldreader%2Fapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theoldreader%2Fapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theoldreader%2Fapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theoldreader","download_url":"https://codeload.github.com/theoldreader/api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253415586,"owners_count":21904883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T13:01:51.980Z","updated_at":"2025-05-10T12:31:50.170Z","avatar_url":"https://github.com/theoldreader.png","language":null,"funding_links":[],"categories":["Index","Others"],"sub_categories":["News"],"readme":"# The Old Reader API\n\n## TODO\n\n- Tagging items\n- OAuth\n\n## Apps\n\nSee complete list of apps and extensions on [theoldreader.com](http://theoldreader.com/pages/apps).\n\n## Libraries\n\n- [PHP](https://github.com/zelenin/Tor) (by [zelenin](https://github.com/zelenin))\n- [Ruby](https://github.com/ianzy/theoldreader) (by [ianzy](https://github.com/ianzy))\n\n## Contributing\n\nYou are welcome to improve documentation, please feel free to send us pull requests with your adjustments.\n\nIf you find any bugs or feel that something is not working as expected, please create a github issue or contact us at [api@theoldreader.com](mailto:api@theoldreader.com).\n\n## Current API\n\nCurrent API tries to mimic the unofficial Google Reader API.\n\nPlease note that even though you can use API both via http and https, we highly encourage you to use https for security reasons.\n\n### Differences\n\n- Currently only json format is supported\n- We use BSON ObjectId for user, item, subscription identifiers (example: ```00157a17b192950b65be3791```)\n- We also use ObjectId in Stream Ids instead of URL (example: ```feed/00157a17b192950b65be3791```)\n- Current user id is replaced with ```-``` in state/label strings (examples: ```user/-/state/com.google/reading-list```, ```user/-/label/Folder```)\n\n### Authentication\n\nAll requests you will be sending to the API should be authenticated by a token.\n\nPlease note that The Old Reader allows users to sign in via OAuth (Google or Facebook), but the only way to get an API token for a now is to set password in settings and use it for authentication.\n\n#### Getting a token\n\nSample request:\n\n```\ncurl -d \"client=YourAppName\u0026accountType=HOSTED_OR_GOOGLE\u0026service=reader\u0026Email=test@krasnoukhov.com\u0026Passwd=...\" https://theoldreader.com/accounts/ClientLogin\n```\n\nSample response:\n\n```\nSID=none\nLSID=none\nAuth=LyTEJPvTJiSPrCxLu46d\n```\n\nPlease note that you can also get a token by requesting following url: ```/reader/api/0/accounts/ClientLogin```\n\nAlso you might want to add ```output=json``` to POST parameters for corresponding result.\n\n#### Using a token\n\nInclude `Authorization: GoogleLogin auth=TOKEN` HTTP header in all your requests. For example:\n\n\tAuthorization: GoogleLogin auth=LyTEJPvTJiSPrCxLu46d\n\n### Errors\n\nAll errors except [Adding subscription](#adding-subscription) have following format:\n\nXML:\n\n```\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003cerrors type=\"array\"\u003e\n  \u003cerror\u003eXML output currently is not supported\u003c/error\u003e\n\u003c/errors\u003e\n```\n\nJSON:\n\n```\n{\n\terrors: [\n\t\t\"Temporary unavailable, please try later\"\n\t]\n}\n```\n\n### Status\n\nAfter a couple unsuccessful requests you might try to obtain current The Old Reader status:\n\nGET [https://theoldreader.com/reader/api/0/status?output=json](https://theoldreader.com/reader/api/0/status?output=json)\n\nEverything is fine:\n\n```\n\u003e curl https://theoldreader.com/reader/api/0/status?output=json\n{\"status\":\"up\"}\n```\n\nSomething is wrong:\n\n```\n\u003e curl https://theoldreader.com/reader/api/0/status?output=json\n{\"status\":\"down\",\"description\":\"Database issues\",\"redirect\":\"http://status.theoldreader.com\"}\n```\n\n### Generic methods\n\n#### Token\n\nGET [https://theoldreader.com/reader/api/0/token](https://theoldreader.com/reader/api/0/token)\n\n```\n\u003e curl https://theoldreader.com/reader/api/0/token -H \"Authorization: GoogleLogin auth=LyTEJPvTJiSPrCxLu46d\"\nLyTEJPvTJiSPrCxLu46d\n```\n\nAdded for compatibility.\n\n#### User info\n\nGET [https://theoldreader.com/reader/api/0/user-info?output=json](https://theoldreader.com/reader/api/0/user-info?output=json)\n\n```\n\u003e curl https://theoldreader.com/reader/api/0/user-info?output=json -H \"Authorization: GoogleLogin auth=LyTEJPvTJiSPrCxLu46d\"\n{\"userId\":\"00157a17b192950b65be3791\",\"userName\":\"Test\",\"userProfileId\":\"00157a17b192950b65be3791\",\"userEmail\":\"test@krasnoukhov.com\",\"isBloggerUser\":false,\"signupTimeSec\":1370709105,\"isMultiLoginEnabled\":false,\"isPremium\":true}\n```\n\n#### Preferences list\n\nGET [https://theoldreader.com/reader/api/0/preference/list?output=json](https://theoldreader.com/reader/api/0/preference/list?output=json)\n\nAdded for compatibility.\n\n### Friends\n\n#### Friend list\n\nGET [https://theoldreader.com/reader/api/0/friend/list?output=json](https://theoldreader.com/reader/api/0/friend/list?output=json)\n\nContains friends list.\n\n#### Following/unfollowing a friend\n\nPOST [https://theoldreader.com/reader/api/0/friend/edit](https://theoldreader.com/reader/api/0/friend/edit)\n\nParameters:\n\n\t# Follow\n\taction=addfollowing\n\n\t# Or unfollow\n\taction=removefollowing\n\n\t# By id\n\tu=00157a17b192950b65be3791\n\n\t# Or by stream id\n\tu=user/00157a17b192950b65be3791/state/com.google/broadcast\n\n### Comments\n\n#### Adding a comment\n\nPOST [https://theoldreader.com/reader/api/0/comment/edit](https://theoldreader.com/reader/api/0/comment/edit)\n\nParameters:\n\n\taction=addcomment\n\ti=tag:google.com,2005:reader/item/00157a17b192950b65be3791\n\tcomment=Hello\n\n### Folders\n\n#### Tag list\n\nGET [https://theoldreader.com/reader/api/0/tag/list?output=json](https://theoldreader.com/reader/api/0/tag/list?output=json)\n\nContains folder list.\n\n#### Stream preferences list\n\nGET [https://theoldreader.com/reader/api/0/preference/stream/list?output=json](https://theoldreader.com/reader/api/0/preference/stream/list?output=json)\n\nContains information about subscriptions ordering for root (folders and subscriptions ordering) and user folders (subscriptions ordering).\n\n#### Update stream preferences\n\nPOST [https://theoldreader.com/reader/api/0/preference/stream/set](https://theoldreader.com/reader/api/0/preference/stream/set)\n\nAdded for compatibility.\n\n#### Renaming folder\n\nPOST [https://theoldreader.com/reader/api/0/rename-tag](https://theoldreader.com/reader/api/0/rename-tag)\n\nParameters:\n\n\ts=user/-/label/Folder\n\tdest=user/-/label/NewFolder\n\n#### Removing folder\n\nPOST [https://theoldreader.com/reader/api/0/disable-tag](https://theoldreader.com/reader/api/0/disable-tag)\n\nRemoves folder and moves subscriptions to default folder.\n\nParameters:\n\n\ts=user/-/label/Folder\n\n### Subscriptions\n\n#### Unread count\n\nGET [https://theoldreader.com/reader/api/0/unread-count?output=json](https://theoldreader.com/reader/api/0/unread-count?output=json)\n\nContains unread counts for all items (reading list), each folder, subscription and friend.\n\n#### Subscriptions list\n\nGET [https://theoldreader.com/reader/api/0/subscription/list?output=json](https://theoldreader.com/reader/api/0/subscription/list?output=json)\n\nEach subscription contains ```url```, ```htmlUrl``` and ```iconUrl```.\n\n#### Subscriptions OPML\n\nGET [https://theoldreader.com/reader/subscriptions/export](https://theoldreader.com/reader/subscriptions/export)\n\n#### Adding subscription\n\nPOST [https://theoldreader.com/reader/api/0/subscription/quickadd?quickadd=blog.theoldreader.com](https://theoldreader.com/reader/api/0/subscription/quickadd?quickadd=blog.theoldreader.com)\n\nSuccessful response:\n\n```\n{\"query\":\"blog.theoldreader.com\",\"numResults\":1,\"streamId\":\"feed/00157a17b192950b65be3791\"}\n```\n\nFailed response:\n\n```\n{\"query\":\"blog.theoldreader.com\",\"numResults\":0,\"error\":\"Feed was not added. You already have 129 subscriptions, your limit is 100. You should upgrade to premium.\"}\n```\n\n\n#### Updating subscription\n\nPOST [https://theoldreader.com/reader/api/0/subscription/edit](https://theoldreader.com/reader/api/0/subscription/edit)\n\nParameters:\n\n\tac=edit\n\n\t# Stream Id\n\ts=feed/00157a17b192950b65be3791\n\n\t# Change subscription title\n\tt=Title\n\n\t# Move subscription to folder with a given title\n\ta=user/-/label/Folder\n\n\t# Move subscription to default folder (no difference what r is)\n\tr=user/-/label/Folder\n\n#### Removing subscription\n\nPOST [https://theoldreader.com/reader/api/0/subscription/edit](https://theoldreader.com/reader/api/0/subscription/edit)\n\nParameters:\n\n\tac=unsubscribe\n\ts=feed/00157a17b192950b65be3791 # Stream Id\n\n### Items\n\n#### Item ids\n\nGET [https://theoldreader.com/reader/api/0/stream/items/ids?output=json](https://theoldreader.com/reader/api/0/stream/items/ids?output=json)\n\nParameters:\n\nFilter by stream:\n\n\t# All items\n\ts=user/-/state/com.google/reading-list\n\n\t# Read items\n\ts=user/-/state/com.google/read\n\n\t# Starred items\n\ts=user/-/state/com.google/starred\n\n\t# Liked items\n\ts=user/-/state/com.google/like\n\n\t# Shared items\n\ts=user/-/state/com.google/broadcast\n\n\t# Commented items\n\ts=user/-/state/com.google/broadcast-friends-comments\n\n\t# Shared by friends\n\ts=user/-/state/com.google/broadcast-friends\n\n\t# Folder\n\ts=user/-/label/...\n\n\t# Subscription\n\ts=feed/00157a17b192950b65be3791\n\n\t# Friend\n\ts=user/00157a17b192950b65be3791/state/com.google/broadcast\n\nExclude items (please note that this does not work for starred/liked/shared/commented items):\n\n\t# Only unread\n\txt=user/-/state/com.google/read\n\nOther parameters:\n\n\tn=1000 # Limit items\n\tr=o # Reverse sorting\n\tc=… # Continuation\n\tnt=1371645508 # Older than\n\tot=1371645508 # Newer than\n\nPlease note that maximum limit is: ```10000``` for item ids, ```1000``` for item contents.\n\n#### Item contents\n\nPOST [https://theoldreader.com/reader/api/0/stream/items/contents?output=json](https://theoldreader.com/reader/api/0/stream/items/contents?output=json)\n\nParameters:\n\n\t# Item ids\n\ti=tag:google.com,2005:reader/item/00157a17b192950b65be3791\u0026i=…\u0026i=…\n\n\t# Atom output\n\toutput=atom\n\n#### Stream contents\n\nGET [https://theoldreader.com/reader/api/0/stream/contents?output=json](https://theoldreader.com/reader/api/0/stream/contents?output=json)\n\nParameters:\n\n\t# Same as for ids\n\n\t# Atom output\n\toutput=atom\n\nAlso there is an atom feed for specific Stream Id:\n\nGET [https://theoldreader.com/reader/atom/feed/00157a17b192950b65be3791](https://theoldreader.com/reader/atom/feed/00157a17b192950b65be3791)\n\nAnd state:\n\nGET [https://theoldreader.com/reader/atom/user/-/state/com.google/read](https://theoldreader.com/reader/atom/user/-/state/com.google/read)\n\nAnd folder:\n\nGET [https://theoldreader.com/reader/atom/user/-/label/Folder](https://theoldreader.com/reader/atom/user/-/label/Folder)\n\n#### Marking all as read\n\nPOST [https://theoldreader.com/reader/api/0/mark-all-as-read](https://theoldreader.com/reader/api/0/mark-all-as-read)\n\nPlease note that this does not work for starred/liked/shared/commented items.\n\nParameters:\n\n\t# All items\n\ts=user/-/state/com.google/reading-list\n\n\t# Shared by friends\n\ts=user/-/state/com.google/broadcast-friends\n\n\t# Folder\n\ts=user/-/label/...\n\n\t# Subscription\n\ts=feed/00157a17b192950b65be3791\n\n\t# Friend\n\ts=user/00157a17b192950b65be3791/state/com.google/broadcast\n\n\t# Older than timestamp in nanoseconds\n\tts=1371645508000000\n\n#### Updating items\n\nPOST [https://theoldreader.com/reader/api/0/edit-tag](https://theoldreader.com/reader/api/0/edit-tag)\n\nParameters:\n\n\t# Item ids\n\ti=tag:google.com,2005:reader/item/00157a17b192950b65be3791\u0026i=…\u0026i=…\n\n\t# Mark as read\n\ta=user/-/state/com.google/read\n\n\t# Mark as starred\n\ta=user/-/state/com.google/starred\n\n\t# Mark as liked\n\ta=user/-/state/com.google/like\n\n\t# Mark as shared\n\ta=user/-/state/com.google/broadcast\n\n\t# Mark as shared (with note)\n\ta=user/-/state/com.google/broadcast\u0026annotation=Hello\n\n\t# Mark as unread\n\tr=user/-/state/com.google/read\n\n\t# Remove starred mark\n\tr=user/-/state/com.google/starred\n\n\t# Remove liked mark\n\tr=user/-/state/com.google/like\n\n\t# Remove shared mark\n\tr=user/-/state/com.google/broadcast\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheoldreader%2Fapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheoldreader%2Fapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheoldreader%2Fapi/lists"}