Llamadas
Llama desde tus números (Marsial llama a la persona y la conecta con tu teléfono, una dirección SIP o un agente de voz con IA), lee el historial con grabaciones y transcripciones y calcula lo que cuesta una llamada.
Historial de llamadas de un número
Sección titulada «Historial de llamadas de un número»/v1/phone-numbers/{id}/callsEntrantes y salientes, de la más reciente a la más antigua.
Parámetros
idstringobligatoriocursorstringdirectionstringlimitinteger
Respuesta 200
data
itemsobject[]obligatorioitems
idstringobligatoriocall_…
numberIdstringobligatoriochannelstringobligatoriopstn(teléfono).directionstringobligatoriofromstringobligatoriotostringobligatoriostatusstringobligatoriodialing, ringing, answered, ended, failed, no_answer…
endReasonstringdurationSecondsnumberrecordingbooleanobligatoriotranscriptSnippetstringtranscriptobject[]Solo en GET /calls/{id}.
transcript
textstringobligatorioatstring
costnumberEuros.
startedAtstringendedAtstring
nextCursorstring | nullobligatorioEnvíalo como cursor para la página siguiente; null en la última.
curl "https://api.marsial.dev/v1/phone-numbers/num_…/calls" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/phone-numbers/num_…/calls', { headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.marsial.dev/v1/phone-numbers/num_…/calls", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Llamar a alguien
Sección titulada «Llamar a alguien»/v1/callsMarsial llama a to desde tu número y, cuando contesta, le conecta con forwardTo (tu teléfono, una dirección SIP o un agente de voz) o con el destino de entrada del número.
Cuerpo
numberIdstringobligatorioEl número que llama (num_…).
tostringobligatorioA quién llamar.
forwardTostringCon quién conectarle cuando conteste; si no, el destino de entrada del número.
greetingstringSe le dice al contestar, antes de conectar.
recordbooleantranscribebooleanidempotencyKeystring
Respuesta 201
data
idstringobligatoriocall_…
numberIdstringobligatoriochannelstringobligatoriopstn(teléfono).directionstringobligatoriofromstringobligatoriotostringobligatoriostatusstringobligatoriodialing, ringing, answered, ended, failed, no_answer…
endReasonstringdurationSecondsnumberrecordingbooleanobligatoriotranscriptSnippetstringtranscriptobject[]Solo en GET /calls/{id}.
transcript
textstringobligatorioatstring
costnumberEuros.
startedAtstringendedAtstring
curl -X POST "https://api.marsial.dev/v1/calls" \ -H "Authorization: Bearer $MARSIAL_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "numberId": "num_…", "to": "+447700900123", "forwardTo": "tel:+447700900456" }'const res = await fetch('https://api.marsial.dev/v1/calls', { method: 'POST', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ "numberId": "num_…", "to": "+447700900123", "forwardTo": "tel:+447700900456" }),});const { data } = await res.json();import os, requests
res = requests.post( "https://api.marsial.dev/v1/calls", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"}, json={ "numberId": "num_…", "to": "+447700900123", "forwardTo": "tel:+447700900456" },)data = res.json()["data"]Lo que costaría una llamada
Sección titulada «Lo que costaría una llamada»/v1/calls/estimateParámetros
tostringobligatoriominutesintegernumberIdstringEl número que llamaría: la respuesta dice además si puede llegar a
to.
Respuesta 200
data
destinationCountrystringminutesintegerobligatorioperMinutenumberobligatorioEuros por minuto.
totalnumberobligatorioEuros por los minutos pedidos.
reachablebooleanCon
numberId:falsecuando ese número solo llama dentro de su país.notestring
curl "https://api.marsial.dev/v1/calls/estimate?to=%2B447700900123&minutes=5" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/calls/estimate?to=%2B447700900123&minutes=5', { headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.marsial.dev/v1/calls/estimate?to=%2B447700900123&minutes=5", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Ver una llamada
Sección titulada «Ver una llamada»/v1/calls/{id}Con su transcripción si la transcripción estaba activada.
Parámetros
idstringobligatorio
Respuesta 200
data
idstringobligatoriocall_…
numberIdstringobligatoriochannelstringobligatoriopstn(teléfono).directionstringobligatoriofromstringobligatoriotostringobligatoriostatusstringobligatoriodialing, ringing, answered, ended, failed, no_answer…
endReasonstringdurationSecondsnumberrecordingbooleanobligatoriotranscriptSnippetstringtranscriptobject[]Solo en GET /calls/{id}.
transcript
textstringobligatorioatstring
costnumberEuros.
startedAtstringendedAtstring
curl "https://api.marsial.dev/v1/calls/call_…" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/calls/call_…', { headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.marsial.dev/v1/calls/call_…", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Grabación de una llamada
Sección titulada «Grabación de una llamada»/v1/calls/{id}/recordingUn enlace al MP3 que funciona 15 minutos. Solo llamadas grabadas (por ajuste o por llamada).
Parámetros
idstringobligatorio
Respuesta 200
data
urlstringobligatorioFunciona 15 minutos.
curl "https://api.marsial.dev/v1/calls/call_…/recording" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/calls/call_…/recording', { headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.get( "https://api.marsial.dev/v1/calls/call_…/recording", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]/v1/calls/{id}/endParámetros
idstringobligatorio
Respuesta 204
Sin contenido
curl -X POST "https://api.marsial.dev/v1/calls/call_…/end" \ -H "Authorization: Bearer $MARSIAL_API_KEY"const res = await fetch('https://api.marsial.dev/v1/calls/call_…/end', { method: 'POST', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, },});const { data } = await res.json();import os, requests
res = requests.post( "https://api.marsial.dev/v1/calls/call_…/end", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"},)data = res.json()["data"]Transferir una llamada en curso
Sección titulada «Transferir una llamada en curso»/v1/calls/{id}/transferA otro teléfono (+E164) o a una dirección SIP; la llamada sale de tu control.
Parámetros
idstringobligatorio
Cuerpo
tostringobligatorio
Respuesta 204
Sin contenido
curl -X POST "https://api.marsial.dev/v1/calls/call_…/transfer" \ -H "Authorization: Bearer $MARSIAL_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "to": "+447700900789" }'const res = await fetch('https://api.marsial.dev/v1/calls/call_…/transfer', { method: 'POST', headers: { Authorization: `Bearer ${process.env.MARSIAL_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ "to": "+447700900789" }),});const { data } = await res.json();import os, requests
res = requests.post( "https://api.marsial.dev/v1/calls/call_…/transfer", headers={"Authorization": f"Bearer {os.environ['MARSIAL_API_KEY']}"}, json={ "to": "+447700900789" },)data = res.json()["data"]© 2026 Marsial by TWOFACES ·marsial.dev ·Panel ·soporte@twofacesco.com