Speaking time
Estimate speaking time at your chosen pace.
Base URL: https://happytails.ai · public API not connected
Overview
An estimate based on English word segmentation and your selected pace. Pauses, technical material and delivery style can change the actual time.
All API requests process supplied data on the server.
Request parameters
Send a JSON object. Unknown properties are rejected. Omitted options use the defaults below; enter numbers and booleans as JSON values, not quoted text.
input is a string, empty by default, up to 1,000,000 characters. Change the input or settings to update your result. Results update as you type. Up to 1,000,000 characters.
This endpoint does not accept a files array.
Options
options.wpmnumberSpeaking words per minute
Success response
HTTP 200 returns tool and result. Text is in result.text; parsed JSON may also appear in result.data. Generated files are in result.files with name, mime, bytes and base64. Decode the bytes before saving. Empty file arrays and null text are valid for operations returning another result type.
Complete output schema
{
"type": "object",
"required": [
"tool",
"result"
],
"properties": {
"tool": {
"type": "string"
},
"result": {
"type": "object",
"required": [
"text",
"files"
],
"properties": {
"text": {
"type": [
"string",
"null"
]
},
"data": {
"description": "Parsed JSON when the textual result is JSON."
},
"name": {
"type": "string"
},
"mime": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"mime",
"bytes",
"base64"
],
"properties": {
"name": {
"type": "string"
},
"mime": {
"type": "string"
},
"bytes": {
"type": "integer"
},
"base64": {
"type": "string",
"contentEncoding": "base64"
}
}
}
}
}
}
}
}Limits and failures
Limits below are enforced by this endpoint. Additional format, page, duration and model limits in the behavior notes also apply. Browser UI limits can differ from API limits.
request_bytes- 8388608
input_characters- 1000000
files_bytes- 5242880
max_files- 0
timeout_seconds- 12
Invalid requests return an error object with code and message. Read HTTP statuses, retries, timeouts and concurrency. Execution is synchronous and results are returned in the response.
Complete request schema
Expand the JSON schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"input": {
"type": "string",
"maxLength": 1000000,
"default": "",
"description": "Plain text input. File tools use files instead unless otherwise documented."
},
"options": {
"type": "object",
"additionalProperties": false,
"properties": {
"wpm": {
"type": "number",
"description": "Speaking words per minute",
"default": 150.0,
"minimum": 1,
"maximum": 1000,
"multipleOf": 1
}
}
}
}
}For browser automation, use the central WebMCP guidance and discover the tools actually exposed by the browser.
curl https://happytails.ai/api/v1/tools/speaking-time/run \
-H "Content-Type: application/json" \
--data '{"input": "Hello world", "options": {}}'const payload = {
"input": "Hello world",
"options": {}
};
const response = await fetch(
"https://happytails.ai/api/v1/tools/speaking-time/run",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(payload)
}
);
const data = await response.json();
if (!response.ok) throw new Error(data.error.message);
console.log(data.result);import json
from urllib.request import Request, urlopen
payload = json.loads('{"input": "Hello world", "options": {}}')
request = Request(
"https://happytails.ai/api/v1/tools/speaking-time/run",
data=json.dumps(payload).encode(),
headers={"Content-Type": "application/json"},
)
with urlopen(request, timeout=200) as response:
result = json.load(response)
print(result){
"input": "Hello world",
"options": {}
}Replace the API origin and input values for your application.
{
"tool": "speaking-time",
"result": {
"text": "{\n \"words\": 2,\n \"wordsPerMinute\": 150,\n \"estimatedSeconds\": 1\n}",
"files": [],
"name": "result.json",
"mime": "application/json",
"data": {
"words": 2,
"wordsPerMinute": 150,
"estimatedSeconds": 1
}
}
}{
"error": {
"code": "INVALID_INPUT",
"message": "Unknown request property. See the tool input schema."
}
}