---
name: "curl_pushheader_bynum"
section: "3"
platform: "linux"
package: "curl"
version: "8.23.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/curl_pushheader_bynum"
---

# curl\_pushheader\_bynum(3)

get a push header by index

## NAME

curl\_pushheader\_bynum - get a push header by index

## SYNOPSIS

```
#include <curl/curl.h>
char *curl_pushheader_bynum(struct curl_pushheaders *h, size_t num);
```

## DESCRIPTION

This is a function that is only functional within a *[CURLMOPT\_PUSHFUNCTION(3)](/CURLMOPT_PUSHFUNCTION/3.md)* callback. It makes no sense to try to use it elsewhere and it has no function then.

It returns the value for the header field at the given index **num**, for the incoming server push request or NULL. The data pointed to is freed by libcurl when this callback returns. The returned pointer points to a "name:value" string that gets freed when this callback returns; although not constrained by its type, this string may not be altered.

## PROTOCOLS

This functionality affects http only

## EXAMPLE

```
/* output all the incoming push request headers */
static int push_cb(CURL *parent,
                   CURL *easy,
                   size_t num_headers,
                   struct curl_pushheaders *headers,
                   void *clientp)
{
  size_t i = 0;
  char *field;
  do {
    field = curl_pushheader_bynum(headers, i);
    if(field)
      fprintf(stderr, "Push header: %s\n", field);
    i++;
  } while(field);
  return CURL_PUSH_OK; /* permission granted */
}
int main(void)
{
  CURLM *multi = curl_multi_init();
  curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_cb);
}
```

## AVAILABILITY

Added in curl 7.44.0

## RETURN VALUE

Returns a pointer to the header field content or NULL.

## SEE ALSO

[**CURLMOPT\_PUSHFUNCTION**(3)](/CURLMOPT_PUSHFUNCTION/3.md), [**curl\_pushheader\_byname**(3)](/curl_pushheader_byname/3.md)
