Skip to content
Secciones de la documentación

Trabajos de simulación

Las calculadoras responden en una sola solicitud. Los simuladores no (una resolución de onda completa tarda de minutos a horas), por eso se envían como trabajos y se consultan. Cada tipo de trabajo publica su contrato de parámetros en /api/py/v1/jobs/types: tipo, unidad, rango u opciones, valor predeterminado y obligatoriedad de cada parámetro, y los límites de su plan. El formulario del navegador se construye a partir de ese documento y el worker valida contra él, así que léalo en lugar de copiar nombres de parámetros de esta página.

Endpoints

Endpoints de trabajos
EndpointQué haceCredencial
GET /api/py/v1/jobs/typesCada tipo de trabajo de simulación, sus planes, su tiempo máximo, sus límites y sus cargas.Ninguna
GET /api/py/v1/jobs/types/{job_type}El contrato de parámetros de un tipo de trabajo, como JSON Schema.Ninguna
POST /api/py/v1/jobs/estimateLo que costaría un trabajo y cuánto tardaría, sin enviarlo.Ninguna
POST /api/py/v1/uploadUn formulario prefirmado para el archivo de entrada de un trabajo.Clave de API o sesión iniciada
POST /api/py/v1/jobsEnviar un trabajo de simulación.Opcional: clave de API
GET /api/py/v1/jobs/{job_id}El estado y el progreso de un trabajo y, una vez terminado, el enlace a su resultado.La identidad que lo envió
GET /api/py/v1/jobsLos trabajos recientes del cliente, de todas las claves de la cuenta.Clave de API o sesión iniciada

Enviar y consultar

Lea el contrato, envíe el trabajo por POST con sus params (y inputFileKeys para un archivo cargado) y reciba 202 con un jobId. Con una clave, un envío se descuenta de la cuota como una llamada.

Consulte GET /api/py/v1/jobs/{jobId} con la misma identidad que lo envió. El estado lleva progress, stage, finishedAt, elapsedSeconds, errorKind y, una vez terminado, una resultUrl prefirmada. GET /api/py/v1/jobs enumera sus trabajos recientes, incluidos los enviados con cualquier clave de la cuenta. La biblioteca de Python consulta como lo hace la aplicación web: job.wait() comprueba de inmediato y luego cada 2 s, 5 s y 15 s mientras el trabajo sigue en curso.

Tipos de trabajo

13 tipos de trabajo. La lista de parámetros de cada uno está en /api/py/v1/jobs/types/{jobType}.

Tipos de trabajo
jobTypeSimuladorCargas
antenna_sim14 parámetrosSimulador de antena de cable (NEC-2)Ninguna
emi_radiated11 parámetrosEstimador de emisiones radiadas EMINinguna
eye_diagram11 parámetrosDiagrama ocular a partir de parámetros SObligatoria, hasta 1 × .s2p / .s4p
fdtd_sparam17 parámetrosSimulador de línea de transmisión FDTDNinguna
filter_monte_carlo15 parámetrosAnálisis Monte Carlo del filtro RFNinguna
impedance_match14 parámetrosSintetizador de adaptación de impedancia de banda anchaOpcional, hasta 2 × .s2p / .s1p
magnetics_optimizer14 parámetrosOptimizador de diseño de magnetismo y transformadoresNinguna
pdn_impedance16 parámetrosAnalizador de impedancia PDN y optimizador de condensadores de desacoplamientoNinguna
radar_detection15 parámetrosRendimiento de detección de radar Monte CarloNinguna
rf_cascade8 parámetrosAnalizador de presupuesto RF CascadeOpcional, hasta 12 × .s2p
smps_control_loop36 parámetrosAnalizador de estabilidad del bucle de control SMPSNinguna
sparam_pipeline3 parámetrosCanalización de análisis de parámetros SObligatoria, hasta 4 × .s1p / .s2p / .s3p / .s4p

Lo que costaría un trabajo

POST /api/py/v1/jobs/estimate recibe el cuerpo que enviaría un envío y responde con el entorno de cómputo en el que se ejecutaría, el tiempo de reloj previsto, si cabe en el presupuesto de ese entorno y, en el entorno de pago, los créditos que registraría. Nunca se cobra, no necesita clave y aplica las mismas comprobaciones que un envío, de modo que rechaza exactamente cuando lo haría un envío. Los créditos se muestran y se registran, pero todavía no se cobran.

Cuando se rechaza una solicitud

