curl --request POST \
--url https://clientapi.woku.app/wokus/create-voicemail \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form wokuId=507f1f77bcf86cd799439011 \
--form qualification=5 \
--form clientEmail=reviewer@example.com \
--form clientPhone=56912345678 \
--form anonymous=falseimport requests
url = "https://clientapi.woku.app/wokus/create-voicemail"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"wokuId": "507f1f77bcf86cd799439011",
"qualification": "5",
"clientEmail": "reviewer@example.com",
"clientPhone": "56912345678",
"anonymous": "false"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('wokuId', '507f1f77bcf86cd799439011');
form.append('qualification', '5');
form.append('clientEmail', 'reviewer@example.com');
form.append('clientPhone', '56912345678');
form.append('anonymous', 'false');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://clientapi.woku.app/wokus/create-voicemail', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://clientapi.woku.app/wokus/create-voicemail",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"wokuId\"\r\n\r\n507f1f77bcf86cd799439011\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qualification\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientEmail\"\r\n\r\nreviewer@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientPhone\"\r\n\r\n56912345678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"anonymous\"\r\n\r\nfalse\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://clientapi.woku.app/wokus/create-voicemail"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"wokuId\"\r\n\r\n507f1f77bcf86cd799439011\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qualification\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientEmail\"\r\n\r\nreviewer@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientPhone\"\r\n\r\n56912345678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"anonymous\"\r\n\r\nfalse\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://clientapi.woku.app/wokus/create-voicemail")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"wokuId\"\r\n\r\n507f1f77bcf86cd799439011\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qualification\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientEmail\"\r\n\r\nreviewer@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientPhone\"\r\n\r\n56912345678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"anonymous\"\r\n\r\nfalse\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://clientapi.woku.app/wokus/create-voicemail")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"wokuId\"\r\n\r\n507f1f77bcf86cd799439011\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qualification\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientEmail\"\r\n\r\nreviewer@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientPhone\"\r\n\r\n56912345678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"anonymous\"\r\n\r\nfalse\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"_id": "507f1f77bcf86cd799439019",
"wokuId": "507f1f77bcf86cd799439011",
"qualification": {
"qualification": 4
},
"file": {
"filename": "voicemail.mp4",
"url": "<string>"
},
"transcription": "<string>",
"anonymous": false,
"clientId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"statusCode": 400,
"message": [
"description must be a string",
"fileUrl must be a valid URL"
],
"error": "Bad Request"
}{
"statusCode": 404,
"message": "Resource not found",
"error": "Not Found"
}Create a voice review
Creates a new voice review (voicemail) for a woku with form data. Requires an audio file upload along with a star rating. The audio will be automatically converted to MP4 format and transcribed.
curl --request POST \
--url https://clientapi.woku.app/wokus/create-voicemail \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form wokuId=507f1f77bcf86cd799439011 \
--form qualification=5 \
--form clientEmail=reviewer@example.com \
--form clientPhone=56912345678 \
--form anonymous=falseimport requests
url = "https://clientapi.woku.app/wokus/create-voicemail"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"wokuId": "507f1f77bcf86cd799439011",
"qualification": "5",
"clientEmail": "reviewer@example.com",
"clientPhone": "56912345678",
"anonymous": "false"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('wokuId', '507f1f77bcf86cd799439011');
form.append('qualification', '5');
form.append('clientEmail', 'reviewer@example.com');
form.append('clientPhone', '56912345678');
form.append('anonymous', 'false');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://clientapi.woku.app/wokus/create-voicemail', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://clientapi.woku.app/wokus/create-voicemail",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"wokuId\"\r\n\r\n507f1f77bcf86cd799439011\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qualification\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientEmail\"\r\n\r\nreviewer@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientPhone\"\r\n\r\n56912345678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"anonymous\"\r\n\r\nfalse\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://clientapi.woku.app/wokus/create-voicemail"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"wokuId\"\r\n\r\n507f1f77bcf86cd799439011\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qualification\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientEmail\"\r\n\r\nreviewer@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientPhone\"\r\n\r\n56912345678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"anonymous\"\r\n\r\nfalse\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://clientapi.woku.app/wokus/create-voicemail")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"wokuId\"\r\n\r\n507f1f77bcf86cd799439011\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qualification\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientEmail\"\r\n\r\nreviewer@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientPhone\"\r\n\r\n56912345678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"anonymous\"\r\n\r\nfalse\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://clientapi.woku.app/wokus/create-voicemail")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"wokuId\"\r\n\r\n507f1f77bcf86cd799439011\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"qualification\"\r\n\r\n5\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientEmail\"\r\n\r\nreviewer@example.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"clientPhone\"\r\n\r\n56912345678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"anonymous\"\r\n\r\nfalse\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"_id": "507f1f77bcf86cd799439019",
"wokuId": "507f1f77bcf86cd799439011",
"qualification": {
"qualification": 4
},
"file": {
"filename": "voicemail.mp4",
"url": "<string>"
},
"transcription": "<string>",
"anonymous": false,
"clientId": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"statusCode": 400,
"message": [
"description must be a string",
"fileUrl must be a valid URL"
],
"error": "Bad Request"
}{
"statusCode": 404,
"message": "Resource not found",
"error": "Not Found"
}Authorizations
Company API key. Obtain this from your Woku dashboard under Settings > API Keys.
Body
Audio file for the voicemail (MP3, WAV, M4A, WebM, etc.). Will be automatically converted to MP4.
MongoDB ObjectId of the woku to add the review to
"507f1f77bcf86cd799439011"
Star rating from 1 to 5 (as string for form-data)
1, 2, 3, 4, 5 "5"
Email address of the reviewer
"reviewer@example.com"
Phone number of the reviewer
"56912345678"
Whether the review should be anonymous (as string for form-data)
true, false "false"
Response
Voicemail created successfully
Unique identifier of the voicemail
"507f1f77bcf86cd799439019"
Woku ID the voicemail belongs to
"507f1f77bcf86cd799439011"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
AI-generated transcription
false