Estimar
POST /estimate/{sourceFileExtension} calcula una cotización para un archivo y un JSON de opciones sin subir el archivo.
Buscar opciones válidas
Llama a GET /options/{format} antes de construir un JSON de opciones. Devuelve los ids de capacidades válidos, las selecciones predeterminadas y los valores de opción permitidos para ese formato de origen.
GET /options/mp4
X-Fast-Api-Key: YOUR_API_KEY{
"format": "mp4",
"job": "extract.mp4",
"defaults": {
"selectedCapabilities": ["video.audio", "video.frames", "video.metadata", "video.subtitles"],
"includeManifest": true,
"capabilityOptions": {
"video.audio": {
"audioFormat": "mp3"
},
"video.frames": {
"frameMode": "every-n-seconds",
"frameIntervalSeconds": 1,
"maxExtractedFrames": 500
}
}
},
"capabilities": [
{
"id": "video.audio",
"output": "audio",
"defaultSelected": true,
"options": [
{
"id": "audioFormat",
"type": "enum",
"defaultValue": "mp3",
"allowedValues": ["mp3", "wav", "m4a", "original", "best"]
}
]
},
{
"id": "media.transcript",
"output": "transcript",
"defaultSelected": false,
"options": [
{
"id": "transcription.mode",
"type": "enum",
"required": true,
"defaultValue": "fast",
"allowedValues": ["fast", "quality", "meeting-intelligence"]
}
]
}
]
}Usa capabilities[].id dentro de options.extraction.selectedCapabilities. Si una capacidad seleccionada tiene options[], coloca cada valor en options.extraction.capabilityOptions[capability.id][option.id].
Petición
POST /estimate/mp4
Content-Type: application/json
X-Fast-Api-Key: YOUR_API_KEY{
"fileSizeMb": 25,
"durationMinutes": 3,
"options": {
"extraction": {
"selectedCapabilities": ["video.audio", "video.metadata", "media.transcript"],
"capabilityOptions": {
"media.transcript": {
"transcription.mode": "quality"
}
}
}
}
}Parámetros de ruta
| Parámetro | Obligatorio | Notas |
|---|---|---|
sourceFileExtension | Sí | Extensión de origen con o sin punto, como mp4, pdf, docx o zip. |
Campos
| Campo | Obligatorio | Notas |
|---|---|---|
fileSizeBytes o fileSizeMb | Sí | Se usa para precios por crédito de archivo y para límites. |
durationSeconds o durationMinutes | Sí para audio y video | Esos formatos se cobran por duración. |
pageCount, slideCount, sheetCount, documentUnitCount | Sí para documentos | Envía la métrica que corresponda al tipo de origen: pageCount para PDF y Word, slideCount para PowerPoint, sheetCount para Excel. |
frameCount | Sí para imágenes que se cobran por fotograma | Se aplica a avif, avifs, gif, ico, png, tif, tiff y webp, incluidos los archivos de un solo fotograma. |
workflow | No | extract de forma predeterminada; usa transcribe para estimaciones solo de transcripción. |
mode | Para anular el modo solo-transcripción | fast, quality o meeting-intelligence. |
options | No | El mismo objeto de opciones de extracción que acepta POST /extract. |
Casi todos los formatos se cobran según la mayor de dos o más métricas: por ejemplo, una presentación de PowerPoint cuesta lo que resulte mayor entre 1 crédito por cada 5 MB y 1 crédito por cada 5 diapositivas. El endpoint calcula el precio únicamente con las métricas que envías, así que cuando falta alguna prefiere no responder antes que devolver la cifra parcial más baja. Lee la métrica del archivo antes de pedir la estimación: todos esos valores se obtienen en local, sin subir nada.
Respuesta
{
"job": "extract.mp4",
"category": "video",
"quotedCredits": 16,
"lineItems": [
{
"kind": "base",
"credits": 1
},
{
"kind": "capability",
"capabilityId": "media.transcript",
"credits": 15,
"mode": "quality",
"unit": "minute"
}
]
}Cotización de créditos
quotedCredits es el coste cotizado en créditos para el archivo y el JSON de opciones. lineItems desglosa esa cotización entre extracción base y complementos seleccionados con coste adicional.
Errores
| Estado | Código | Significado |
|---|---|---|
| 400 | estimate.unsupported_format | La extensión de origen no es compatible. |
| 400 | estimate.invalid_file_size | Falta fileSizeBytes o fileSizeMb, o el valor es cero o negativo. |
| 400 | estimate.duration_limit_exceeded | La duración supera el límite de tu plan. |
| 422 | estimate.exact_metrics_required | No se envió una métrica con la que se cobra este formato. |
estimate.exact_metrics_required indica exactamente qué falta enviar:
{
"error": "estimate.exact_metrics_required",
"format": "pptx",
"job": "extract.pptx",
"params": {
"format": "pptx",
"job": "extract.pptx",
"missingMetrics": ["documentUnits"],
"documentUnitKind": "slides",
"fields": ["slideCount", "documentUnitCount"]
}
}Envía cualquier campo de params.fields y vuelve a intentarlo. Una presentación de 647 KB con 9 diapositivas cuesta 2 créditos (ceil(9 / 5) supera a ceil(0,647 / 5)), así que cotizarla solo por tamaño mostraría 1 crédito y luego cobraría 2. El endpoint devuelve este error en lugar de una cifra que no podría sostener.