NaCl (pronounced "salt") is a new easy-to-use high-speed software library for network communication, encryption, decryption, signatures, etc. NaCl's goal is to provide all of the core operations needed to build higher-level cryptographic tools.
See The security impactof a new cryptographic library (2012) for design motivations and contrast to other crypto libraries.
The cryptography used in NaCl is described in Cryptography in NaCl (2009).
Libsodium (an implementation of NaCl) has a good documentation of the API.
Concerns have been expressed on relying on an API with a single implementation (libsodium). However there are implementations that do not rely on libsodium:
libsodium is the most commonly used library implementing the NaCL API. Most NaCl bindings for other languages use libsodium.
A C implementation that fits into 100 Tweets.
pure Go implementations
pure Java implementation
HACL *: A Verified Modern Cryptographic Library (2018)
A formally-verified implementation written in F* and then compiled to C.