diff --git a/docs/api.rst b/docs/api.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5621a2d55a6182a559a4d46205d7d7814e130bec
--- /dev/null
+++ b/docs/api.rst
@@ -0,0 +1,180 @@
+API Documentation
+~~~~~~~~~~~~~~~~~
+
+Memopol publishes its data with a read-only REST API using `Django REST
+Framework <http://www.django-rest-framework.org/>`_.  The API is browseable and
+partially self-documented, from the ``/api`` URL.
+
+The goal of this documentation is to plug the holes in the
+automatically-generated documentation.
+
+Overview
+========
+
+The API homepage resides at the ``/api/`` URL. Each model is accessible from two
+URLs:
+
+* ``/api/<model>/`` for a (filterable) list of objects
+* ``/api/<model>/<pk>/`` to get a detailed view of a specific object
+
+When accessing the API from a web browser, data should be displayed in a
+user-friendly paginated interface, and relation fields are links to the
+corresponding API URLs (if that's not the case, you can force it by appending
+``format=api`` to the querystring).  To get raw JSON data instead, either pass
+an ``Accept: application/json`` request header or append ``format=json`` to the
+querystring.
+
+Object lists may be filtered using ``field=value`` in the querystring ; related
+fields may be used in filters with double underscores (for example
+``representative__name=John``).  Alternative operators may be available for
+some fields (for example ``score__gte=100``), amongst which:
+
+* ``lte``: matches values that are lower than or equal to the specified value
+* ``gte``: matches values greater than equal to or the specified value
+* ``icontains``: matches values that contain the specified value, ignoring case
+
+Note that fields that are made available for filtering depend on each model;
+the same goes for alternative operators (by default only exact match is
+available).
+
+Finally, note that this documentation does not show the data schema.  Feel free
+to browse the API yourself to find out how data is published.
+
+Representatives API
+===================
+
+This API provides views on representatives and mandates.
+
+Representatives
+---------------
+
+The ``/api/representatives/[<pk>/]`` endpoints give access to representatives.
+The following fields are available for filtering:
+
+* ``active``: True or False
+* ``slug`` (alt.: icontains)
+* ``id``
+* ``remote_id``
+* ``first_name``
+* ``last_name`` (alt.: icontains)
+* ``gender``: M or F
+* ``birth_place``
+* ``birth_date`` (alt.: gte, lte)
+* ``search``: searches in the ``first_name``, ``last_name`` and ``slug`` fields
+
+Mandates
+--------
+
+The ``/api/mandates/[<pk>/]`` endpoints give access to mandates. The following
+fields are available for filtering:
+
+* ``id``
+* ``group__name`` (alt.: icontains)
+* ``group__abbreviation``
+* ``search``: searches in the ``group__name`` and ``group_abbreviation`` fields
+
+Constituency
+------------
+
+The ``/api/constituencies/[<pk>/]`` endpoints give access to constituencies.
+
+Groups
+------
+
+The ``/api/groups/[<pk>/]`` endpoints give access to groups.
+
+Representatives-votes API
+=========================
+
+This API provides views on dossiers, proposals and votes.
+
+Dossiers
+--------
+
+The ``/api/dossiers/[<pk>/]`` endpoints give access to dossiers. The following
+fields are available for filtering:
+
+* ``fingerprint``
+* ``title`` (alt.: icontains)
+* ``reference`` (alt.: icontains)
+* ``search``: searches in the ``fingerprint``, ``title``, ``reference``,
+  ``text`` and ``proposals__title`` fields
+
+Proposals
+---------
+
+The ``/api/proposals/[<pk>/]`` endpoints give access to proposals. The following
+fields are available for filtering:
+
+* ``fingerprint``
+* ``dossier__fingerprint``
+* ``title`` (alt.: icontains)
+* ``description`` (alt.: icontains)
+* ``reference`` (alt.: icontains)
+* ``datetime`` (alt.: gte, lte)
+* ``kind``
+* ``search``: searches in the ``fingerprint``, ``title``,
+  ``dossier__fingerprint``, ``dossier__title`` and ``dossier__reference`` fields
+
+Votes
+-----
+
+The ``/api/votes/[<pk>/]`` endpoints give access to votes. The following fields
+are available for filtering:
+
+* ``proposal__fingerprint``
+* ``position``
+* ``representative_name`` (alt.: icontains)
+* ``representative``
+
+
+Memopol API
+===========
+
+This API provides views on recommendations and representative scores.
+
+Recommendations
+---------------
+
+The ``/api/recommendations/[<pk>/]`` endpoints give access to recommendations.
+The following fields are available for filtering:
+
+* ``id``
+* ``recommendation``
+* ``title`` (alt.: icontains)
+* ``description`` (alt.: icontains)
+* ``weight`` (alt.: gte, lte)
+* ``search``: searches in the ``title`` and ``description`` fields
+
+Scored Votes
+------------
+
+The ``/api/scored_votes/[<pk>/]`` endpoints give access to scored votes; that
+is, representative votes with their contribution to the representative score.
+Only votes that match a recommendation are visible using this endpoint.  The
+following fields are available for filtering:
+
+* ``representative``
+* ``proposal``
+* ``proposal__dossier``
+
+Dossier Scores
+--------------
+
+The ``/api/dossier_scores/[<pk>/]`` endpoints give access to dossier scores;
+that is, the contribution of each dossier on a representative score. Only
+dossiers with recommendations are visible using this endpoint.  The following
+fields are available for filtering:
+
+* ``dossier``
+* ``representative``
+* ``score`` (alt.: gte, lte)
+
+Representative scores
+---------------------
+
+The ``/api/scores/[<pk>/]`` endpoints give access to total scores for each
+representative. The following fields are available for filtering:
+
+* ``representative``
+* ``score`` (alt.: gte, lte)
diff --git a/docs/index.rst b/docs/index.rst
index dff5ebdc51b296e3f46e0db58c0265979219e8b1..05a6e669f3451c7c10c251928e4ae815a475d8c6 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -14,6 +14,7 @@ Contents:
    usage
    deployment
    administration
+   api
    development
    hacker