Start a draft from a source or a preset
POST/api/public/v1/aip/drafts beta
From a source: the draft is created and its read_ground job queued; poll job_id. From a built-in preset: the chosen rules arrive grounded with their stored cases, no model is called and no job is queued (job_id is null), AI authoring on or off. From an organization preset (a PRS- key): the chosen sentences are copied into the draft and grounded in the authoring zone by a read_ground job with READ skipped; poll job_id. zone_id is the authoring zone. 409 AI_NOT_ENABLED for a source or organization preset draft when AI authoring is not enabled; 409 PRESET_CHANGED when a chosen rule is no longer in the preset.
curl --fail-with-body -X POST 'https://app.openlatch.ai/api/public/v1/aip/drafts' \ -H "Authorization: Bearer $OPENLATCH_API_KEY" \ -H 'Content-Type: application/json' \ -d '{"preset":{"key":"examples","intents":["fetch-allowlist","block-web-search","block-pastebin","block-sudo","block-force-push","block-rm-rf"]},"zone_id":"<zone_id>"}'import jsonimport osimport urllib.request
body = '{"preset":{"key":"examples","intents":["fetch-allowlist","block-web-search","block-pastebin","block-sudo","block-force-push","block-rm-rf"]},"zone_id":"<zone_id>"}'request = urllib.request.Request( 'https://app.openlatch.ai/api/public/v1/aip/drafts', method='POST', data=body.encode(), headers={ 'Authorization': 'Bearer ' + os.environ['OPENLATCH_API_KEY'], 'Content-Type': 'application/json', },)with urllib.request.urlopen(request) as response: text = response.read().decode() print(json.dumps(json.loads(text), indent=2) if text else response.status)#!/usr/bin/env bashset -euo pipefail
curl -sS --fail-with-body -X POST 'https://app.openlatch.ai/api/public/v1/aip/drafts' \ -H "Authorization: Bearer $OPENLATCH_API_KEY" \ -H 'Content-Type: application/json' \ -d '{"preset":{"key":"examples","intents":["fetch-allowlist","block-web-search","block-pastebin","block-sudo","block-force-push","block-rm-rf"]},"zone_id":"<zone_id>"}' | jq .$headers = @{ Authorization = "Bearer $env:OPENLATCH_API_KEY"}$body = '{"preset":{"key":"examples","intents":["fetch-allowlist","block-web-search","block-pastebin","block-sudo","block-force-push","block-rm-rf"]},"zone_id":"<zone_id>"}'Invoke-RestMethod -Method POST -Uri 'https://app.openlatch.ai/api/public/v1/aip/drafts' -Headers $headers -ContentType 'application/json; charset=utf-8' -Body $body | ConvertTo-Json -Depth 20Autorisation
Section intitulée « Autorisation »| Rôle dans l’organisation | Ce point de terminaison |
|---|---|
owner | Autorisé |
admin | Autorisé |
editor | Autorisé |
viewer | Non autorisé |
Une clé porte le rôle que son propriétaire détient dans l’organisation. Voir Authentification.
Portée de clé d’API : aip:write
Paramètres d’en-tête
Section intitulée « Paramètres d’en-tête »| Paramètre | Type | Description |
|---|---|---|
Idempotency-Key | string or null | Optional. Makes this request safe to retry. Depending on the request, the same key with the same request either joins the job the first one queued (409 JOB_ALREADY_EXISTS, the job id in details) or replays the first answer (Idempotent-Replayed: true; 409 IDEMPOTENCY_IN_PROGRESS while it runs). The same key with another request is 422 IDEMPOTENCY_KEY_REUSED. |
Corps de la requête
Section intitulée « Corps de la requête »| Champ | Type | Description |
|---|---|---|
preset | object or null | |
preset.intents | array of string | Obligatoire. |
preset.key | string | Obligatoire. |
source_id | string (uuid) or null | |
zone_id | string (uuid) or null |
- 202 Accepted — l’appel a réussi.
- 400 Bad Request —
BAD_REQUEST - 401 Unauthorized —
UNAUTHORIZED - 402 Payment Required —
license_expired - 403 Forbidden —
FEATURE_DISABLED,FORBIDDEN,INSUFFICIENT_SCOPE - 404 Not Found —
NOT_FOUND - 409 Conflict —
AI_NOT_ENABLED,CONFLICT,IDEMPOTENCY_IN_PROGRESS,JOB_ALREADY_EXISTS,PRESET_CHANGED - 422 Unprocessable Content —
IDEMPOTENCY_KEY_REUSED,INVALID_BODY,INVALID_ID,VALIDATION_ERROR,ZONE_UNAVAILABLE - 429 Too Many Requests —
TOO_MANY_REQUESTS - 500 Internal Server Error —
INTERNAL_SERVER_ERROR,tenant_isolation_violation - 503 Service Unavailable —
FEATURE_STATE_UNAVAILABLE,SERVICE_UNAVAILABLE
Champs de la réponse
Section intitulée « Champs de la réponse »| Champ | Type | Description |
|---|---|---|
data | object | Obligatoire. `202 — the draft exists; job_id is its grounding job, null` for a built-in preset draft (it arrives
grounded, with its stored cases). |
data.job_id | string or null | |
data.public_id | string | Obligatoire. |
Exemple de réponse
Section intitulée « Exemple de réponse »{ "data": { "job_id": "3f6c1a2e-8b4d-4c1f-9a7e-0d5b2c8e4f10", "public_id": "3f6c1a2e-8b4d-4c1f-9a7e-0d5b2c8e4f10" }}