# Missing clientid Header

**URL:** <https://devforum.zoom.us/t/missing-clientid-header/81152>\
**Category:** Chat\
**Tags:** webhooks, api\
**Created:** [January 9, 2023, 9:27am UTC](https://devforum.zoom.us/t/missing-clientid-header/81152 "2023-01-09T09:27:45Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![tolikbotov](https://avatars.discourse-cdn.com/v4/letter/t/5f8ce5/32.png) [@tolikbotov](https://devforum.zoom.us/u/tolikbotov)\
**Post date:** [January 9, 2023, 9:27am UTC](https://devforum.zoom.us/t/missing-clientid-header/81152/1 "2023-01-09T09:27:45Z")

</div>

**Webhook event**

I have an chat application, I want to receive a chat notification. I’ve created an subscription pointed on my URL and push ‘Validate’ button. I expected to receive the **clientid** header, contains ‘The client ID of your Marketplace application.’. But there is no such header. Am I missing something?

Following [https://marketplace.zoom.us/docs/api-reference/webhook-reference/#request-headers](https://marketplace.zoom.us/docs/api-reference/webhook-reference/#request-headers)

---

<div class="post-metadata">

**Author:** ![aspantel](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/aspantel/32/37800_2.png) [@aspantel](https://devforum.zoom.us/u/aspantel)\
**Post date:** [January 9, 2023, 3:15pm UTC](https://devforum.zoom.us/t/missing-clientid-header/81152/2 "2023-01-09T15:15:00Z")

</div>

@elisa.zoom could you please comment on this?  
We can’t validate our app’s urls because of this.

Thank you

---

<div class="post-metadata">

**Author:** ![elisa.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/elisa.zoom/32/47836_2.png) [@elisa.zoom](https://devforum.zoom.us/u/elisa.zoom)\
**Post date:** [January 9, 2023, 8:21pm UTC](https://devforum.zoom.us/t/missing-clientid-header/81152/3 "2023-01-09T20:21:40Z")

</div>

Hi @tolikbotov  
To validate the URL you do not need the client ID header.

Here is an example in Node.js on how to validate the URL

```auto
const crypto = require('crypto')

// Webhook request event type is a challenge-response check
if(request.body.event === 'endpoint.url_validation') {
  const hashForValidate = crypto.createHmac('sha256', ZOOM_WEBHOOK_SECRET_TOKEN).update(request.body.payload.plainToken).digest('hex')

  response.status(200)
  response.json({
    "plainToken": request.body.payload.plainToken,
    "encryptedToken": hashForValidate
  })
}

```

---

<div class="post-metadata">

**Author:** ![tolikbotov](https://avatars.discourse-cdn.com/v4/letter/t/5f8ce5/32.png) [@tolikbotov](https://devforum.zoom.us/u/tolikbotov)\
**Post date:** [January 10, 2023, 8:12am UTC](https://devforum.zoom.us/t/missing-clientid-header/81152/4 "2023-01-10T08:12:41Z")

</div>

Hello @elisa.zoom . I understand that this header is not used for validation.  
We want to select appropriate application settings by **clientid**.

Let’s say we have more than one Zoom settings, and when validation event comes we need to choose somehow one of Zoom setting.

---

<div class="post-metadata">

**Author:** ![shanecav](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/shanecav/32/45075_2.png) [@shanecav](https://devforum.zoom.us/u/shanecav)\
**Post date:** [January 31, 2023, 5:34pm UTC](https://devforum.zoom.us/t/missing-clientid-header/81152/5 "2023-01-31T17:34:24Z")

</div>

I have a similar issue. I maintain a service that needs to accommodate multiple Zoom applications. I need to use the clientid to know which Zoom application my service is validating.

---

<div class="post-metadata">

**Author:** ![shanecav](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/shanecav/32/45075_2.png) [@shanecav](https://devforum.zoom.us/u/shanecav)\
**Post date:** [January 31, 2023, 5:52pm UTC](https://devforum.zoom.us/t/missing-clientid-header/81152/6 "2023-01-31T17:52:28Z")

</div>

@elisa.zoom FYI, I am using a Server-to-Server app. Do I need to have a private Marketplace app for this use case?

---

<div class="post-metadata">

**Author:** ![elisa.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/elisa.zoom/32/47836_2.png) [@elisa.zoom](https://devforum.zoom.us/u/elisa.zoom)\
**Post date:** [February 1, 2023, 3:09pm UTC](https://devforum.zoom.us/t/missing-clientid-header/81152/7 "2023-02-01T15:09:02Z")

</div>

Hi @shanecav  
When you validate an endpoint URL, you wont get the client ID in the headers.  
The client ID value will be in the headers when you receive the event you are subscribed to.

[https://marketplace.zoom.us/docs/api-reference/webhook-reference/#webhook-structure](https://marketplace.zoom.us/docs/api-reference/webhook-reference/#webhook-structure)

---

<div class="post-metadata">

**Author:** ![shanecav](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/shanecav/32/45075_2.png) [@shanecav](https://devforum.zoom.us/u/shanecav)\
**Post date:** [February 1, 2023, 4:33pm UTC](https://devforum.zoom.us/t/missing-clientid-header/81152/8 "2023-02-01T16:33:33Z")

</div>

I see that now. Seems odd that the validation request contains every other expected Zoom header except clientid, which I was assuming would be included when I initially set things up. I now need to figure out to reconfigure my app so it can be used by multiple Zoom accounts just because of the validation step.
