CivetWeb API Reference

CivetWeb is often used as HTTP and HTTPS library inside a larger application. A C API is available to integrate the CivetWeb functionality in a larger codebase. A C++ wrapper is also available, although it is not guaranteed that all functionality available through the C API can also be accessed from C++. This document describes the public C API. Basic usage examples of the API can be found in, as well as in the examples directory.


CIVETWEB_VERSIONThe current version of the software as a string with the major and minor version number seperated with a dot. For version 1.9, this string will have the value “1.9”, for thw first patch of this version “1.9.1”.
CIVETWEB_VERSION_MAJORThe current major version as number, e.g., (1) for version 1.9.
CIVETWEB_VERSION_MINORThe current minor version as number, e.g., (9) for version 1.9.
CIVETWEB_VERSION_PATCHThe current patch version as number, e.g., (0) for version 1.9 or (1) for version 1.9.1.


  • struct mg_context * Handle for one instance of the HTTP(S) server. All functions using const struct mg_context * as an argument do not modify a running server instance, but just query information. Functions using a non-const struct mg_context * as an argument may modify a server instance (e.g., register a new URI, stop the server, ...).

  • struct mg_connection * Handle for one individual client-server connection. Functions working with const struct mg_connection * operate on data already known to the server without reading data from or sending data to the client. Callbacks using a const struct mg_connection * argument are supposed to not call functions from the mg_read() and mg_write() family. To support a correct application, reading and writing functions require a non-const struct mg_connection * connection handle.

The content of both structures is not defined in the interface - they are only used as opaque pointers (handles).


Library API Functions

Server API Functions

Client API Functions

Common API Functions

Diagnosis Functions