API et MCP
D’un modèle à un dessin, via HTTP
Tout le processus de l’API REST — une session, les fichiers, la configuration, un aperçu, l’export, le téléchargement — et le même programme en cURL, JavaScript, TypeScript et Python.
Avant de commencer
- Un compte Occlusia et une clé d’API, créée sous Clés d’API dans votre compte. Gardez la clé dans une variable d’environnement : les exemples lisent
OCCLUSIA_API_KEY. - Un modèle : un fichier
.skpenregistré par SketchUp 2021 ou ultérieur, un fichier.ifc,.fbxou.occs, 512 Mo au plus. - Votre norme graphique sous forme de configuration, exportée depuis Occlusia Studio avec Export › Configuration (.occc) — ou aucune, et le modèle est dessiné avec les réglages par défaut.
- Des crédits, ou un compte en accès anticipé : l’ouverture du modèle et chaque export coûtent des crédits (API et MCP, Ce que cela coûte).
Les six étapes
- 01
Ouvrir une session
POST /sessionsdémarre un moteur à vous, connecté à votre compte, et répond sonid. Un compte tient 3 sessions à la fois ; une session se termine après 15 minutes d’inactivité, ou après 8 heures. - 02
Envoyer les fichiers
PUT /sessions/{id}/files/{name}, avec le fichier comme corps brut : le modèle, et sa configuration. Un nom est le nom du fichier dans la session, jamais un chemin sur le serveur. - 03
Ouvrir et configurer
La commande
model.openavec{"path": "house.skp"}ouvre le modèle et répond ses vues, danssections.config.setavec{"path": "standard.occc"}applique la configuration ; une configuration qui enfreint le format est refusée en bloc, avec toutes ses erreurs. - 04
Regarder, si besoin
preview.renderrépond une vue sous forme de PNG, de JPEG ou du SVG lui-même, jusqu’à 2048 pixels sur son plus grand côté. Un export n’en a pas besoin. - 05
Exportez
exportavec unformat—svg,dxf,pdf,pngoujpg—, lessectionsà dessiner — le nom d’une vue, ou une liste de noms — etout: un fichier pour un dessin, un dossier pour plusieurs.mergeden fait un seul PDF. - 06
Télécharger, puis terminer la session
GET /sessions/{id}/files/{name}télécharge ce que l’export a écrit ;DELETE /sessions/{id}termine la session, et ses fichiers sont supprimés avec elle.
Le même programme en quatre langages
Un modèle en entrée, sa première vue en sortie au format DXF, et la session terminée même si une étape échoue. Chaque langage s’arrête sur un refus avec son statut et le corps de l’erreur.
KEY=occ_sk_… # Account › API keys
API=https://api.occlusia.app/v1/engine
AUTH="Authorization: Bearer $KEY"
JSON="Content-Type: application/json"
# 1. A session: an engine of your own, with its own files
S=$(curl -s -X POST $API/sessions -H "$AUTH" | jq -r .id)
# 2. The model and your graphic standard
curl -T house.skp $API/sessions/$S/files/house.skp -H "$AUTH"
curl -T standard.occc $API/sessions/$S/files/standard.occc -H "$AUTH"
# 3. Open the model (1 credit), apply the configuration (free)
curl $API/sessions/$S/commands/model.open -H "$AUTH" -H "$JSON" -d '{"path":"house.skp"}'
curl $API/sessions/$S/commands/config.set -H "$AUTH" -H "$JSON" -d '{"path":"standard.occc"}'
# 4. Export one view as DXF (1 credit per drawing)
curl $API/sessions/$S/commands/export -H "$AUTH" -H "$JSON" \
-d '{"format":"dxf","sections":"Section A-A","out":"section-a.dxf"}'
# 5. Download it, then end the session: its files are deleted with it
curl -o section-a.dxf $API/sessions/$S/files/section-a.dxf -H "$AUTH"
curl -X DELETE $API/sessions/$S -H "$AUTH"Les exemples exportent la première vue du modèle. sections.list les liste toutes et dit laquelle est active ; objects.list, annotations.list et levels.list listent le reste du modèle.
Choisir les vues et les formats
"sections": "Section A-A"exporte une vue ;["Section A-A", "Ground floor plan"]plusieurs, chacune dans son propre fichier du dossierout— ou un seul PDF avec"merged": true.pagerègle la page PDF de chaque vue —format,orientation,scale_modefitoucustomavec sonscale_denominator(1:N),margins_mm—,pagesune vue à la fois ;imagerègle la taille ou l’échelle, la résolution, le fond et la qualité d’un PNG ou d’un JPEG.export.configlit la mise en page de chaque vue, etexport.setupla modifie sans exporter, comme le fait la boîte de dialogue d’export.- Un export répond les fichiers qu’il a écrits et ce qu’il a coûté ;
GET /sessions/{id}/filesliste les fichiers de la session.
Mettre en forme sans fichier de configuration
Chaque réglage que contient une configuration peut aussi être fait une commande à la fois : object.set pour un objet, object.apply_preset pour un préréglage de hachure, layers.create et layers.update pour les calques DXF, section.set pour une vue, annotation.set et level.set pour les notes et les cotes de niveau. engine.schema liste chaque réglage et ses valeurs ; config.get répond la configuration entière, à conserver comme fichier .occc.
Longs exports : tâches et événements
Un jeu de PDF peut prendre des minutes. Envoyez sa commande avec Prefer: respond-async : elle répond aussitôt 202 et une tâche, et GET /sessions/{id}/jobs/{job} dit si la tâche est en cours, terminée avec son résultat, ou en échec avec son erreur. GET /sessions/{id}/events diffuse ce que fait le moteur en événements envoyés par le serveur : progress, message, export, job, ended.
Erreurs et nouvelles tentatives
- Chaque refus est de la forme
{"error": {"code", "message"}}, avec un code stable et le statut HTTP qui l’accompagne. 429aveccloud_limitourate_limited, et503avecbusy, portentRetry-After: attendez ce délai, puis renvoyez la même requête.- Envoyez une
Idempotency-Keyavec une commande : une nouvelle tentative après une réponse perdue reçoit la réponse de la première exécution — jamais exécutée ni facturée deux fois. - Chaque réponse porte
X-Request-Id: donnez-le avec toute question sur une requête.
Référence
- GET /v1/engine
- La version et le build du moteur, sans clé.
- GET /v1/engine/openapi.json
- Toute l’API en OpenAPI.
- GET /v1/engine/commands
- Chaque commande, avec ses paramètres en JSON Schema.
Chaque route, limite et code d’erreur est listé dans API et MCP, sous L’API REST.