Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Robinhood | 1,453 | 3 years ago | unlicense | |||||||
Unofficial Documentation of Robinhood Trade's Private API | ||||||||||
End_to_end_encryption | 238 | a day ago | 45 | agpl-3.0 | PHP | |||||
:closed_lock_with_key: Server API to support End-to-End Encryption | ||||||||||
Patrowldocs | 118 | a year ago | 8 | agpl-3.0 | HTML | |||||
PatrOwl - Open Source, Free and Scalable Security Operations Orchestration Platform | ||||||||||
Yii2 Restful Api With Oauth2 | 80 | 5 years ago | 7 | other | PHP | |||||
Goas | 61 | 3 years ago | 19 | April 24, 2020 | 7 | other | Go | |||
Generate OpenAPI Specification from comments | ||||||||||
Ocaml Otr | 38 | 2 years ago | 3 | bsd-2-clause | OCaml | |||||
Off-the-record (OTR) messaging protocol, purely in OCaml | ||||||||||
Laravel 5.5 Lumen 5.5 With Oauth2 | 27 | 5 years ago | 4 | PHP | ||||||
Springboot Chapter | 25 | a month ago | Java | |||||||
🚀Spring Boot 3.0主流框架整合,实践学习案例。2.0版本在springboot-version-2.x分支 | ||||||||||
Ocaml Hkdf | 11 | 2 years ago | bsd-2-clause | OCaml | ||||||
HMAC-based Extract-and-Expand Key Derivation Function (HKDF) (RFC 5869) |
https://www.quantopian.com/posts/were-joining-robinhood
I continued to keep this documentation up to date and it's now complete locally and until recently, I was happy to answer questions that wouldn't potentially expose a private, internal API, unreleased feature, or sensitive 3rd party data. But certain ones here have moved from friendly open source devs to angry, weird stalkers and have even used this documentation maliciously to steal assets and hijack accounts. Sadly, closing the issue tracker was only a temporary fix. Shuttering the project will be more permanent.
To the weird ones: Do not contact me about Robinhood. Do not send any more email. Do not text me. Do not call me anymore. Do not cyberstalk my teenage family member and leave messages for me on her voicemail anymore. Stop offering money to help you. I will not.
To everyone else: Bad actors, profiteers, and scammers have created a situation that puts us all at risk of having our accounts closed. I suggest you find ways to distance yourselves. These people have pushed Robinhood into making drastic changes to their API, shutting down established partnerships, and enforcing their customer agreements. If you haven't been contacted by an automated support agent yet for using the API directly, don't be too surprised if you are in the near future.
I'm not sure what will happen to this repo yet but I have had a good relationship with RH HQ since there was a waiting list to even create an account and I intend to stay in their good graces. I will not plug one here but commission-free firms exist that are designed to be accessed via their API. If that's in line with your plans, use one of those firms.
Table of Contents:
Things I have yet to organize are in Unsorted.md
Robinhood is a commission-free, online securities brokerage. As you would expect, being an online service means everything is handled through a request that is made to a specific URL.
The HTTPS protocol is used to access the Robinhood API. Transactions require security because most calls transmit actual account informaion. SSL Pinning is used in the official Android and iOS apps to prevent MITM attacks; you would be wise to do the same at the very least.
Calls to API endpoints make use of two different levels of authentication:
Calls which require no authentication are generally informational (quote gathering, securities lookup, etc.).
Authorized calls require an Authorization
HTTP Header with the authentication type set as Token
(Example: Authorization: Token 40charauthozationtokenherexxxxxxxxxxxxxx
).
The API reports incorrect data or improper use with HTTP status codes and JSON objects returned as body content. Some that I've run into include:
HTTP Status | Key | Value | What I Did Wrong |
---|---|---|---|
400 | non_field_errors |
["Unable to log in with provided credentials."] |
Attempted to log in with incorrect username/password |
400 | password |
["This field may not be blank."] |
Attempted to log in without a password |
401 | detail |
["Invalid token."] |
Attempted to use cached token after logging out |
400 | password |
["This password is too short. It must contain at least 10 characters.", "This password is too common."] |
Attempted to change my password to password
|
...you get the idea. Letting you know exactly what went wrong makes the API almost self-documenting so thanks Robinhood.
Some data is returned from the Robinhood API as paginated data with next
and previous
cursors already in URL form.
If your call returns paginated data, it will look like this call to https://api.robinhood.com/instruments/
:
{
"previous": null,
"results": [{
"splits" : "https://api.robinhood.com/instruments/42e07e3a-ca7a-4abc-8c23-de49cb657c62/splits/",
"margin_initial_ratio" : "1.0000",
"url" : "https://api.robinhood.com/instruments/42e07e3a-ca7a-4abc-8c23-de49cb657c62/",
"quote" : "https://api.robinhood.com/quotes/SBPH/",
"symbol" : "SBPH",
"bloomberg_unique" : "EQ0000000028928752",
"list_date" : null,
"fundamentals" : "https://api.robinhood.com/fundamentals/SBPH/",
"state" : "active",
"tradeable" : true,
"maintenance_ratio" : "1.0000",
"id" : "42e07e3a-ca7a-4abc-8c23-de49cb657c62",
"market" : "https://api.robinhood.com/markets/XNAS/",
"name" : "Spring Bank Pharmaceuticals, Inc. Common Stock"
},
...
],
"next": "https://api.robinhood.com/instruments/?cursor=cD04NjUz"
}
To get the next page of results, just use the next
URL.
Some data is returned as a list of results
as if they were paginate but the API doesn't supply us with previous
or next
keys.