Welcome to the Haiku Book

Below you will find documentation on the Application Programming Interface (API) of the Haiku operating system. This API describes the internals of the operating system allowing developers to write native C++ applications and device drivers. See the online version for the most updated version of this document. If you would like to help contribute contact the documentation mailing list. For guidelines on how to help document the API see the Documenting the API page. A list of contributors can be found Credits page. Documenting the API is an ongoing process so contributions are greatly appreciated.

The Haiku API is based on the BeOS R5 API but changes and additions have been included where appropriate. Important compatibility differences are detailed on the Application Level API Incompatibilities with BeOS page. New classes and methods and incompatible API changes to the BeOS R5 API are noted in the appropriate sections.

A complete reference to the BeOS R5 API is available on the web in The Be Book. The Be Book is used with permission from Access Co., the current owners of Be's intellectual property.

Kits and Servers

The API is split into several kits and servers each detailing a different aspect of the operating system.

  • The Application Kit is the starting point for developing applications and includes classes for messaging and for interacting with the rest of the system.
  • The Game Kit provides classes for producing game sounds and working with full screen apps.
  • The Interface Kit is used to create responsive and attractive graphical user interfaces building on the messaging facilities provided by the Application Kit.
    • A general introduction to the Interface Kit.
    • The Layout API is a new addition to the Interface Kit in Haiku which provides resources to layout your application flexibly and easily.
  • The Locale Kit includes classes to localize your application to different languages, timezones, number formatting conventions and much more.
  • The Mail Kit includes classes to work with e-mail files, folders, protocols, and filters, as part of Haiku's unique mail handling system.
  • The Media Kit provides a unified and consistent interface for media streams and applications to intercommunicate.
  • The MIDI 2 Kit describes an interface to generating, processing, and playing music in MIDI format. For reference documentation on the The old Midi Kit (libmidi.so) is also included.
  • The Network Kit handles everything network related, from interface IP address settings to HTTP connections.
  • The Storage Kit is a collection of classes that deal with storing and retrieving information from disk.
  • The Support Kit contains support classes to use in your application including resources for thread safety, IO, and serialization.
  • The Translation Kit provides a framework for converting data streams between media formats.

Special Topics