diff --git a/README.md b/README.md
index b2f41d6e2afa5531e4533394471a0891c15a8dbc..868921ee765a967947304f878cdc8ed06f12d64f 100644
--- a/README.md
+++ b/README.md
@@ -32,6 +32,35 @@ Other compilers versions might work as well.
 	cmake -PYTHON_ENABLE_MODULE__pyconsumer=True
 	cmake -PYTHON_ENABLE_MODULE__pynesci=True
 	- or setting those options to true in the CMake GUI
+
+# API
+## Consumer
+Every class is inside the namespace `nesci::consumer`.
+**SpikeDetectorDataView**
+```c++
+class SpikeDetectorDataView {
+  conduit::float64_array GetTimesteps() const;
+  conduit::uint64_array GetNeuronIds() const;
+};
+```
+SpikeDetectorDataView gives access to two arrays with the same number of entries. The length of these arrays represent the number of spikes that are described in the dataset. So, GetTimesteps()[i] represents the simulation time and GetNeuronIds()[i] represents the neuron id of the `i`th spike described in the dataset. *The data is not guaranteed to be sorted in any way.*
+
+**NestMultimeterDataView**
+```c++
+class NestMultimeterDataView {
+  double GetTimestep() const;
+  conduit::uint64_array GetNeuronIds() const;
+  std::vector<std::string> GetIntegerParameterNames() const;
+  std::vector<std::string> GetFloatingPointParameterNames() const;
+  conduit::int64_array GetIntegerParameterValues(
+      const std::string& parameter
+  ) const;
+  conduit::float64_array GetFloatingPointParameterValues(
+      const std::string& parameter
+  ) const;
+};
+```
+NestMultimeterDataView gives access to the data recorded by a nest multimeter. One dataset describes the values of multiple parameters of multiple neurons *for a sigle timestep*.
 	
 # Building nesci