Skip to content
Sections de la documentation

Tâches de simulation

Les calculateurs répondent en une seule requête. Pas les simulateurs (une résolution pleine onde dure de quelques minutes à quelques heures) : ils sont donc soumis comme tâches, puis interrogés. Chaque type de tâche publie son contrat de paramètres à /api/py/v1/jobs/types : type, unité, plage ou options, valeur par défaut et caractère obligatoire de chaque paramètre, ainsi que les limites de votre offre. Le formulaire du navigateur est construit à partir de ce document et le worker valide d'après lui : lisez-le plutôt que de recopier les noms de paramètres de cette page.

Points de terminaison

Points de terminaison des tâches
Point de terminaisonCe qu'il faitIdentifiant
GET /api/py/v1/jobs/typesChaque type de tâche de simulation, ses offres, sa durée maximale, ses limites et ses fichiers.Aucun
GET /api/py/v1/jobs/types/{job_type}Le contrat de paramètres d'un type de tâche, en JSON Schema.Aucun
POST /api/py/v1/jobs/estimateCe que coûterait une tâche et sa durée, sans la soumettre.Aucun
POST /api/py/v1/uploadUn formulaire présigné pour le fichier d'entrée d'une tâche.Clé d'API ou session connectée
POST /api/py/v1/jobsSoumettre une tâche de simulation.Facultatif : clé d'API
GET /api/py/v1/jobs/{job_id}Le statut et la progression d'une tâche et, une fois terminée, le lien vers son résultat.L'identité qui l'a soumise
GET /api/py/v1/jobsLes tâches récentes de l'appelant, de toutes les clés du compte.Clé d'API ou session connectée

Soumettre et interroger

Lisez le contrat, envoyez la tâche en POST avec ses params (et inputFileKeys pour un fichier envoyé), et recevez 202 avec un jobId. Avec une clé, une soumission est décomptée du quota comme un appel.

Interrogez GET /api/py/v1/jobs/{jobId} avec la même identité que celle qui l'a soumise. Le statut porte progress, stage, finishedAt, elapsedSeconds, errorKind et, une fois la tâche terminée, une resultUrl présignée. GET /api/py/v1/jobs liste vos tâches récentes, y compris celles soumises avec n'importe quelle clé du compte. La bibliothèque Python interroge comme l'application web : job.wait() vérifie immédiatement, puis toutes les 2 s, 5 s et 15 s à mesure que la tâche se prolonge.

Types de tâches

13 types de tâches. La liste des paramètres de chacun se trouve à /api/py/v1/jobs/types/{jobType}.

Types de tâches
jobTypeSimulateurFichiers
antenna_sim14 paramètresSimulateur d'antenne filaire (NEC-2)Aucun
emi_radiated11 paramètresEstimateur d'émissions rayonnées EMIAucun
eye_diagram11 paramètresSchéma oculaire à partir de S-ParametersObligatoire, jusqu'à 1 × .s2p / .s4p
fdtd_sparam17 paramètresSimulateur de ligne de transmission FDTDAucun
filter_monte_carlo15 paramètresAnalyse Monte Carlo du filtre RFAucun
impedance_match14 paramètresSynthétiseur d'adaptation d'impédance haut débitFacultatif, jusqu'à 2 × .s2p / .s1p
magnetics_optimizer14 paramètresOptimiseur de conception des composants magnétiques et des transformateursAucun
pdn_impedance16 paramètresAnalyseur d'impédance PDN et optimiseur de condensateur de découplageAucun
radar_detection15 paramètresPerformances de détection radar Monte CarloAucun
rf_cascade8 paramètresAnalyseur de budget RF CascadeFacultatif, jusqu'à 12 × .s2p
smps_control_loop36 paramètresAnalyseur de stabilité de boucle de contrôle SMPSAucun
sparam_pipeline3 paramètresPipeline d'analyse des paramètres SObligatoire, jusqu'à 4 × .s1p / .s2p / .s3p / .s4p

Ce que coûterait une tâche

POST /api/py/v1/jobs/estimate reçoit le corps qu'une soumission enverrait et indique l'environnement de calcul dans lequel la tâche tournerait, la durée prévue, si elle tient dans le budget de cet environnement et, dans l'environnement payant, les crédits qu'elle enregistrerait. L'estimation n'est jamais facturée, ne demande aucune clé et passe les mêmes vérifications qu'une soumission : elle refuse donc exactement quand une soumission serait refusée. Les crédits sont affichés et enregistrés, mais pas encore facturés.

Quand une requête est refusée

