It would require a large amount of explanation to try and document each of the API functions in-depth, so I'm basically just going to use this thread to list URL's. I'll give a brief explanation of each of them, and supply an example URL, from which it should be reasonably clear as to what each URL does.
Note that in cases where I say <anime-slug>, you are also able to enter a number, or the anime's id instead.
The same applies for any time I say <username>
Full anime info:
For example: http://hummingbird.me/full_anime/steins-gate
Basically gives all of the information shown on the anime page itself, including quotes, voice actors/characters, images, and reviews, in JSON format.
Additionally, it gives you library info, if applicable (If it is your favourite, status, its library (not anime) id, etc.)
This is probably regarded as being from the old API, so should probably not be used in newer apps. Correct me if I am wrong.
Brief anime info:
For example: http://hummingbird.me/api/v1/anime/steins-gate
Provides basic information on a specified anime, such as its status (Currently/Finished airing), url, alt title and genres.
Just click the example above and you'll see everything it shows
Standard user info:
For example: http://hummingbird.me/api/v1/users/Kenshii
Gives basic information on a user, such as the info located under 'About <username>' and 'Favorite Anime'
Get user favorite genres and % of all anime seen (Probably going to be used on the feed in the future, as was shown in screenshots):
For example: http://hummingbird.me/user_infos/Kenshii
I pretty much explained precisely what this does above, in the heading.
(anime_watched / anime_total) * 100 = % of all anime seen
Top genres were most likely calculated by counting the genres of all anime the user has seen, and listing the first few in descending order.
Fetching user library:
For example: http://hummingbird.me/api/v1/users/Kenshii/library
Note that in this particular library API call, the id listed with each anime is in actual fact its library id. A library id is unique to each user, and is totally different to an anime id (Misleading somewhat, right? :P)
The library id is important to know for when changing information (rating, favoriting, notes, etc.) of an anime, so make sure you record/cache it if making an app
Anyway, everything else looks pretty straightforward. Just look at the example URL above, and you should be able to figure it out.
Fetching user library (newer method, used by site itself currently when fetching libraries):
For example: http://hummingbird.me/library_entries?user_id=Kenshii
Additional optional params: recent=true/false, status=Currently%20Watching
The format is somewhat different to the other library call, but ultimately, it seems to return quite similar info.
There are 2 objects in the response. The first is called 'anime' and it basically stores the titles, description, rating (PG13, etc.) and other information on each of the anime mentioned in the users library.
The second object is called 'library_entries' and contains the user-specific info on each anime in the library (ie. its library id, whether or not it's favorited, status, rewatching, etc.)
How to (un)favorite/rate/write a note on/change status of an anime in your library:
So pretty much all of these are under the one URL
Format: PUT http://hummingbird.me/library_entries/<library-id>
An example would be rather redundant, since you can't access a library id that is not associated with your username, but what the heck.
In the request body, you need to give JSON in the following format. Bear in mind that none of these params are mandatory. In fact, if you were to send no body, but still have it be a PUT request, it would still not give an error.
JSON Format (Only use the params you want. Also, note, the response returns more params in library_entry than the request sends):
"rating": null, #Cannot be 0. 1-5 range. null=not set. Only increments of 0.5 allowed.
How to delete an anime from your library
Format: DELETE http://hummingbird.me/library_entries/<library-id>
Example (redundant since unauthorized, as you can't mess with my library entries): http://hummingbird.me/library_entries/4886861
Basically, just send a DELETE request to the URL mentioned above.
You don't need to give a body in this request.
Get who a user is following:
For example: http://hummingbird.me/users?followers_of=Kenshii&page=1
Get who's following a user:
For example: http://hummingbird.me/users?followed_by=Kenshii&page=1
(Un)Follow a user (Must be a POST request):
For example: http://hummingbird.me/users/Kenshii/follow
No body is required. You basically just send that as a POST request to follow, and send it again to unfollow.
Get users stories/news feed:
For example: http://hummingbird.me/stories?user_id=Kenshii&page=1
Provides basic info on the user who owns the news feed. Also provides the id of each story in the second object, which is necessary if you ever want to delete a story. The first object is used, to my knowledge, purely to provide the description & title of each of the anime involved in the feed
Post a story (Must be a POST request):
For example: http://hummingbird.me/users/Kenshii/comment.json?comment=I%20love%20my%20new%20unicorn
Remove a story (Must be a POST request):
For example (although redundant example): http://hummingbird.me/api/v1/users/Kenshii/feed/remove?story_id=1234567
Get favorite anime (Brief):
For example: http://hummingbird.me/api/v1/users/Kenshii/favorites
Provides very basic information on a persons favorite anime (For each favorite, its favorite id and rank/position on feed is given). Somewhat redundant, considering said info is already supplied by the standard user info call mentioned above.
Not what I'd consider to be a very useful call, honestly, as you can't tell what anime the favorite id's correspond with particularly easily. The in-depth version below is much more practical in my opinion.
Get favorite anime (In-Depth):
For example: http://hummingbird.me/api/v1/users/Kenshii/favorite_anime
Provides the info listed in the above, brief call, but also provides the slug, link, name, description, etc. of each favorite.
For the mostpart, just add .json to whatever link you want in the forums, and it'll give you the response in JSON.
To get the latest forum posts:
Additional params: exclude_category=<category>
For instance: exclude_category=misc. is what the forums use.
Other API URL's:
Search (for an anime),
For example: http://hummingbird.me/search.json?query=attack%20on%20titan&type=mixed
Type can also be 'anime', 'manga' (although it says error 406), 'character', or 'users' (error 500)
Most people will only really use 'mixed' or 'character', though. Character is used for waifu's/husbando's.
Honestly there's probably several more things I could write about, but this thread is becoming significantly long, and I'm bored(:P).
Hopefully you learned something anyway.
Maybe someone else can explain the rest in a comment, and I can quote their explanations?
To clear things up
Really, I just found all of this via Charles Web Debugging Proxy.
The hummingbird source code helped me find a few params that could be used with the api, though
It's a paid program, but they've made versions for windows, linux and mac. And I'm sure the cheap can find a serial code by googling, if they really feel so cheap.
I highly recommend you use it, or another web debugging proxy such as Fiddler
Basically, simply use hummingbird as you normally would, and it'll record the web requests and responses.
Then, rather than having me or someone else type up this stuff, you could find it relatively easily.
For instance, delete a story from your feed with charles open, and you'll see the request for it there, and be able to figure out how to use it to your benefit. You'll even be able to edit the request if you're looking to test stuff.
Hopefully this wall of text proves useful to someone, and doesn't end up being just a waste of time...