====== Friendica API ======
Friendica offers multiple API endpoints to interface with third-party applications:
- [[docs:api-twitter|Twitter]]
- [[docs:api-mastodon|Mastodon]]
- [[docs:api-friendica|Friendica-specific]]
- [[docs:api-gnu-social|GNU Social]]
===== Usage =====
==== HTTP Method ====
API endpoints can restrict the HTTP method used to request them.
Using an invalid method results in HTTP error 405 "Method Not Allowed".
==== Authentication ====
Friendica supports basic HTTP Auth and OAuth 1 to authenticate the user to the APIs. See [[api-authentication]] for more details.
==== Errors ====
When an error occurs in API call, an HTTP error code is returned, with an error message
Usually:
* 400 Bad Request: if parameters are missing or items can't be found
* 403 Forbidden: if the authenticated user is missing
* 405 Method Not Allowed: if API was called with an invalid method, eg. GET when API require POST
* 501 Not Implemented: if the requested API doesn't exist
* 500 Internal Server Error: on other error conditions
Error body is
* json
{
"error": "Specific error message",
"request": "API path requested",
"code": "HTTP error code"
}
* xml
Specific error message
API path requested
HTTP error code
===== Usage Examples =====
==== BASH / cURL =====
/usr/bin/curl -u USER:PASS https://YOUR.FRIENDICA.TLD/api/statuses/update.xml -d source="some source id" -d status="the status you want to post"
==== Python ====
The [RSStoFriendika](https://github.com/pafcu/RSStoFriendika) code can be used as an example of how to use the API with python.
The lines for posting are located at [line 21](https://github.com/pafcu/RSStoFriendika/blob/master/RSStoFriendika.py#L21) and following.
def tweet(server, message, group_allow=None):
url = server + '/api/statuses/update'
urllib2.urlopen(url, urllib.urlencode({'status': message,'group_allow[]':group_allow}, doseq=True))