Une soumission est vérifiée par rapport à son contrat avant toute mise en file d'attente ou facturation. Une requête hors contrat reçoit un 400 qui nomme chaque paramètre en cause, pas seulement le premier rencontré ; rien n'est mis en file d'attente et aucun quota n'est consommé. Les clés de paramètre inconnues sont refusées plutôt qu'ignorées.

Types d'erreur

Chaque échec porte errorKind à côté de son message, sur une soumission refusée comme sur une tâche qui a échoué après avoir été acceptée. C'est un ensemble fermé ; basez votre logique sur lui plutôt que sur la formulation du message, écrite pour des personnes et susceptible de changer.

Types d'erreur
errorKindSignification
invalid_requestUn paramètre manque, est du mauvais type, sort de sa plage, ne figure pas parmi les options déclarées ou n'est pas un paramètre de ce type de tâche. Le corps du 400 liste chaque paramètre en cause.
too_largeLa requête respecte le contrat mais dépasse ce que l'environnement de calcul de cette offre peut traiter. Réduisez la taille du problème.
not_availableLa requête demande un mode ou une fonction que cette offre ne comprend pas. Le message nomme ce que l'offre comprend.
rate_limitedUne limite de tâches simultanées ou un quota mensuel est épuisé. Porte Retry-After et, pour un quota mensuel, resetAt.
timeoutLa tâche a dépassé la durée maximale de son type. Elle n'est pas facturée.
interruptedL'exécution s'est arrêtée avant la fin : un worker a été remplacé ou une tâche a été arrêtée. Elle n'est pas facturée.
result_expiredLa tâche s'est terminée, mais son résultat n'est plus stocké. Le statut reste completed et ne porte pas de resultUrl.
transientLe service n'a pas pu accepter ou vérifier la requête à ce moment-là. Rien n'a été mis en file d'attente ni facturé ; réessayez.
faultLe service a échoué pendant le calcul. Le message indique l'étape ; rien n'est facturé.

Limites, doublons et durées de vie

Concurrence

3 tâches en file d'attente ou en cours à la fois, par appelant. Au-delà, l'API renvoie 429 avec Retry-After et un corps portant pending et limit.

Soumissions en double

Une requête identique du même appelant dans un délai de 60 s renvoie la tâche existante, avec son statut réel : une tâche qui a déjà échoué revient donc en échec, avec sa raison. Envoyez Idempotency-Bypass: true pour l'exécuter à nouveau malgré tout.

Fichiers

POST /api/py/v1/upload demande une clé ou une session connectée et renvoie un formulaire POST présigné valable 5 minutes. Au plus 10 MB par fichier, imposés par le formulaire lui-même. Formats acceptés : .s1p .s2p .s3p .s4p .s6p .s8p .snp .csv .txt. L'objet envoyé est conservé 24 heures : soumettez la tâche qui l'utilise dans la journée. 20 formulaires par minute et par adresse.

Résultats

Deux échéances distinctes. resultExpiresAt indique quand le résultat lui-même disparaît : après 30 jours avec l'offre Free, conservé sans limite de durée avec Pro et API. resultUrlExpiresIn indique combien de temps dure la resultUrl présignée : 15 minutes. Interrogez à nouveau pour obtenir un lien neuf ; ne mettez pas l'URL en cache. Une fois le résultat supprimé, le statut reste completed, avec le type result_expired et sans URL.

Ce qui a changé pour les appelants qui omettent un paramètre

Chaque type de tâche a une seule définition de ses paramètres, et les valeurs de repli propres aux gestionnaires ont disparu. Si vous envoyez tous les champs, rien n'a changé. Si vous omettez l'un de ceux-ci, la valeur utilisée n'est plus la même qu'avant, et la réponse non plus.

Valeurs par défaut modifiées
jobTypeParamètreAvantDésormais
rf_cascadenfSpec_db10 dB6 dB
rf_cascadeinputPower_dbm−60 dBm−70 dBm
rf_cascadebandwidth_hz1 MHz10 MHz
rf_cascadestages"[]"obligatoire — pas de valeur par défaut
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_mmcentre de la carte (boardWidth_mm / 2)point au tiers (boardWidth_mm / 3)
pdn_impedanceportY_mmcentre de la carte (boardLength_mm / 2)point au tiers (boardLength_mm / 3)

Les clés de paramètre inconnues étaient auparavant ignorées et la réponse utilisait une valeur par défaut. Elles sont désormais refusées, et le refus liste les clés que le type de tâche accepte.

