Upload many recordings at once
curl --request POST \
--url https://api.pineyard.ai/speech/calls/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--header 'Idempotency-Key: <idempotency-key>' \
--form files=@example-file \
--form 'scorecardId=<string>'const form = new FormData();
form.append('files', '<string>');
form.append('scorecardId', '<string>');
const options = {
method: 'POST',
headers: {'Idempotency-Key': '<idempotency-key>', Authorization: 'Bearer <token>'}
};
options.body = form;
fetch('https://api.pineyard.ai/speech/calls/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.pineyard.ai/speech/calls/bulk"
files = { "files": ("example-file", open("example-file", "rb")) }
payload = { "scorecardId": "<string>" }
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text){
"accepted": [
{
"id": "<string>",
"status": "UPLOADING",
"fileName": "<string>",
"fileSizeBytes": 123,
"durationSeconds": 123,
"score": 123,
"outcomeLabel": "<string>",
"summary": "<string>",
"errorMessage": "<string>",
"callDate": "<string>",
"createdAt": "<string>",
"completedAt": "<string>",
"rep": {
"id": "<string>",
"name": "<string>"
},
"scorecard": {
"id": "<string>",
"name": "<string>"
}
}
],
"rejected": [
{
"fileName": "<string>",
"error": "<string>",
"message": "<string>"
}
]
}Recordings
Upload many recordings at once
POST
/
speech
/
calls
/
bulk
Upload many recordings at once
curl --request POST \
--url https://api.pineyard.ai/speech/calls/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--header 'Idempotency-Key: <idempotency-key>' \
--form files=@example-file \
--form 'scorecardId=<string>'const form = new FormData();
form.append('files', '<string>');
form.append('scorecardId', '<string>');
const options = {
method: 'POST',
headers: {'Idempotency-Key': '<idempotency-key>', Authorization: 'Bearer <token>'}
};
options.body = form;
fetch('https://api.pineyard.ai/speech/calls/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.pineyard.ai/speech/calls/bulk"
files = { "files": ("example-file", open("example-file", "rb")) }
payload = { "scorecardId": "<string>" }
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text){
"accepted": [
{
"id": "<string>",
"status": "UPLOADING",
"fileName": "<string>",
"fileSizeBytes": 123,
"durationSeconds": 123,
"score": 123,
"outcomeLabel": "<string>",
"summary": "<string>",
"errorMessage": "<string>",
"callDate": "<string>",
"createdAt": "<string>",
"completedAt": "<string>",
"rep": {
"id": "<string>",
"name": "<string>"
},
"scorecard": {
"id": "<string>",
"name": "<string>"
}
}
],
"rejected": [
{
"fileName": "<string>",
"error": "<string>",
"message": "<string>"
}
]
}Required scope:
speech.upload
Idempotency: an Idempotency-Key header is required when calling with an API key. See Idempotency.
Requires speech analysis enabled for your workspace. Otherwise the request is refused; see Errors.
Authorizations
Your API key, e.g. pk_live_xxxxxxxxxxxxxxxxxxxxxxxx.
Headers
Unique value (e.g. a UUID) per action, up to 200 printable ASCII characters. Reuse it only to retry the same request; the first response is replayed for 24 hours.
Maximum string length:
200Example:
"f1d2c3b4-0000-4000-8000-000000000000"
Body
multipart/form-data

