---
name: "curl_multi_init"
section: "3"
platform: "macos"
package: "curl"
version: "166.0.0.0.1"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/curl_multi_init"
---

# curl\_multi\_init(3)

create a multi handle

## NAME

curl\_multi\_init - create a multi handle

## SYNOPSIS

```
#include <curl/curl.h>
CURLM *curl_multi_init();
```

## DESCRIPTION

This function returns a pointer to a *CURLM* handle to be used as input to all the other multi-functions, sometimes referred to as a multi handle in some places in the documentation. This init call MUST have a corresponding call to *[curl\_multi\_cleanup(3)](/curl_multi_cleanup/3.md)* when the operation is complete.

## EXAMPLE

```
int main(void)
{
  /* init a multi stack */
  CURLM *multi = curl_multi_init();
  CURL *curl = curl_easy_init();
  CURL *curl2 = curl_easy_init();
  /* add individual transfers */
  curl_multi_add_handle(multi, curl);
  curl_multi_add_handle(multi, curl2);
}
```

## AVAILABILITY

Added in 7.9.6

## RETURN VALUE

If this function returns NULL, something went wrong and you cannot use the other curl functions.

## SEE ALSO

[**curl\_easy\_init**(3)](/curl_easy_init/3.md), [**curl\_global\_init**(3)](/curl_global_init/3.md), [**curl\_multi\_add\_handle**(3)](/curl_multi_add_handle/3.md), [**curl\_multi\_cleanup**(3)](/curl_multi_cleanup/3.md), [**curl\_multi\_get\_handles**(3)](/curl_multi_get_handles/3.md)
