diff --git a/docs/async-api/overview/audio/post-audio-url.md b/docs/async-api/overview/audio/post-audio-url.md
index 76ab57b6..20a3dde0 100644
--- a/docs/async-api/overview/audio/post-audio-url.md
+++ b/docs/async-api/overview/audio/post-audio-url.md
@@ -305,7 +305,7 @@ Parameter | Description
```confidenceThreshold``` | Double, optional
Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`.
Example: `"confidenceThreshold": 0.6`
```detectPhrases```| Boolean, optional
It shows Actionable Phrases in each sentence of conversation. These sentences can be found using the Conversation's Messages API. Default value is `false`.
Example: `"detectPhrases": true`
```name``` | String, optional
Your meeting name. Default name set to `conversationId`.
Example: `name: "Sales call"`, `name: "Customer call"`.
-```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `"""jobId"": ""9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"", ""status"": ""in_progress"""`
+```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `'webhookUrl': "https://yourdomain.com/jobs/callback"`
```entities``` | Object, optional
Input custom entities which can be detected in conversation using [Entities API](/docs/conversation-api/entities).
Example: `"entities": "customType": "Company Executives", "value": "Marketing director", "text": "Marketing director"`
```detectEntities``` | Boolean, optional
Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation.
Example: `"detectEntities": true`
```languageCode```| String, optional
We accept different languages. Please [check language Code](/docs/async-api/overview/async-api-supported-languages) as per your requirement.
Example: `"languageCode": "en-US"`
@@ -400,9 +400,9 @@ So, if you send a 120-second file with 3 speaker separated channels, the total d
### Using Webhook
---
-The `webhookUrl` will be used to send the status of job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url.
+The `webhookUrl` will be used to send the status of the job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url. The user's server should respond with the status code 200 on receiving the `webhookUrl` update. This will prevent Symbl from resending the same update.
-##### Code Example
+##### Sample Response
```js
{
@@ -416,6 +416,41 @@ Field | Description
```jobId``` | ID to be used with [Job API](/docs/async-api/overview/jobs-api).
Example: `"jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"`
```status``` | Current status of the job. (Valid statuses: [ `scheduled`, `in_progress`, `completed`, `failed` ])
Example: `"status": "in_progress"`
+##### Sample User Server
+
+Let's say your server runs on `localhost:9000`, then use `ngrok` to make your localhost and the "api" handle the Symbl Async API request by printing the events received from the request.
+Here is a sample code that simulates a local server "api" endpoint for `webhookUrl`:
+
+```js
+const express = require('express');
+const app = express();
+app.listen(9000, () => console.log('Listening at 9000'));
+app.use(express.static('public'));
+app.use(express.json({limit:'1mb'}));
+app.post('/api',(request,response) => {
+ let currentDate = new Date();
+ let data = request.body;
+ console.log('datetime:',currentDate,' jobId:',data.id,' status:', data.status);
+ response.json({
+ status:200
+ });
+ }
+)
+```
+
+Run `ngrok http 9000` and then pass the url `https://.../` with the "api" string address to the Async request through `webhookUrl`. For example: `https://0bd1-2601-600-8780-9280-181a-4525-3a3f-882d.ngrok.io/api`. Run your localhost server and then send the Async API request through the ngrok `webhookUrl`. You will receive the following status from your localhost server:
+
+```shell
+Listening at 9000
+
+datetime: 2021-11-10T03:29:34.998Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: scheduled
+
+datetime: 2021-11-10T03:29:35.526Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: in_progress
+
+datetime: 2021-11-10T03:31:39.777Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: completed
+```
+
+
### API Limit Error
---
```js
diff --git a/docs/async-api/overview/audio/post-audio.md b/docs/async-api/overview/audio/post-audio.md
index d4927706..b0a7ad31 100644
--- a/docs/async-api/overview/audio/post-audio.md
+++ b/docs/async-api/overview/audio/post-audio.md
@@ -213,7 +213,7 @@ Parameter | Description
```confidenceThreshold``` | Double, optional
Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`.
Example: `"confidenceThreshold": 0.6`
```detectPhrases```| Boolean, optional
It shows Actionable Phrases in each sentence of conversation. These sentences can be found using the Conversation's Messages API. Default value is `false`.
Example: `"detectPhrases": true`
```name``` | String, optional
Your meeting name. Default name set to `conversationId`.
Example: `name: "Sales call"`, `name: "Customer call"`.
-```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `"""jobId"": ""9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"", ""status"": ""in_progress"""`
+```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `'webhookUrl': "https://yourdomain.com/jobs/callback"`
```entities``` | Object, optional
Input custom entities which can be detected in conversation using [Entities API](/docs/conversation-api/entities).
Example: `"entities": "customType": "Company Executives", "value": "Marketing director", "text": "Marketing director"`
```detectEntities``` | Boolean, optional
Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation.
Example: `"detectEntities": true`
```languageCode```| String, optional
We accept different languages. Please [check language Code](/docs/async-api/overview/async-api-supported-languages) as per your requirement.
Example: `"languageCode": "en-US"`
@@ -326,9 +326,9 @@ So, if you send a 120-second file with 3 speaker separated channels, the total d
### Using Webhook
---
-The `webhookUrl` will be used to send the status of job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url.
+The `webhookUrl` will be used to send the status of the job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url. The user's server should respond with the status code 200 on receiving the `webhookUrl` update. This will prevent Symbl from resending the same update.
-##### Code Example
+##### Sample Response
```js
{
@@ -342,6 +342,40 @@ Field | Description
```jobId``` | ID to be used with [Job API](/docs/async-api/overview/jobs-api).
Example: `"jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"`
```status``` | Current status of the job. (Valid statuses: [ `scheduled`, `in_progress`, `completed`, `failed` ])
Example: `"status": "in_progress"`
+##### Sample User Server
+
+Let's say your server runs on `localhost:9000`, then use `ngrok` to make your localhost and the "api" handle the Symbl Async API request by printing the events received from the request.
+Here is a sample code that simulates a local server "api" endpoint for `webhookUrl`:
+
+```js
+const express = require('express');
+const app = express();
+app.listen(9000, () => console.log('Listening at 9000'));
+app.use(express.static('public'));
+app.use(express.json({limit:'1mb'}));
+app.post('/api',(request,response) => {
+ let currentDate = new Date();
+ let data = request.body;
+ console.log('datetime:',currentDate,' jobId:',data.id,' status:', data.status);
+ response.json({
+ status:200
+ });
+ }
+)
+```
+
+Run `ngrok http 9000` and then pass the url `https://.../` with the "api" string address to the Async request through `webhookUrl`. For example: `https://0bd1-2601-600-8780-9280-181a-4525-3a3f-882d.ngrok.io/api`. Run your localhost server and then send the Async API request through the ngrok `webhookUrl`. You will receive the following status from your localhost server:
+
+```shell
+Listening at 9000
+
+datetime: 2021-11-10T03:29:34.998Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: scheduled
+
+datetime: 2021-11-10T03:29:35.526Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: in_progress
+
+datetime: 2021-11-10T03:31:39.777Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: completed
+```
+
### API Limit Error
---
diff --git a/docs/async-api/overview/audio/put-audio-url.md b/docs/async-api/overview/audio/put-audio-url.md
index 948882cc..91d14118 100644
--- a/docs/async-api/overview/audio/put-audio-url.md
+++ b/docs/async-api/overview/audio/put-audio-url.md
@@ -318,7 +318,7 @@ Parameter | Description
```confidenceThreshold``` | Double, optional
Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`.
Example: `"confidenceThreshold": 0.6`
```detectPhrases```| Boolean, optional
It shows Actionable Phrases in each sentence of conversation. These sentences can be found using the Conversation's Messages API. Default value is `false`.
Example: `"detectPhrases": true`
```name``` | String, optional
Your meeting name. Default name set to `conversationId`.
Example: `name: "Sales call"`, `name: "Customer call"`.
-```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `"""jobId"": ""9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"", ""status"": ""in_progress"""`
+```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `'webhookUrl': "https://yourdomain.com/jobs/callback"`
```entities``` | Object, optional
Input custom entities which can be detected in conversation using [Entities API](/docs/conversation-api/entities).
Example: `"entities": "customType": "Company Executives", "value": "Marketing director", "text": "Marketing director"`
```detectEntities``` | Boolean, optional
Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation.
Example: `"detectEntities": true`
```languageCode```| String, optional
We accept different languages. Please [check language Code](/docs/async-api/overview/async-api-supported-languages) as per your requirement.
Example: `"languageCode": "en-US"`
@@ -412,9 +412,9 @@ So, if you send a 120-second file with 3 speaker separated channels, the total d
### Using Webhook
---
-The `webhookUrl` will be used to send the status of job created for uploaded audio url. Every time the status of the job changes it will be notified on the WebhookUrl.
+The `webhookUrl` will be used to send the status of the job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url. The user's server should respond with the status code 200 on receiving the `webhookUrl` update. This will prevent Symbl from resending the same update.
-##### Code Example
+##### Sample Response
```js
{
@@ -428,6 +428,41 @@ Field | Description
```jobId``` | ID to be used with [Job API](/docs/async-api/overview/jobs-api).
Example: `"jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"`
```status``` | Current status of the job. (Valid statuses: [ `scheduled`, `in_progress`, `completed`, `failed` ])
Example: `"status": "in_progress"`
+##### Sample User Server
+
+Let's say your server runs on `localhost:9000`, then use `ngrok` to make your localhost and the "api" handle the Symbl Async API request by printing the events received from the request.
+Here is a sample code that simulates a local server "api" endpoint for `webhookUrl`:
+
+```js
+const express = require('express');
+const app = express();
+app.listen(9000, () => console.log('Listening at 9000'));
+app.use(express.static('public'));
+app.use(express.json({limit:'1mb'}));
+app.post('/api',(request,response) => {
+ let currentDate = new Date();
+ let data = request.body;
+ console.log('datetime:',currentDate,' jobId:',data.id,' status:', data.status);
+ response.json({
+ status:200
+ });
+ }
+)
+```
+
+Run `ngrok http 9000` and then pass the url `https://.../` with the "api" string address to the Async request through `webhookUrl`. For example: `https://0bd1-2601-600-8780-9280-181a-4525-3a3f-882d.ngrok.io/api`. Run your localhost server and then send the Async API request through the ngrok `webhookUrl`. You will receive the following status from your localhost server:
+
+```shell
+Listening at 9000
+
+datetime: 2021-11-10T03:29:34.998Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: scheduled
+
+datetime: 2021-11-10T03:29:35.526Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: in_progress
+
+datetime: 2021-11-10T03:31:39.777Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: completed
+```
+
+
### API Limit Error
```js
diff --git a/docs/async-api/overview/audio/put-audio.md b/docs/async-api/overview/audio/put-audio.md
index 2930a96f..23c06b63 100644
--- a/docs/async-api/overview/audio/put-audio.md
+++ b/docs/async-api/overview/audio/put-audio.md
@@ -217,7 +217,7 @@ Parameter | Description
```confidenceThreshold``` | Double, optional
Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`.
Example: `"confidenceThreshold": 0.6`
```detectPhrases```| Boolean, optional
It shows Actionable Phrases in each sentence of conversation. These sentences can be found using the Conversation's Messages API. Default value is `false`.
Example: `"detectPhrases": true`
```name``` | String, optional
Your meeting name. Default name set to `conversationId`.
Example: `name: "Sales call"`, `name: "Customer call"`.
-```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `"""jobId"": ""9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"", ""status"": ""in_progress"""`
+```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `'webhookUrl': "https://yourdomain.com/jobs/callback"`
```entities``` | Object, optional
Input custom entities which can be detected in conversation using [Entities API](/docs/conversation-api/entities).
Example: `"entities": "customType": "Company Executives", "value": "Marketing director", "text": "Marketing director"`
```detectEntities``` | Boolean, optional
Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation.
Example: `"detectEntities": true`
```languageCode```| String, optional
We accept different languages. Please [check language Code](/docs/async-api/overview/async-api-supported-languages) as per your requirement.
Example: `"languageCode": "en-US"`
@@ -331,9 +331,9 @@ So, if you send a 120-second file with 3 speaker separated channels, the total d
### Using Webhook
---
-The `webhookUrl` will be used to send the status of job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url.
+The `webhookUrl` will be used to send the status of the job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url. The user's server should respond with the status code 200 on receiving the `webhookUrl` update. This will prevent Symbl from resending the same update.
-##### Code Example
+##### Sample Response
```js
{
@@ -347,6 +347,41 @@ Field | Description
```jobId``` | ID to be used with [Job API](/docs/async-api/overview/jobs-api).
Example: `"jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"`
```status``` | Current status of the job. (Valid statuses: [ `scheduled`, `in_progress`, `completed`, `failed` ])
Example: `"status": "in_progress"`
+##### Sample User Server
+
+Let's say your server runs on `localhost:9000`, then use `ngrok` to make your localhost and the "api" handle the Symbl Async API request by printing the events received from the request.
+Here is a sample code that simulates a local server "api" endpoint for `webhookUrl`:
+
+```js
+const express = require('express');
+const app = express();
+app.listen(9000, () => console.log('Listening at 9000'));
+app.use(express.static('public'));
+app.use(express.json({limit:'1mb'}));
+app.post('/api',(request,response) => {
+ let currentDate = new Date();
+ let data = request.body;
+ console.log('datetime:',currentDate,' jobId:',data.id,' status:', data.status);
+ response.json({
+ status:200
+ });
+ }
+)
+```
+
+Run `ngrok http 9000` and then pass the url `https://.../` with the "api" string address to the Async request through `webhookUrl`. For example: `https://0bd1-2601-600-8780-9280-181a-4525-3a3f-882d.ngrok.io/api`. Run your localhost server and then send the Async API request through the ngrok `webhookUrl`. You will receive the following status from your localhost server:
+
+```shell
+Listening at 9000
+
+datetime: 2021-11-10T03:29:34.998Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: scheduled
+
+datetime: 2021-11-10T03:29:35.526Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: in_progress
+
+datetime: 2021-11-10T03:31:39.777Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: completed
+```
+
+
### API Limit Error
---
```js
diff --git a/docs/async-api/overview/video/post-video-url.md b/docs/async-api/overview/video/post-video-url.md
index 1cc61d28..86b0d461 100644
--- a/docs/async-api/overview/video/post-video-url.md
+++ b/docs/async-api/overview/video/post-video-url.md
@@ -280,7 +280,7 @@ Parameter | Description
```confidenceThreshold``` | Double, optional
Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`.
Example: `"confidenceThreshold": 0.6`
```detectPhrases```| Boolean, optional
It shows Actionable Phrases in each sentence of conversation. These sentences can be found using the Conversation's Messages API. Default value is `false`.
Example: `"detectPhrases": true`
```name``` | String, optional
Your meeting name. Default name set to `conversationId`.
Example: `name: "Sales call"`, `name: "Customer call"`.
-```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `"""jobId"": ""9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"", ""status"": ""in_progress"""`
+```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `'webhookUrl': "https://yourdomain.com/jobs/callback"`
```entities``` | Object, optional
Input custom entities which can be detected in conversation using [Entities API](/docs/conversation-api/entities).
Example: `"entities": "customType": "Company Executives", "value": "Marketing director", "text": "Marketing director"`
```detectEntities``` | Boolean, optional
Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation.
Example: `"detectEntities": true`
```languageCode```| String, optional
We accept different languages. Please [check language Code](/docs/async-api/overview/async-api-supported-languages) as per your requirement.
Example: `"languageCode": "en-US"`
@@ -374,9 +374,9 @@ So, if you send a 120-second file with 3 speaker separated channels, the total d
### Using Webhook
---
-The `webhookUrl` will be used to send the status of job created for uploaded audio url. Every time the status of the job changes it will be notified on the WebhookUrl.
+The `webhookUrl` will be used to send the status of the job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url. The user's server should respond with the status code 200 on receiving the `webhookUrl` update. This will prevent Symbl from resending the same update.
-##### Code Example
+##### Sample Response
```js
{
@@ -390,6 +390,41 @@ Field | Description
```jobId``` | ID to be used with [Job API](/docs/async-api/overview/jobs-api).
Example: `"jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"`
```status``` | Current status of the job. (Valid statuses: [ `scheduled`, `in_progress`, `completed`, `failed` ])
Example: `"status": "in_progress"`
+##### Sample User Server
+
+Let's say your server runs on `localhost:9000`, then use `ngrok` to make your localhost and the "api" handle the Symbl Async API request by printing the events received from the request.
+Here is a sample code that simulates a local server "api" endpoint for `webhookUrl`:
+
+```js
+const express = require('express');
+const app = express();
+app.listen(9000, () => console.log('Listening at 9000'));
+app.use(express.static('public'));
+app.use(express.json({limit:'1mb'}));
+app.post('/api',(request,response) => {
+ let currentDate = new Date();
+ let data = request.body;
+ console.log('datetime:',currentDate,' jobId:',data.id,' status:', data.status);
+ response.json({
+ status:200
+ });
+ }
+)
+```
+
+Run `ngrok http 9000` and then pass the url `https://.../` with the "api" string address to the Async request through `webhookUrl`. For example: `https://0bd1-2601-600-8780-9280-181a-4525-3a3f-882d.ngrok.io/api`. Run your localhost server and then send the Async API request through the ngrok `webhookUrl`. You will receive the following status from your localhost server:
+
+```shell
+Listening at 9000
+
+datetime: 2021-11-10T03:29:34.998Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: scheduled
+
+datetime: 2021-11-10T03:29:35.526Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: in_progress
+
+datetime: 2021-11-10T03:31:39.777Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: completed
+```
+
+
### API Limit Error
```js
diff --git a/docs/async-api/overview/video/post-video.md b/docs/async-api/overview/video/post-video.md
index d5835acd..a7634361 100644
--- a/docs/async-api/overview/video/post-video.md
+++ b/docs/async-api/overview/video/post-video.md
@@ -190,7 +190,7 @@ Parameter | Description
```confidenceThreshold``` | Double, optional
Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`.
Example: `"confidenceThreshold": 0.6`
```detectPhrases```| Boolean, optional
It shows Actionable Phrases in each sentence of conversation. These sentences can be found using the Conversation's Messages API. Default value is `false`.
Example: `"detectPhrases": true`
```name``` | String, optional
Your meeting name. Default name set to `conversationId`.
Example: `name: "Sales call"`, `name: "Customer call"`.
-```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `"""jobId"": ""9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"", ""status"": ""in_progress"""`
+```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `'webhookUrl': "https://yourdomain.com/jobs/callback"`
```entities``` | Object, optional
Input custom entities which can be detected in conversation using [Entities API](/docs/conversation-api/entities).
Example: `"entities": "customType": "Company Executives", "value": "Marketing director", "text": "Marketing director"`
```detectEntities``` | Boolean, optional
Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation.
Example: `"detectEntities": true`
```languageCode```| String, optional
We accept different languages. Please [check language Code](/docs/async-api/overview/async-api-supported-languages) as per your requirement.
Example: `"languageCode": "en-US"`
@@ -303,9 +303,9 @@ So, if you send a 120-second file with 3 speaker separated channels, the total d
### Using Webhook
---
-The `webhookUrl` will be used to send the status of job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url.
+The `webhookUrl` will be used to send the status of the job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url. The user's server should respond with the status code 200 on receiving the `webhookUrl` update. This will prevent Symbl from resending the same update.
-##### Code Example
+##### Sample Response
```js
{
@@ -319,6 +319,41 @@ Field | Description
```jobId``` | ID to be used with [Job API](/docs/async-api/overview/jobs-api).
Example: `"jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"`
```status``` | Current status of the job. (Valid statuses: [ `scheduled`, `in_progress`, `completed`, `failed` ])
Example: `"status": "in_progress"`
+##### Sample User Server
+
+Let's say your server runs on `localhost:9000`, then use `ngrok` to make your localhost and the "api" handle the Symbl Async API request by printing the events received from the request.
+Here is a sample code that simulates a local server "api" endpoint for `webhookUrl`:
+
+```js
+const express = require('express');
+const app = express();
+app.listen(9000, () => console.log('Listening at 9000'));
+app.use(express.static('public'));
+app.use(express.json({limit:'1mb'}));
+app.post('/api',(request,response) => {
+ let currentDate = new Date();
+ let data = request.body;
+ console.log('datetime:',currentDate,' jobId:',data.id,' status:', data.status);
+ response.json({
+ status:200
+ });
+ }
+)
+```
+
+Run `ngrok http 9000` and then pass the url `https://.../` with the "api" string address to the Async request through `webhookUrl`. For example: `https://0bd1-2601-600-8780-9280-181a-4525-3a3f-882d.ngrok.io/api`. Run your localhost server and then send the Async API request through the ngrok `webhookUrl`. You will receive the following status from your localhost server:
+
+```shell
+Listening at 9000
+
+datetime: 2021-11-10T03:29:34.998Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: scheduled
+
+datetime: 2021-11-10T03:29:35.526Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: in_progress
+
+datetime: 2021-11-10T03:31:39.777Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: completed
+```
+
+
### API Limit Error
---
```js
diff --git a/docs/async-api/overview/video/put-video-url.md b/docs/async-api/overview/video/put-video-url.md
index b2d21e5c..906bb66b 100644
--- a/docs/async-api/overview/video/put-video-url.md
+++ b/docs/async-api/overview/video/put-video-url.md
@@ -299,7 +299,7 @@ Parameter | Description
```confidenceThreshold``` | Double, optional
Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`.
Example: `"confidenceThreshold": 0.6`
```detectPhrases```| Boolean, optional
It shows Actionable Phrases in each sentence of conversation. These sentences can be found using the Conversation's Messages API. Default value is `false`.
Example: `"detectPhrases": true`
```name``` | String, optional
Your meeting name. Default name set to `conversationId`.
Example: `name: "Sales call"`, `name: "Customer call"`.
-```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `"""jobId"": ""9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"", ""status"": ""in_progress"""`
+```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `'webhookUrl': "https://yourdomain.com/jobs/callback"`
```entities``` | Object, optional
Input custom entities which can be detected in conversation using [Entities API](/docs/conversation-api/entities).
Example: `"entities": "customType": "Company Executives", "value": "Marketing director", "text": "Marketing director"`
```detectEntities``` | Boolean, optional
Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation.
Example: `"detectEntities": true`
```languageCode```| String, optional
We accept different languages. Please [check language Code](/docs/async-api/overview/async-api-supported-languages) as per your requirement.
Example: `"languageCode": "en-US"`
@@ -393,9 +393,9 @@ So, if you send a 120-second file with 3 speaker separated channels, the total d
### Using Webhook
---
-The `webhookUrl` will be used to send the status of job created for uploaded audio url. Every time the status of the job changes it will be notified on the WebhookUrl.
+The `webhookUrl` will be used to send the status of the job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url. The user's server should respond with the status code 200 on receiving the `webhookUrl` update. This will prevent Symbl from resending the same update.
-##### Code Example
+##### Sample Response
```js
{
@@ -409,6 +409,41 @@ Field | Description
```jobId``` | ID to be used with [Job API](/docs/async-api/overview/jobs-api).
Example: `"jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"`
```status``` | Current status of the job. (Valid statuses: [ `scheduled`, `in_progress`, `completed`, `failed` ])
Example: `"status": "in_progress"`
+##### Sample User Server
+
+Let's say your server runs on `localhost:9000`, then use `ngrok` to make your localhost and the "api" handle the Symbl Async API request by printing the events received from the request.
+Here is a sample code that simulates a local server "api" endpoint for `webhookUrl`:
+
+```js
+const express = require('express');
+const app = express();
+app.listen(9000, () => console.log('Listening at 9000'));
+app.use(express.static('public'));
+app.use(express.json({limit:'1mb'}));
+app.post('/api',(request,response) => {
+ let currentDate = new Date();
+ let data = request.body;
+ console.log('datetime:',currentDate,' jobId:',data.id,' status:', data.status);
+ response.json({
+ status:200
+ });
+ }
+)
+```
+
+Run `ngrok http 9000` and then pass the url `https://.../` with the "api" string address to the Async request through `webhookUrl`. For example: `https://0bd1-2601-600-8780-9280-181a-4525-3a3f-882d.ngrok.io/api`. Run your localhost server and then send the Async API request through the ngrok `webhookUrl`. You will receive the following status from your localhost server:
+
+```shell
+Listening at 9000
+
+datetime: 2021-11-10T03:29:34.998Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: scheduled
+
+datetime: 2021-11-10T03:29:35.526Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: in_progress
+
+datetime: 2021-11-10T03:31:39.777Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: completed
+```
+
+
### API Limit Error
```js
diff --git a/docs/async-api/overview/video/put-video.md b/docs/async-api/overview/video/put-video.md
index 63cf2beb..59befb32 100644
--- a/docs/async-api/overview/video/put-video.md
+++ b/docs/async-api/overview/video/put-video.md
@@ -205,7 +205,7 @@ Parameter | Description
```confidenceThreshold``` | Double, optional
Minimum confidence score that you can set for an API to consider it as a valid insight (action items, follow-ups, topics, and questions). It should be in the range <=0.5 to <=1.0 (i.e., greater than or equal to `0.5` and less than or equal to `1.0`.). The default value is `0.5`.
Example: `"confidenceThreshold": 0.6`
```detectPhrases```| Boolean, optional
It shows Actionable Phrases in each sentence of conversation. These sentences can be found using the Conversation's Messages API. Default value is `false`.
Example: `"detectPhrases": true`
```name``` | String, optional
Your meeting name. Default name set to `conversationId`.
Example: `name: "Sales call"`, `name: "Customer call"`.
-```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `"""jobId"": ""9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"", ""status"": ""in_progress"""`
+```webhookUrl``` | String, optional
Webhook URL on which job updates to be sent. This should be after making the API request. See the [Webhook section](/docs/async-api/overview/text/post-text#webhookurl) for more.
Example: `'webhookUrl': "https://yourdomain.com/jobs/callback"`
```entities``` | Object, optional
Input custom entities which can be detected in conversation using [Entities API](/docs/conversation-api/entities).
Example: `"entities": "customType": "Company Executives", "value": "Marketing director", "text": "Marketing director"`
```detectEntities``` | Boolean, optional
Default value is `false`. If not set the [Entities API](/docs/conversation-api/entities) will not return any entities from the conversation.
Example: `"detectEntities": true`
```languageCode```| String, optional
We accept different languages. Please [check language Code](/docs/async-api/overview/async-api-supported-languages) as per your requirement.
Example: `"languageCode": "en-US"`
@@ -320,9 +320,9 @@ So, if you send a 120-second file with 3 speaker separated channels, the total d
### Using Webhook
---
-The `webhookUrl` will be used to send the status of job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url.
+The `webhookUrl` will be used to send the status of the job created for uploaded audio URL. Every time the status of the job changes it will be notified on the Webhook Url. The user's server should respond with the status code 200 on receiving the `webhookUrl` update. This will prevent Symbl from resending the same update.
-##### Code Example
+##### Sample Response
```js
{
@@ -336,6 +336,41 @@ Field | Description
```jobId``` | ID to be used with [Job API](/docs/async-api/overview/jobs-api).
Example: `"jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"`
```status``` | Current status of the job. (Valid statuses: [ `scheduled`, `in_progress`, `completed`, `failed` ])
Example: `"status": "in_progress"`
+##### Sample User Server
+
+Let's say your server runs on `localhost:9000`, then use `ngrok` to make your localhost and the "api" handle the Symbl Async API request by printing the events received from the request.
+Here is a sample code that simulates a local server "api" endpoint for `webhookUrl`:
+
+```js
+const express = require('express');
+const app = express();
+app.listen(9000, () => console.log('Listening at 9000'));
+app.use(express.static('public'));
+app.use(express.json({limit:'1mb'}));
+app.post('/api',(request,response) => {
+ let currentDate = new Date();
+ let data = request.body;
+ console.log('datetime:',currentDate,' jobId:',data.id,' status:', data.status);
+ response.json({
+ status:200
+ });
+ }
+)
+```
+
+Run `ngrok http 9000` and then pass the url `https://.../` with the "api" string address to the Async request through `webhookUrl`. For example: `https://0bd1-2601-600-8780-9280-181a-4525-3a3f-882d.ngrok.io/api`. Run your localhost server and then send the Async API request through the ngrok `webhookUrl`. You will receive the following status from your localhost server:
+
+```shell
+Listening at 9000
+
+datetime: 2021-11-10T03:29:34.998Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: scheduled
+
+datetime: 2021-11-10T03:29:35.526Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: in_progress
+
+datetime: 2021-11-10T03:31:39.777Z jobId: f4535f3f-9b7c-458b-a47a-cc84b916d9e6 status: completed
+```
+
+
### API Limit Error
---
```js