curl --request POST \
--url https://api.yalg.ai/v1/anecdotes/audio \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--form audio='@example-file'const form = new FormData();
form.append('audio', '<audio file>');
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.yalg.ai/v1/anecdotes/audio', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.yalg.ai/v1/anecdotes/audio"
files = { "audio": ("example-file", open("example-file", "rb")) }
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text){
"id": "123e4567-e89b-12d3-a456-426614174000",
"title": "My Experience at the Tech Conference",
"content": "Transcribed and processed content from audio...",
"authorId": "987fcdeb-51a2-43d7-8f9e-123456789abc",
"tags": [
"conference",
"networking"
],
"priority": 1,
"isActive": true,
"createdAt": "2024-01-15T10:30:00Z"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request",
"code": "validation_failed"
}{
"statusCode": 401,
"message": "Invalid or missing API key",
"error": "Unauthorized",
"code": "unauthorized"
}{
"statusCode": 403,
"message": "Access denied",
"error": "Forbidden",
"code": "forbidden"
}{
"statusCode": 409,
"message": "Resource conflict",
"error": "Conflict",
"code": "conflict"
}{
"statusCode": 429,
"message": "Rate limit exceeded",
"error": "Too Many Requests",
"code": "rate_limit_exceeded",
"retryAfter": 60
}{
"statusCode": 500,
"message": "Internal server error",
"error": "Internal Server Error",
"code": "internal_server_error"
}Create anecdote from audio
Processes an audio file to extract and create an anecdote using AI transcription and content analysis. When autoFill is enabled, AI will generate additional details.
curl --request POST \
--url https://api.yalg.ai/v1/anecdotes/audio \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--form audio='@example-file'const form = new FormData();
form.append('audio', '<audio file>');
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.yalg.ai/v1/anecdotes/audio', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.yalg.ai/v1/anecdotes/audio"
files = { "audio": ("example-file", open("example-file", "rb")) }
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text){
"id": "123e4567-e89b-12d3-a456-426614174000",
"title": "My Experience at the Tech Conference",
"content": "Transcribed and processed content from audio...",
"authorId": "987fcdeb-51a2-43d7-8f9e-123456789abc",
"tags": [
"conference",
"networking"
],
"priority": 1,
"isActive": true,
"createdAt": "2024-01-15T10:30:00Z"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request",
"code": "validation_failed"
}{
"statusCode": 401,
"message": "Invalid or missing API key",
"error": "Unauthorized",
"code": "unauthorized"
}{
"statusCode": 403,
"message": "Access denied",
"error": "Forbidden",
"code": "forbidden"
}{
"statusCode": 409,
"message": "Resource conflict",
"error": "Conflict",
"code": "conflict"
}{
"statusCode": 429,
"message": "Rate limit exceeded",
"error": "Too Many Requests",
"code": "rate_limit_exceeded",
"retryAfter": 60
}{
"statusCode": 500,
"message": "Internal server error",
"error": "Internal Server Error",
"code": "internal_server_error"
}Authorizations
YALG Developer API key. Send it in the x-api-key header from a server-side environment only.
Query Parameters
Enable AI auto-fill for missing details
false
Body
Audio file (mp3, wav, m4a, etc.)
Priority level (1 = highest, 5 = lowest)
1 <= x <= 5Optional title to keep when autoFill is disabled
Optional story type
JSON array of tags, for example ["leadership"]
JSON array of content scopes, for example ["linkedin"]
Optional mood/tone
Optional context around the anecdote
Optional lesson learned
Optional LinkedIn angle
Whether the anecdote starts as favorite
true, false Whether the anecdote is time-sensitive
true, false Whether the anecdote is shared across all workspaces (stored without a workspace scope)
true, false Response
Audio anecdote processed and created successfully