Un envío se comprueba contra su contrato antes de poner nada en cola o cobrar nada. Una solicitud fuera de él es un 400 que nombra cada parámetro erróneo, no solo el primero; no se pone nada en cola y no se consume cuota. Las claves de parámetro desconocidas se rechazan en lugar de ignorarse.

Tipos de error

Cada fallo lleva errorKind junto a su mensaje, en un envío rechazado y en un trabajo que falló después de ser aceptado. Es un conjunto cerrado; base su lógica en él y no en la redacción del mensaje, que está escrita para personas y puede cambiar.

Tipos de error
errorKindSignificado
invalid_requestFalta un parámetro, es de un tipo incorrecto, está fuera de rango, no es una de las opciones declaradas o no es un parámetro de este tipo de trabajo. El cuerpo del 400 enumera cada parámetro erróneo.
too_largeLa solicitud está dentro del contrato pero supera lo que puede ejecutar el entorno de este plan. Reduzca el tamaño del problema.
not_availableLa solicitud pide un modo o una función que este plan no incluye. El mensaje nombra lo que sí incluye el plan.
rate_limitedSe agotó un límite de trabajos simultáneos o una cuota mensual. Lleva Retry-After y, si la cuota es mensual, resetAt.
timeoutEl trabajo superó el tiempo máximo de su tipo. No se cobra nada por él.
interruptedLa ejecución se detuvo antes de terminar: se sustituyó un worker o se detuvo una tarea. No se cobra nada por ella.
result_expiredEl trabajo terminó, pero su resultado ya no está guardado. El estado sigue siendo completed y no lleva resultUrl.
transientEl servicio no pudo aceptar ni comprobar la solicitud en ese momento. No se puso nada en cola ni se cobró nada; inténtelo de nuevo.
faultEl servicio falló durante el cálculo. El mensaje indica en qué paso; no se cobra nada por ello.

Límites, duplicados y duración

Concurrencia

3 trabajos en cola o en ejecución a la vez, por cliente. Por encima, la API devuelve 429 con Retry-After y un cuerpo que lleva pending y limit.

Envíos duplicados

Una solicitud idéntica del mismo cliente en menos de 60 s devuelve el trabajo existente, con su estado real, de modo que un trabajo que ya falló vuelve como fallido con su motivo. Envíe Idempotency-Bypass: true para ejecutarlo de nuevo de todos modos.

Cargas

POST /api/py/v1/upload necesita una clave o una sesión iniciada y devuelve un formulario POST prefirmado válido durante 5 minutos. Como máximo 10 MB por archivo, impuesto por el propio formulario. Se aceptan: .s1p .s2p .s3p .s4p .s6p .s8p .snp .csv .txt. El objeto cargado se conserva 24 horas, así que envíe el trabajo que lo usa en el mismo día. 20 formularios por minuto y dirección.

Resultados

Dos plazos distintos. resultExpiresAt indica cuándo desaparece el propio resultado: a los 30 días en el plan Free, se conserva indefinidamente en Pro y API. resultUrlExpiresIn indica cuánto dura la resultUrl prefirmada: 15 minutos. Vuelva a consultar para obtener un enlace nuevo; no guarde la URL en caché. Cuando el resultado ya no existe, el estado sigue siendo completed, con el tipo result_expired y sin URL.

Qué cambió para quien omite un parámetro

Cada tipo de trabajo tiene una sola definición de sus parámetros, y los valores de reserva propios de los manejadores han desaparecido. Si envía todos los campos, nada ha cambiado. Si omite uno de estos, el valor usado es distinto del anterior, y también lo es la respuesta.

Valores predeterminados modificados
jobTypeParámetroAntesAhora
rf_cascadenfSpec_db10 dB6 dB
rf_cascadeinputPower_dbm−60 dBm−70 dBm
rf_cascadebandwidth_hz1 MHz10 MHz
rf_cascadestages"[]"obligatorio — sin valor predeterminado
smps_control_looptoleranceDistributionuniformgaussian
filter_monte_carlofreqCutoff1 MHz1 GHz
impedance_matchfreqStart1 MHz800 MHz
impedance_matchfreqStop100 MHz1,2 GHz
antenna_simfreq (instant solve)145 MHz146 MHz
pdn_impedanceportX_mmcentro de la placa (boardWidth_mm / 2)punto de un tercio (boardWidth_mm / 3)
pdn_impedanceportY_mmcentro de la placa (boardLength_mm / 2)punto de un tercio (boardLength_mm / 3)

