# Low-Level API

This documentation mostly describes the h5py high-level API, which offers the main features of HDF5 in an interface modelled on dictionaries and NumPy arrays. h5py also provides a low-level API, which more closely follows the HDF5 C API.

See also

- h5py Low-Level API Reference

- HDF5 C/Fortran Reference Manual

You can easily switch between the two levels in your code:

- To the low-level: High-level `File`, `Group` and `Dataset` objects all have a `.id` attribute exposing the corresponding low-level objects—`FileID`, `GroupID` and `DatasetID`:

      dsid = dset.id
      dsid.get_offset()  # Low-level method

  Although there is no high-level object for a single attribute, `AttributeManager.get_id()` will get the low-level `AttrID` object:

      aid = dset.attrs.get_id('timestamp')
      aid.get_storage_size()  # Low-level method

- To the high-level: Low-level `FileID`, `GroupID` and `DatasetID` objects can be passed to the constructors of `File`, `Group` and `Dataset`, respectively.