---
title: "Webhook એન્ડપોઇન્ટ્સ"
description: "દરેક એન્ડપોઇન્ટ માટેના સિક્રેટ્સ અને ઇવેન્ટ ફિલ્ટર્સ સાથે અનેક webhook URLs મેનેજ કરો."
---

એન્ડપોઇન્ટ-આધારિત webhook સિસ્ટમ તમને દરેક સંસ્થા માટે **બહુવિધ**
ગંતવ્યો નોંધવાની મંજૂરી આપે છે, જેમાં દરેકનું પોતાનું secret, પોતાની
સ્થિતિ અને ઇવેન્ટ પ્રકારોના ઉપસેટ માટેનું પોતાનું subscription હોય છે. તમામ નવી ઇન્ટિગ્રેશન્સ માટે આ
ભલામણ કરેલ મોડેલ છે.

[લેગસી સિંગલ-URL webhook](/api-reference/organizations#legacy-single-url-webhook) સાથે સરખામણી કરો,
જે backward compatibility માટે જાળવી રાખવામાં આવ્યું છે, પરંતુ દરેક
સંસ્થા માટે માત્ર એક URL ને સપોર્ટ કરે છે.

## એન્ડપોઇન્ટ્સ

| પદ્ધતિ | પાથ | જરૂરી ભૂમિકા | વર્ણન |
|--------|------|---------------|-------------|
| `GET` | `/v1/developer/webhook-endpoints` | `admin+` | એન્ડપોઇન્ટ્સની સૂચિ મેળવો |
| `POST` | `/v1/developer/webhook-endpoints` | `admin+` | એન્ડપોઇન્ટ બનાવો |
| `PATCH` | `/v1/developer/webhook-endpoints/{endpoint_id}` | `admin+` | લેબલ / URL / ઇવેન્ટ્સ / સ્થિતિ અપડેટ કરો |
| `DELETE` | `/v1/developer/webhook-endpoints/{endpoint_id}` | `admin+` | એન્ડપોઇન્ટ કાઢી નાખો |
| `POST` | `/v1/developer/webhook-endpoints/{endpoint_id}/test` | `admin+` | સહી કરેલ ટેસ્ટ ડિલિવરી મોકલો |
| `GET` | `/v1/developer/webhook-deliveries` | `admin+` | તાજેતરના એન્ડપોઇન્ટ અને લેગસી ડિલિવરી પરિણામોની તપાસ કરો |

## એન્ડપોઇન્ટ ઑબ્જેક્ટ

```json
{
  "id": "c4d5e6f7-...",
  "label": "Production — Call events",
  "url": "https://example.com/thunderphone/hook",
  "events": ["telephony.incoming", "telephony.complete"],
  "status": "active",
  "agent_id": 42,
  "agent_name": "Support Agent",
  "secret_hint": "a1b2…9f0e",
  "created_at": "2026-04-20T18:24:10.113Z",
  "updated_at": "2026-04-20T18:24:10.113Z"
}
```

| ફીલ્ડ | પ્રકાર | વર્ણન |
|-------|------|-------------|
| `id` | UUID | એન્ડપોઇન્ટ id |
| `label` | string | પ્રદર્શિત નામ, 1–120 અક્ષરો |
| `url` | string | HTTPS URL; ડેવલપમેન્ટ માટે `http://localhost` માન્ય છે |
| `events` | string નો array | સબ્સ્ક્રાઇબ કરેલા ઇવેન્ટ પ્રકારો ([માન્ય મૂલ્યો](#valid-event-types) જુઓ). ખાલી array સ્પષ્ટ-માત્ર પ્રતિ-ટર્ન ઇવેન્ટ્સ (`telephony.turn` / `web.turn`) સિવાયની બધી ઇવેન્ટ્સ માટે સબ્સ્ક્રાઇબ કરે છે |
| `status` | string | `active`, `disabled` (મેન્યુઅલી થોભાવેલ), અથવા `failing` (જ્યારે ડિલિવરી એકપણ 2xx વિના તેની 24 કલાકની રિટ્રાય સૂચિ પૂર્ણ કરે ત્યારે આપમેળે સેટ થાય છે) |
| `agent_id` | integer \| null | આ એન્ડપોઇન્ટ જે એજન્ટ સુધી સીમિત છે; `null` નો અર્થ સમગ્ર સંસ્થા |
| `agent_name` | string \| null | સીમિત એજન્ટનું નામ, અથવા સમગ્ર સંસ્થાના એન્ડપોઇન્ટ માટે `null` |
| `secret_hint` | string | એલિપ્સિસ સાથેના સાઇનિંગ સિક્રેટના પ્રથમ 4 અને છેલ્લા 4 અક્ષરો (`a1b2…9f0e`) — સંપૂર્ણ મૂલ્ય જાહેર કર્યા વિના તમે સ્થાનિક રીતે સાચવેલા સિક્રેટ સાથે સરખાવવા માટે પૂરતું |
| `created_at`, `updated_at` | timestamp | |

<Note>
  એન્ડપોઇન્ટનો સંપૂર્ણ `secret` બનાવતી વખતે **માત્ર એક વાર** પરત મળે છે અને
  ત્યારબાદ ક્યારેય નહીં. તેને સુરક્ષિત રીતે સાચવો — જો તે ખોવાઈ જાય, તો એન્ડપોઇન્ટ કાઢી નાખો
  અને તેને ફરીથી બનાવો.
</Note>

### માન્ય ઇવેન્ટ પ્રકારો

`events` આ ચોક્કસ સેટ સામે માન્ય કરવામાં આવે છે — સૂચિની બહારના મૂલ્યો
`400` પરત કરે છે. દરેક પ્રકારના પેલોડ આકાર માટે [ઇવેન્ટ્સ કેટલોગ](/gu/webhooks/events) જુઓ.

- `telephony.incoming`, `telephony.complete`, `telephony.tool`, `telephony.turn`
- `web.incoming`, `web.complete`, `web.tool`, `web.turn`
- `call.graded`, `call.data_extracted`
- `campaign.completed`
- `issue.reported`, `issue.escalated`
- `test-call.completed`
- `alert.triggered`

`issue.escalated` પાસે કોઈ એજન્ટ સંદર્ભ નથી અને તે માત્ર
સમગ્ર સંસ્થાના એન્ડપોઇન્ટ્સને જ પહોંચાડવામાં આવે છે.

`voice.ready` અને `voice.failed` સ્પષ્ટ રીતે પસંદ કરી શકાતા નથી. તેમને મેળવવા માટે,
`events: []` સાથે સમગ્ર સંસ્થાનો એન્ડપોઇન્ટ બનાવો. ખાલી ઇવેન્ટ
સૂચિ `telephony.turn` અને `web.turn` સિવાયની દરેક સપોર્ટેડ ઇવેન્ટ મેળવે છે,
જેને સ્પષ્ટ રીતે પસંદ કરવી જરૂરી છે.

### એન્ડપોઇન્ટ સ્ટેટસ

- `active` — ડિલિવરી સામાન્ય રીતે ચાલુ રહે છે.
- `disabled` — `PATCH` દ્વારા મેન્યુઅલી થોભાવેલ. કોઈ વિનંતીઓ મોકલવામાં આવતી નથી. અમે
  `disabled` એન્ડપોઇન્ટનું સ્ટેટસ ક્યારેય બદલતા નથી; તેને ફરીથી
  `active` કરવું હંમેશા તમારો નિર્ણય છે.
- `failing` — જ્યારે એન્ડપોઇન્ટને ડિલિવરી એકપણ 2xx મેળવ્યા વિના
  તેની સંપૂર્ણ રિટ્રાય સૂચિ (24 કલાકમાં 8 પ્રયાસો) પૂર્ણ કરે ત્યારે આપમેળે સેટ થાય છે.
  નિષ્ફળ એન્ડપોઇન્ટને આગળ કોઈ ટ્રાફિક મળતો નથી.
  એન્ડપોઇન્ટ ઠીક થઈ જાય પછી, તેનું સ્ટેટસ `PATCH` દ્વારા પાછું `active` કરો;
  જે ડિલિવરીની રિટ્રાય સૂચિ હજી પૂરી થઈ નથી તે જ્યાંથી અટકી હતી ત્યાંથી ફરી શરૂ થાય છે.

---

## એન્ડપોઇન્ટ્સની સૂચિ

<CodeGroup>
```bash cURL
curl https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```
</CodeGroup>

[એન્ડપોઇન્ટ ઑબ્જેક્ટ્સ](#endpoint-object) નો array પરત કરે છે.
ફક્ત તે એજન્ટ સુધી સીમિત એન્ડપોઇન્ટ્સ પરત કરવા માટે `?agent_id=42` પાસ કરો.

### એજન્ટ-સીમિત એન્ડપોઇન્ટ્સ

સમગ્ર સંસ્થાના એન્ડપોઇન્ટ્સ દરેક મેળ ખાતી ઇવેન્ટ મેળવે છે. `agent_id` ધરાવતો
એન્ડપોઇન્ટ માત્ર તે એજન્ટ દ્વારા હેન્ડલ કરાયેલા કૉલ્સ માટેની મેળ ખાતી ઇવેન્ટ્સ મેળવે છે;
`alert.triggered` જેવી એજન્ટ સંદર્ભ વિનાની ઇવેન્ટ્સ ત્યાં ક્યારેય પહોંચતી નથી. તમે
એજન્ટ બિલ્ડરના **વેબહુક્સ** વિભાગમાંથી પણ આ એન્ડપોઇન્ટ્સ બનાવી અને મેનેજ કરી શકો છો.

---

## એન્ડપોઇન્ટ બનાવો

<CodeGroup>
```bash cURL
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Production — Call events",
    "url":    "https://example.com/thunderphone/hook",
    "events": ["telephony.incoming", "telephony.complete"]
  }'
```

```python Python
result = requests.post(
    "https://api.thunderphone.com/v1/developer/webhook-endpoints",
    headers={"Authorization": "Bearer sk_live_YOUR_API_KEY"},
    json={
        "label":  "Production — Call events",
        "url":    "https://example.com/thunderphone/hook",
        "events": ["telephony.incoming", "telephony.complete"],
    },
).json()
secret = result["secret"]
endpoint_id = result["id"]
```
</CodeGroup>

### વિનંતી ફીલ્ડ્સ

| ફીલ્ડ | પ્રકાર | આવશ્યક | વર્ણન |
|-------|------|----------|-------------|
| `label` | string | હા | 1–120 અક્ષરો |
| `url` | string | હા | HTTPS URL (`http` માત્ર `localhost` / `127.0.0.1` માટે માન્ય છે) |
| `events` | array | ના | ખાલી/છોડવામાં આવેલ હોય તો `telephony.turn` / `web.turn` સિવાયની તમામ ઇવેન્ટ્સનું સબ્સ્ક્રિપ્શન થાય છે; તેના માટે સ્પષ્ટ સબ્સ્ક્રિપ્શન જરૂરી છે. [માન્ય ઇવેન્ટ પ્રકારો](#valid-event-types)માં સૂચિબદ્ધ મૂલ્યોનો ઉપયોગ કરવો આવશ્યક છે; ડુપ્લિકેટ્સ દૂર કરવામાં આવે છે |
| `agent_id` | integer \| null | ના | આ સંસ્થાના કોઈ એજન્ટ સુધી ડિલિવરી મર્યાદિત કરો; સંસ્થા-વ્યાપી એન્ડપોઇન્ટ માટે છોડો અથવા `null` નો ઉપયોગ કરો |

[એન્ડપોઇન્ટ ઑબ્જેક્ટ](#endpoint-object) સાથે `201 Created` પરત કરે છે, તેમજ
કાચી સાઇનિંગ કી ધરાવતું વધારાનું ટોચના સ્તરનું `secret` ફીલ્ડ પણ પરત કરે છે — એક
48-અક્ષરની હેક્સ સ્ટ્રિંગ:

```json
{
  "id": "c4d5e6f7-…",
  "label": "Production — Call events",
  "url": "https://example.com/thunderphone/hook",
  "events": ["telephony.incoming", "telephony.complete"],
  "status": "active",
  "secret_hint": "a1b2…9f0e",
  "created_at": "2026-04-20T18:24:10.113Z",
  "updated_at": "2026-04-20T18:24:10.113Z",
  "secret": "a1b2c37e08d94f5b16a2c8d90e7f3a4b5c6d7e8f90a19f0e"
}
```

<Warning>
  `secret` **માત્ર બનાવતી વખતે** પરત કરવામાં આવે છે. ત્યારબાદના `GET` પ્રતિસાદોમાં
  ફક્ત `secret_hint` સામેલ હોય છે. પ્રતિસાદ બંધ કરતાં પહેલાં સંપૂર્ણ મૂલ્યને તમારા સિક્રેટ
  મેનેજરમાં કૉપિ કરો.
</Warning>

---

## એન્ડપોઇન્ટ અપડેટ કરો

<CodeGroup>
```bash cURL
curl -X PATCH https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Production — Call + Grade events",
    "events": ["telephony.incoming", "telephony.complete", "call.graded"]
  }'
```
</CodeGroup>

| ફીલ્ડ | પ્રકાર | વર્ણન |
|-------|------|-------------|
| `label` | string | |
| `url` | string | |
| `events` | array | |
| `status` | string | `active` અથવા `disabled`. સર્વરે `failing` તરીકે ચિહ્નિત કરેલા એન્ડપોઇન્ટને ફરી સક્રિય કરવા માટે `active` સેટ કરો |
| `agent_id` | integer \| null | એન્ડપોઇન્ટને મર્યાદિત કરવા એજન્ટ id સેટ કરો અથવા તેને સંસ્થા-વ્યાપી બનાવવા `null` સેટ કરો |

અપડેટ કરેલા [એન્ડપોઇન્ટ ઑબ્જેક્ટ](#endpoint-object) સાથે `200 OK` પરત કરે છે.

---

## પરીક્ષણ ડિલિવરી મોકલો

કેનોનિકલ JSON સિરિયલાઇઝેશન,
`X-ThunderPhone-Signature`, ડિલિવરી રેકોર્ડિંગ અને પુનઃપ્રયાસ હિસાબી નોંધ સહિતની સામાન્ય
ડિલિવરી પાઇપલાઇનનો ઉપયોગ કરીને એક એન્ડપોઇન્ટ પર કૃત્રિમ `webhook.test` ઇવેન્ટ મોકલો.
પરીક્ષણ તેના `events` ફિલ્ટરને ધ્યાનમાં લીધા વિના પસંદ કરેલા એન્ડપોઇન્ટને લક્ષ્ય બનાવે છે.

<CodeGroup>
```bash cURL
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../test \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```
</CodeGroup>

એન્ડપોઇન્ટને આના જેવું એન્વલપ મળે છે:

```json
{
  "data": {
    "message": "ThunderPhone webhook test",
    "sent_at": "2026-07-17T20:12:34.567890+00:00"
  },
  "event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
  "type": "webhook.test"
}
```

ગંતવ્ય ભૂલ પરત કરે તો પણ API પ્રથમ પ્રયાસ પછી `200 OK` પરત કરે છે.
ડિલિવરીના પરિણામ માટે `success`, `status`, `response_code`, અને `error`
તપાસો:

```json
{
  "success": true,
  "event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
  "event_type": "webhook.test",
  "status": "delivered",
  "response_code": 204,
  "error": ""
}
```

`webhook.test` કૃત્રિમ છે અને તેને એન્ડપોઇન્ટના `events`
સબ્સ્ક્રિપ્શનમાં ઉમેરી શકાતું નથી. જો પ્રથમ પ્રયાસ નિષ્ફળ જાય, તો ડિલિવરી સામાન્ય
ઇવેન્ટ ડિલિવરીઓ જેવું જ પુનઃપ્રયાસ શેડ્યૂલ અનુસરે છે.

વાસ્તવિક ઇવેન્ટ આકાર સામે ટ્રિગર ગોઠવવા માટે વૈકલ્પિક
`event_type` આપો. ડિલિવરી હજી પણ કૃત્રિમ રહે છે અને તેમાં `"sample": true` હોય છે;
કૉલ-સંબંધિત નમૂનાઓ `call_id: 0` અને `agent_id: 0` નો ઉપયોગ કરે છે.

```bash
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../test \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"event_type":"call.graded"}'
```

`event_type` [માન્ય ઇવેન્ટ પ્રકારો](#valid-event-types)માંથી કોઈપણ મૂલ્ય સ્વીકારે છે.
તેને છોડવાથી સામાન્ય `webhook.test` વર્તન જળવાય છે.

---

## એન્ડપોઇન્ટ કાઢી નાખો

<CodeGroup>
```bash cURL
curl -X DELETE https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```
</CodeGroup>

`204 No Content` પરત કરે છે. URL પરની ડિલિવરી તરત બંધ થાય છે;
ચાલુ પુનઃપ્રયાસો છોડી દેવામાં આવે છે.

---

## ડિલિવરીઓ ડિબગ કરો

વેબહૂક મોકલવામાં આવ્યો નહોતો એવું નિષ્કર્ષ કાઢતા પહેલાં,
[`GET /v1/developer/webhook-deliveries`](/api-reference/webhook-deliveries) તપાસો.
તે બંને વેબહૂક સિસ્ટમોના તાજેતરના પ્રયાસો દર્શાવે છે, જેમાં કૉલ id,
URL ઓરિજિન, HTTP સ્થિતિ, પ્રયાસોની સંખ્યા, મંજૂરીસૂચિબદ્ધ નિષ્ફળતા શ્રેણી અને આગામી
પુનઃપ્રયાસ સમય સામેલ છે. તે ક્યારેય ઇવેન્ટ પેલોડ, ટ્રાન્સક્રિપ્ટ, સંગ્રહિત ભૂલ લખાણ,
પ્રતિસાદ બોડી અથવા URL પાથ પરત કરતું નથી.

તમે આ જ તાજેતરનો ઇતિહાસ **એજન્ટ્સ → એજન્ટ પસંદ કરો → વેબહૂક્સ →
તાજેતરની ડિલિવરીઓ** માં પણ જોઈ શકો છો. પંક્તિઓ એન્ડપોઇન્ટ લેબલ અને સૌથી તાજેતરના
પ્રયાસ દ્વારા ઉપયોગમાં લેવાયેલ URL ઓરિજિન દર્શાવે છે. આ અપરિવર્તનીય ઓડિટ લોગને બદલે
ઓપરેશનલ સ્થિતિ છે: એન્ડપોઇન્ટ કાઢી નાખવાથી તેની ડિલિવરી પંક્તિઓ પણ કાઢી નાખવામાં આવે છે.

n8n `404` માટે, પહેલાં ખાતરી કરો કે વર્કફ્લો સક્રિય છે, `POST` સ્વીકારે છે અને
ટેસ્ટ URLને બદલે પ્રોડક્શન વેબહૂક URL નો ઉપયોગ કરે છે. `401` અથવા `403`
પ્રમાણીકરણ અથવા સિગ્નેચર માન્યતા તરફ સૂચવે છે; સમયસમાપ્તિ ગંતવ્ય વિલંબતા
અથવા ઉપલબ્ધતા તરફ સૂચવે છે; TLS ભૂલો પ્રમાણપત્ર ચેઇન, હોસ્ટનામ અથવા સમાપ્તિ તરફ સૂચવે છે.

---

## સંબંધિત

<CardGroup cols={2}>
  <Card title="ઇવેન્ટ્સ કેટલોગ" icon="list" href="/gu/webhooks/events">
    તમે સબ્સ્ક્રાઇબ કરી શકો તેવા `events` મૂલ્યોની સંપૂર્ણ સૂચિ.
  </Card>
  <Card title="વેબહૂક્સ ઝાંખી" icon="bolt" href="/gu/webhooks/overview">
    સિગ્નેચર ચકાસણી અને ડિલિવરી અર્થવિજ્ઞાન.
  </Card>
</CardGroup>