Antes, las claves de parámetro desconocidas se descartaban y se respondía con un valor predeterminado. Ahora se rechazan, y el rechazo enumera las claves que acepta el tipo de trabajo.

En los tipos de trabajo que muestrean (filter_monte_carlo y los demás optimizadores), la semilla aleatoria se deriva del cuerpo que envía, de modo que el mismo diseño enviado con claves distintas toma una muestra distinta. Omitir un parámetro y enviarlo con su valor predeterminado es la misma solicitud para el solucionador, pero no el mismo cuerpo; por eso una ejecución desde el formulario web y otra desde esta API pueden diferir dentro del error de muestreo. Envíe randomSeed para fijar exactamente una ejecución.

Cambios de la versión de septiembre de 2026

Comportamiento que cambió para una integración existente. Si envía todos los parámetros y comprueba errorKind en lugar del texto del mensaje, las únicas diferencias que debería ver son estas. Los cambios posteriores, y la fecha en que se anunció cada uno, están en el registro de cambios de la API.

Qué cambió

  • Las claves de parámetro desconocidas y los valores fuera de rango se rechazan al enviar con un 400 que nombra el parámetro erróneo, en lugar de descartarse o recortarse y responderse de todos modos.
  • 11 valores predeterminados de parámetros cambiaron para quien omite el campo; consulte la tabla anterior.
  • Una cuota mensual agotada es ahora HTTP 402 (errorKind rate_limited) con Retry-After y resetAt, nunca un 401 ni un simple 429. Esto abarca tanto el mes de la clave de API como la cuota de los modos de resolución FDTD.
  • Una carga necesita ahora una sesión iniciada o una clave de API; una solicitud anónima recibe un 401 antes de guardar nada. El entorno gratuito anónimo pierde por completo las dos herramientas con archivo de entrada (eye_diagram, sparam_pipeline), ya que ninguna funciona sin un archivo cargado.
  • Un trabajo enviado con una clave de API pertenece ahora a la cuenta propietaria de la clave: se autoriza por propietario, no solo por id de clave o IP de envío, y aparece en la lista de trabajos del panel del propietario.
  • Un resultado terminado lleva ahora warnings y provenance (method, version, seed y las entradas normalizadas realmente usadas) junto a los valores calculados.
  • Todo fallo —un envío rechazado y un trabajo que falló después de ser aceptado— lleva ahora errorKind. Consulte el conjunto cerrado anterior.
  • Un trabajo cuyo worker se cae a mitad de ejecución —sustituido, o con su tarea detenida— se marca ahora como fallido con el tipo interrupted en lugar de quedarse atascado, y se libera cualquier cargo por él.
  • Un resultado se conserva exactamente el tiempo que indica su registro: consulte resultExpiresAt en la tarjeta Resultados anterior.
  • La topología Auto del sintetizador de impedancias compara ahora las cinco topologías y devuelve la de mejor pérdida de retorno en el peor caso; antes construía siempre una red L, tanto en el modo rápido como en la opción avanzada predeterminada.
  • El sintetizador de impedancias respeta ahora maxQ y componentSeries; antes ambos se aceptaban y se ignoraban sin aviso.
  • El ajuste a valores normalizados de la serie E redondea ahora una mantisa superior a unos 9,55 hacia arriba, al primer valor de la década siguiente (9,9 nF → 10 nF), en lugar de hacia abajo. Esto puede cambiar el valor de una pieza en un diseño de adaptación de impedancias o en una ejecución Monte Carlo de un filtro con la misma entrada.
  • Las netlists SPICE exportadas desde la página de impedancias llevan ahora los valores normalizados (ajustados) de los componentes, no los ideales, con una línea de cabecera que nombra la serie.
  • Los diseños de inductores de potencia y de inductores acoplados se dimensionan ahora a partir de la inductancia y la corriente de pico que usted indica, en lugar de derivarse de otras entradas; los transformadores flyback y forward no cambian. Una solicitud cuya corriente de pico indicada no concuerda con el rizado de su inductancia indicada se devuelve con una advertencia ripple_exceeds_peak.
  • Nota de despliegue: el validador de la API se desplegó antes que el worker durante esta implantación, de modo que un trabajo puesto en cola en ese intervalo cuyo cuerpo llevaba una clave mal escrita —antes aceptada sin aviso con un valor predeterminado— se rechazó al enviarse en lugar de ejecutarse hasta el final.