coap_init - Man Page

Work with CoAP initialization


#include <coap3/coap.h>

void coap_startup(void);

void coap_cleanup(void);

For specific (D)TLS library support, link with -lcoap-3-notls, -lcoap-3-gnutls, -lcoap-3-openssl, -lcoap-3-mbedtls or -lcoap-3-tinydtls. Otherwise, link with -lcoap-3 to get the default (D)TLS library support.


The CoAP libcoap logic needs to be initialized before there is any use of the libcoap public API. This is done by calling coap_startup().


Function: coap_startup()

The coap_startup() function must be called before any other coap_*() functions are called. It is used to initialize things like mutexes, random number gererators, clocks, TLS libraries etc.

NOTE: This should be called after any other lower layer is initialized. For example, for LwIP, lwip_init() must be called before coap_startup().

NOTE: After the inital call to coap_startup(), subsequent calls are ignored until coap_cleanup() is called.

Function: coap_cleanup()

The coap_cleanup() function is used to cleanup / free any information set up by the coap_startup() function and should be the last coap_*() function called. It is possible to call coap_startup() after coap_cleanup() to re-initialize the libcoap logic.

NOTE: All other libcoap cleanups should called prior to coap_cleanup(), e.g. coap_free_context(3).

Further Information


"RFC7252: The Constrained Application Protocol (CoAP)"

for further information.


Please report bugs on the mailing list for libcoap: or raise an issue on GitHub at


The libcoap project <>

Referenced By

coap_block(3), coap_cache(3), coap_io(3), coap_observe(3), coap_persist(3).

The man pages coap_cleanup(3) and coap_startup(3) are aliases of coap_init(3).

01/25/2024 coap_init 4.3.4 libcoap Manual