Pour les types de tâches qui échantillonnent (filter_monte_carlo et les autres optimiseurs), la graine aléatoire est dérivée du corps que vous soumettez : la même conception envoyée avec des clés différentes tire un échantillon différent. Omettre un paramètre et l'envoyer avec sa valeur par défaut constituent la même requête pour le solveur, mais pas le même corps ; c'est pourquoi une exécution depuis le formulaire web et une exécution via cette API peuvent différer dans les limites de l'erreur d'échantillonnage. Envoyez randomSeed pour figer exactement une exécution.

Changements de la version de septembre 2026

Comportements qui ont changé pour une intégration existante. Si vous envoyez tous les paramètres et vérifiez errorKind plutôt que le texte du message, les seules différences que vous devriez constater sont celles-ci. Les changements ultérieurs, et la date d'annonce de chacun, figurent dans le journal des modifications de l'API.

Ce qui a changé

  • Les clés de paramètre inconnues et les valeurs hors plage sont refusées à la soumission par un 400 qui nomme le paramètre en cause, au lieu d'être ignorées ou bornées et traitées malgré tout.
  • 11 valeurs par défaut de paramètres ont changé pour les appelants qui omettent le champ ; voir le tableau ci-dessus.
  • Un quota mensuel épuisé donne désormais HTTP 402 (errorKind rate_limited) avec Retry-After et resetAt, jamais un 401 ni un simple 429. Cela couvre à la fois le mois de la clé d'API et le quota des modes de résolution FDTD.
  • Un envoi de fichier exige désormais une session connectée ou une clé d'API ; une requête anonyme reçoit un 401 avant tout stockage. L'environnement gratuit anonyme perd entièrement les deux outils à fichier d'entrée (eye_diagram, sparam_pipeline), car aucun ne fonctionne sans fichier envoyé.
  • Une tâche soumise avec une clé d'API appartient désormais au compte propriétaire de la clé : elle est autorisée d'après ce propriétaire, et pas seulement d'après l'identifiant de clé ou l'IP de soumission, et elle apparaît dans la liste des tâches du tableau de bord du propriétaire.
  • Un résultat terminé porte désormais warnings et provenance (method, version, seed et les entrées normalisées réellement utilisées) à côté des valeurs calculées.
  • Chaque échec — une soumission refusée comme une tâche qui a échoué après avoir été acceptée — porte désormais errorKind. Voir l'ensemble fermé ci-dessus.
  • Une tâche dont le worker tombe en cours d'exécution — remplacé, ou sa tâche arrêtée — est désormais marquée en échec avec le type interrupted au lieu de rester bloquée, et toute facturation la concernant est annulée.
  • Un résultat est conservé exactement aussi longtemps que l'indique son enregistrement : voir resultExpiresAt dans la carte Résultats ci-dessus.
  • La topologie Auto du synthétiseur d'impédance compare désormais les cinq topologies et renvoie celle qui a le meilleur affaiblissement de réflexion dans le pire cas — auparavant, elle construisait toujours un réseau en L, en mode rapide comme avec le réglage avancé par défaut.
  • Le synthétiseur d'impédance respecte désormais maxQ et componentSeries ; les deux étaient auparavant acceptés et ignorés sans avertissement.
  • L'alignement sur les valeurs normalisées de la série E arrondit désormais une mantisse supérieure à environ 9,55 vers le haut, à la première valeur de la décade suivante (9,9 nF → 10 nF), au lieu de l'arrondir vers le bas. Cela peut changer la valeur d'un composant dans une conception d'adaptation d'impédance ou dans une exécution Monte Carlo de filtre pour la même entrée.
  • Les netlists SPICE exportées depuis la page d'impédance portent désormais les valeurs normalisées (alignées) des composants, et non les valeurs idéales, avec une ligne d'en-tête qui nomme la série.
  • Les conceptions d'inductances de puissance et d'inductances couplées sont désormais dimensionnées à partir de l'inductance et du courant crête que vous indiquez, au lieu d'être déduites d'autres entrées ; les transformateurs flyback et forward ne changent pas. Une requête dont le courant crête indiqué ne concorde pas avec l'ondulation de l'inductance indiquée revient avec un avertissement ripple_exceeds_peak.
  • Note de déploiement : le validateur de l'API a été déployé avant le worker pendant ce déploiement ; une tâche mise en file d'attente dans cet intervalle dont le corps portait une clé mal orthographiée — auparavant acceptée sans avertissement avec une valeur par défaut — a donc été refusée à la soumission au lieu d'être exécutée jusqu'au bout.