Passa al contenuto principale

Endpoint: Agenti, Chat e Conversazioni

Riferimento degli endpoint per la gestione degli agenti conversazionali, l'invio di messaggi (sincrono o in streaming), lo storico delle conversazioni, i server MCP associabili agli agenti, le valutazioni e i template di prompt riutilizzabili.

Tutte le richieste utilizzano l'URL base https://ai.askme.it/api/v2 e gli header descritti in Autenticazione (X-Api-Key, X-Source-App, X-External-Id opzionale). Le liste seguono la paginazione offset/limit descritta in Panoramica.

1. Agenti

Gestione degli agenti AI: configurazione, knowledge base associate, server MCP, prompt, modelli e politiche RAG.

POST /agents

Crea un nuovo agente nel tenant.

Attributi richiesta

CampoInTipoObbligatorioDefaultDescrizione
namebodystring (1–255)Nome visualizzato dell'agente.
descriptionbodystringNoDescrizione libera.
model_providerbodystringNoopenaiProvider del modello. Valori: openai, anthropic, google, mistral, ollama, local.
model_namebodystring (max 100)Nogpt-4o-miniNome del modello da usare (es. gpt-4o, claude-sonnet-4-5-20250929).
system_promptbodystringNoPrompt di sistema dell'agente. Supporta variabili {{nome_var}}.
temperaturebodyfloat (0.0–2.0)No0.7Temperatura di campionamento.
max_tokensbodyint (1–128000)No2048Token massimi nella risposta.
reasoning_effortbodystringNoSolo per modelli con reasoning. Valori: minimal, low, medium, high.
tools_configbodyobjectNoConfigurazione tool (function calling, structured output).
rag_configbodyobjectNoConfigurazione RAG. Campi: enabled, knowledge_base_ids (array di id KB, come stringhe), top_k, score_threshold, rerank_enabled, hybrid_search, hybrid_alpha, query_rewrite_enabled, query_rewrite_mode (none/simple/multi), rewrite_instructions, crag_enabled, crag_max_loops, crag_quality_threshold, no_context_message. Chiavi non riconosciute vengono memorizzate ma ignorate: un nome errato non produce errore, l'agente usa il valore di default.
handoff_configbodyobjectNoConfigurazione del passaggio a operatore umano (regole di confidenza, intent).
output_schemabodyobject (JSON Schema)NoSchema JSON forzato sulla risposta del modello (structured output).
mcp_server_idsbodyint[]NonullID dei server MCP da associare. null o omesso = nessuna associazione; [] = svuota.
parent_idbodyintNoAgente genitore: il prompt di sistema effettivo è la concatenazione lungo la catena (max 10 livelli).
is_temporarybodyboolNofalseSe true, l'agente è nascosto dalle liste standard.

Esempio richiesta

curl -X POST "https://ai.askme.it/api/v2/agents" \
-H "X-Api-Key: amai_xxxxxxxxxxxxxxxx" \
-H "X-Source-App: api_direct" \
-H "Content-Type: application/json" \
-d '{
"name": "Assistente customer care",
"description": "Risponde alle domande dei clienti su spedizioni e resi.",
"model_provider": "openai",
"model_name": "gpt-4o-mini",
"system_prompt": "Sei un assistente cortese di supporto clienti.",
"temperature": 0.4,
"max_tokens": 1024,
"mcp_server_ids": [12]
}'

Esempio risposta (201 Created)

{
"id": 87,
"tenant_id": "acme",
"name": "Assistente customer care",
"description": "Risponde alle domande dei clienti su spedizioni e resi.",
"model_provider": "openai",
"model_name": "gpt-4o-mini",
"system_prompt": "Sei un assistente cortese di supporto clienti.",
"temperature": 0.4,
"max_tokens": 1024,
"tools_config": null,
"rag_config": null,
"handoff_config": null,
"reasoning_effort": null,
"mcp_server_ids": [12],
"parent_id": null,
"is_temporary": false,
"output_schema": null,
"status": "draft",
"version": 1,
"created_by": "user-uuid",
"created_at": "2026-04-30T09:12:33Z",
"updated_at": "2026-04-30T09:12:33Z"
}

Errori specifici

CodiceSignificato
400Nome vuoto, valore di model_provider non ammesso, oppure mcp_server_ids contiene ID non appartenenti al tenant.
429Quota agents esaurita per il piano corrente.

GET /agents

Elenca gli agenti del tenant in modo paginato.

Attributi richiesta

CampoInTipoObbligatorioDefaultDescrizione
offsetqueryint (≥0)No0Offset di paginazione.
limitqueryint (1–100)No50Numero massimo di elementi.
searchquerystringNoRicerca testuale su nome e descrizione.
statusquerystringNoFiltro stato. Valori: draft, active, paused, archived.
model_namequerystringNoFiltro per modello esatto.
include_temporaryqueryboolNofalseInclude agenti temporanei (creati da analisi PDF chat-with-doc).
sort_byquerystringNoCampo di ordinamento (name, created_at, updated_at).
orderquerystringNodescDirezione: asc o desc.

Esempio richiesta

curl -G "https://ai.askme.it/api/v2/agents" \
-H "X-Api-Key: amai_xxxxxxxxxxxxxxxx" \
-H "X-Source-App: api_direct" \
--data-urlencode "limit=20" \
--data-urlencode "status=active"

Esempio risposta (200 OK)

{
"items": [
{
"id": 87,
"tenant_id": "acme",
"name": "Assistente customer care",
"model_provider": "openai",
"model_name": "gpt-4o-mini",
"status": "active",
"version": 3,
"mcp_server_ids": [12],
"created_at": "2026-04-30T09:12:33Z",
"updated_at": "2026-04-30T11:02:00Z"
}
],
"total": 1,
"offset": 0,
"limit": 20
}

GET /agents/{agent_id}

Recupera un agente specifico.

Attributi richiesta

CampoInTipoObbligatorioDescrizione
agent_idpathintIdentificativo dell'agente.

Esempio richiesta

curl "https://ai.askme.it/api/v2/agents/87" \
-H "X-Api-Key: amai_xxxxxxxxxxxxxxxx" \
-H "X-Source-App: api_direct"

Esempio risposta (200 OK): stesso schema di POST /agents.

Errori specifici

CodiceSignificato
404Agente non trovato o appartenente ad altro tenant.

PUT /agents/{agent_id}

Aggiorna l'agente. Tutti i campi del body sono opzionali; solo i campi forniti vengono modificati. La modifica incrementa version e crea uno snapshot.

Attributi richiesta

Stessi campi di POST /agents, tutti opzionali. In più:

CampoInTipoDescrizione
statusbodystringStato dell'agente. Valori: draft, active, paused, archived.
mcp_server_idsbodyint[] | nullnull = mantiene attuali; [] = rimuove tutte; [n,m] = sostituisce esattamente con questi (semantica idempotente: il backend calcola il diff e applica add/remove).

Esempio richiesta

curl -X PUT "https://ai.askme.it/api/v2/agents/87" \
-H "X-Api-Key: amai_xxxxxxxxxxxxxxxx" \
-H "X-Source-App: api_direct" \
-H "Content-Type: application/json" \
-d '{
"status": "active",
"temperature": 0.2,
"mcp_server_ids": [12, 15]
}'

DELETE /agents/{agent_id}

Elimina l'agente. La quota agents viene rilasciata. Risposta 204 No Content.


POST /agents/{agent_id}/rollback/{version_number}

Riporta la configurazione dell'agente a una versione precedente. Crea automaticamente una nuova entry di versione con changelog "Rollback to version N".

Attributi richiesta

CampoInTipoObbligatorioDescrizione
agent_idpathintAgente target.
version_numberpathintNumero di versione da ripristinare.

Errori specifici

CodiceSignificato
404Versione inesistente per l'agente.

GET /agents/{agent_id}/versions

Elenca le versioni archiviate della configurazione dell'agente.


Associazioni MCP per agente

Oltre al campo mcp_server_ids nei POST/PUT /agents, sono disponibili endpoint dedicati per gestire singole associazioni:

  • POST /agents/{agent_id}/mcp-servers — body { "mcp_server_id": 12 }. Risponde 201 o 409 se già associato.
  • GET /agents/{agent_id}/mcp-servers — elenco completo dei server associati con il dettaglio.
  • DELETE /agents/{agent_id}/mcp-servers/{mcp_server_id} — rimuove l'associazione (204 o 404).

2. Chat

Endpoint principale per inviare un messaggio a un agente o a un modello LLM diretto. Supporta streaming Server-Sent Events.

POST /chat

Invia un messaggio. Due modalità:

  • Modalità agente: passa agent_id. Modello, system prompt, RAG e MCP vengono dedotti dalla configurazione dell'agente.
  • Modalità diretta: ometti agent_id e fornisci model + system_prompt espliciti.

Attributi richiesta

CampoInTipoObbligatorioDefaultDescrizione
messagebodystring (1–32000)Testo del messaggio utente.
agent_idbodyint | nullNo*nullID dell'agente. *Se omesso, sono richiesti model e system_prompt.
conversation_idbodyintNoConversazione esistente; se assente ne viene creata una nuova.
external_conversation_idbodystringNoID conversazione del sistema chiamante (alternativa a conversation_id).
streambodyboolNofalseSe true la risposta è uno stream SSE.
modelbodystringNo*Solo modalità diretta (es. gpt-4o-mini).
system_promptbodystringNo*Solo modalità diretta.
temperaturebodyfloatNo(default agente)Override della temperatura.
max_tokensbodyintNo(default agente)Override del limite token.
filesbodyarrayNoAllegati: [{ filename, content_type, data }] con data base64.
include_sourcesbodyboolNotrueSe true la risposta include rag_sources.
include_hidden_sourcesbodyboolNofalseSe true include anche fonti con is_visible=false (usate ma normalmente non citate).
template_varsbodyobject (string→string)NoVariabili sostituite nel system prompt (es. {{nome_cliente}}).
classification_intentsbodyarrayNoIntent custom per la classificazione: [{ name, description }].
force_handoffbodyboolNofalseForza il passaggio a operatore umano.
skip_handoffbodyboolNofalseDisabilita la valutazione handoff per questo messaggio.
skip_scope_checkbodyboolNofalseDisabilita il controllo "fuori scope" per questo messaggio.
response_formatbodystringNomarkdownmarkdown o html.
llm_response_formatbodyobjectNoSchema JSON per structured output one-shot.
metadatabodyobjectNoMetadati liberi propagati nel record di costo.
mcp_authbodyobject (string→string)NoToken utente per MCP che richiedono auth (passati come header per quel MCP).
tool_approvalbodyobjectNoRisposta a un'approvazione di tool: { approved: bool, pending_message_id: int }.
external_idbodystring (max 255)NoOverride dell'header X-External-Id a livello di richiesta.
source_appbodystring (max 50)NoOverride dell'header X-Source-App a livello di richiesta.
X-External-IdheaderstringNoID esterno per il record di costo e attribuzione.

Esempio richiesta (non-streaming, cURL)

curl -X POST "https://ai.askme.it/api/v2/chat" \
-H "X-Api-Key: amai_xxxxxxxxxxxxxxxx" \
-H "X-Source-App: api_direct" \
-H "X-External-Id: ordine-7728" \
-H "Content-Type: application/json" \
-d '{
"agent_id": 87,
"message": "Quali sono i tempi medi di consegna in Italia?",
"stream": false
}'

Esempio richiesta (Python, httpx)

import os
import httpx

client = httpx.Client(
base_url=os.environ["ASKMEAI_HOST"] + "/api/v2",
headers={
"X-Api-Key": os.environ["ASKMEAI_API_KEY"],
"X-Source-App": os.environ.get("ASKMEAI_SOURCE_APP", "api_direct"),
},
timeout=30.0,
)

resp = client.post("/chat", json={
"agent_id": 12,
"message": "Quali sono i tempi medi di consegna?",
"stream": False,
}, headers={"X-External-Id": "ticket-9281"})
resp.raise_for_status()
data = resp.json()
print(data["message"]["content"])

Esempio risposta (200 OK, non-streaming)

{
"message_id": 5512,
"conversation_id": 4421,
"external_conversation_id": null,
"content": "I tempi medi di consegna in Italia sono compresi tra 24 e 72 ore lavorative ...",
"thinking_content": null,
"content_format": "markdown",
"role": "assistant",
"model_used": "gpt-4o-mini",
"tokens_input": 412,
"tokens_output": 88,
"latency_ms": 1430,
"rag_sources": [
{
"document_id": "117",
"chunk_id": "chunk-117-3",
"title": "Politica spedizioni",
"content_preview": "Le spedizioni standard partono entro 24 ore lavorative ...",
"relevance_score": 0.83,
"metadata": { "page": 2 },
"is_visible": true
}
],
"confidence_score": 0.91,
"needs_review": false,
"handoff_requested": false,
"handoff_reason": null,
"intent": "delivery_info",
"sentiment": "neutral",
"is_in_scope": true,
"tool_calls_count": 0,
"tools_used": [],
"pending_tool_approval": false,
"created_at": "2026-04-30T11:22:14Z"
}

Risposta in streaming (SSE)

Quando stream: true, il server risponde con Content-Type: text/event-stream. Ogni evento ha la forma:

data: {"type": "...", ...}\n\n

Tipi di evento emessi (campo type):

TipoDescrizioneCampi principali
rag_thinkingStatus testuale durante la fase RAG (es. "ricerca documenti…").content
thinkingToken del ragionamento interno (per modelli con reasoning).content
delta / contentToken incrementale della risposta.content
sourcesLista delle fonti RAG individuate.sources[]
tool_callIl modello sta invocando un tool MCP.tool_name, tool_args
tool_approval_requiredTool che richiede approvazione esplicita.pending_tool_calls[], pending_message_id
confidenceConfidence score consolidato.confidence_score, confidence_signals, needs_review
handoff_decisionDecisione di handoff verso operatore umano.handoff_requested, handoff_reason, handoff_trigger
usageBilancio finale token + metadati turn.usage.{message_id,conversation_id,model_used,tokens_input,tokens_output,latency_ms,…}
doneMarker di fine stream.
errorErrore in corso di stream.error, code

Esempio di stream (estratto):

data: {"type":"rag_thinking","content":"Cerco nelle fonti..."}

data: {"type":"sources","sources":[{"document_id":"117","relevance_score":0.83,...}]}

data: {"type":"delta","content":"I tempi"}

data: {"type":"delta","content":" medi di consegna"}

data: {"type":"confidence","confidence_score":0.91,"needs_review":false}

data: {"type":"usage","usage":{"message_id":5512,"conversation_id":4421,"model_used":"gpt-4o-mini","tokens_input":412,"tokens_output":88,"latency_ms":1430}}

data: {"type":"done"}

Esempio Python (httpx, consumo dello stream)

import json, os, httpx

with httpx.stream(
"POST",
os.environ["ASKMEAI_HOST"] + "/api/v2/chat",
headers={
"X-Api-Key": os.environ["ASKMEAI_API_KEY"],
"X-Source-App": "api_direct",
"Content-Type": "application/json",
"Accept": "text/event-stream",
},
json={"agent_id": 12, "message": "Riassumi la policy resi", "stream": True},
timeout=None,
) as resp:
resp.raise_for_status()
for raw in resp.iter_lines():
if not raw or not raw.startswith("data: "):
continue
evt = json.loads(raw[6:])
if evt.get("type") == "delta":
print(evt["content"], end="", flush=True)
elif evt.get("type") == "done":
print()
break

Errori specifici

CodiceSignificato
400agent_id mancante senza model/system_prompt; message vuoto o oltre 32000 caratteri.
404Agente o conversazione non trovati.
429Quota messaggi del piano esaurita.

3. Conversazioni

Storico, lookup tramite ID esterno, feedback sui messaggi.

GET /conversations

Elenca le conversazioni dell'utente corrente.

Attributi richiesta

CampoInTipoDefaultDescrizione
offsetqueryint0Paginazione.
limitqueryint (1–100)50Page size.

Esempio risposta (200 OK)

{
"items": [
{
"id": 4421,
"tenant_id": "acme",
"agent_id": 87,
"agent_name": "Assistente customer care",
"user_id": "user-uuid",
"title": "Domanda spedizioni",
"status": "active",
"message_count": 6,
"external_id": "ordine-7728",
"created_at": "2026-04-30T11:20:00Z",
"updated_at": "2026-04-30T11:24:10Z"
}
],
"total": 1,
"offset": 0,
"limit": 50
}

GET /conversations/monitoring

Vista monitoring: tutte le conversazioni del tenant (richiede permessi adeguati). Supporta filtri estesi.

Attributi richiesta

CampoInTipoDescrizione
offset, limitqueryintPaginazione standard.
statusquerystringFiltra per stato (active, closed, archived).
agent_idqueryintFiltra per agente.
date_fromquerydatetime ISO 8601Dalla data inclusa.
date_toquerydatetime ISO 8601Fino alla data inclusa.

GET /conversations/{conversation_id}

Dettaglio di una conversazione (senza messaggi).

Esempio risposta (200 OK)

{
"id": 4421,
"tenant_id": "acme",
"agent_id": 87,
"user_id": "user-uuid",
"title": "Domanda spedizioni",
"status": "active",
"metadata": null,
"external_id": "ordine-7728",
"insights": null,
"created_at": "2026-04-30T11:20:00Z",
"updated_at": "2026-04-30T11:24:10Z"
}

GET /conversations/by-external-id/{external_id}

Recupera la conversazione tramite l'ID esterno fornito al primo POST /chat. Utile per riprendere una sessione lato backend chiamante senza dover mantenere traccia dei conversation_id interni.

Attributi richiesta

CampoInTipoDescrizione
external_idpathstringID opaco fornito alla creazione.
agent_idqueryint(opzionale) limita la ricerca a un singolo agente, utile se lo stesso external_id è stato usato con più agenti.

Esempio richiesta

curl "https://ai.askme.it/api/v2/conversations/by-external-id/ordine-7728" \
-H "X-Api-Key: amai_xxxxxxxxxxxxxxxx" \
-H "X-Source-App: api_direct"

Per agganciare i messaggi successivi alla stessa conversazione, va passato conversation_id nel body del POST /chat.

Errori specifici

CodiceSignificato
404Nessuna conversazione corrisponde all'external_id per il tenant.

GET /conversations/{conversation_id}/messages

Recupera i messaggi della conversazione.

Attributi richiesta

CampoInTipoDefaultDescrizione
conversation_idpathintConversazione target.
offsetqueryint0Paginazione.
limitqueryint (1–500)100Page size.

Esempio risposta (200 OK)

{
"items": [
{
"id": 5511,
"conversation_id": 4421,
"role": "user",
"content": "Quali sono i tempi medi di consegna in Italia?",
"created_at": "2026-04-30T11:22:00Z"
},
{
"id": 5512,
"conversation_id": 4421,
"role": "assistant",
"content": "I tempi medi di consegna ...",
"tokens_input": 412,
"tokens_output": 88,
"model_used": "gpt-4o-mini",
"created_at": "2026-04-30T11:22:14Z"
}
],
"total": 2,
"offset": 0,
"limit": 100
}

PUT /conversations/{conversation_id}

Aggiorna titolo o stato della conversazione (anche PATCH).

Attributi richiesta

CampoInTipoDescrizione
titlebodystring (max 500)Nuovo titolo.
statusbodystringactive, closed o archived.

DELETE /conversations/{conversation_id}

Elimina la conversazione e tutti i messaggi. Risposta 204 No Content.


POST /conversations/{conversation_id}/messages/{message_id}/feedback

Registra il feedback dell'utente finale su una risposta dell'assistente.

Attributi richiesta

CampoInTipoObbligatorioDescrizione
ratingbodystringpositive o negative.
commentbodystringNoCommento testuale.

Esempio risposta (200 OK)

{ "message_id": 5512, "rating": "positive", "comment": "Risposta chiara." }

4. Server MCP

Server MCP (Model Context Protocol) registrati a livello tenant e associabili agli agenti.

POST /mcp-servers

Registra un nuovo server MCP.

Attributi richiesta

CampoInTipoObbligatorioDescrizione
namebodystring (1–255)Nome visualizzato.
descriptionbodystringNoDescrizione libera.
transportbodystringTrasporto. Valori: stdio, sse, streamable-http.
commandbodystring (max 500)Solo per stdioComando eseguibile.
argsbodystring[]NoArgomenti del comando.
urlbodystring (max 500)Solo per sse/streamable-httpURL del server.
envbodyobject (string→string)NoVariabili ambiente (per stdio) o header custom.

Esempio richiesta

curl -X POST "https://ai.askme.it/api/v2/mcp-servers" \
-H "X-Api-Key: amai_xxxxxxxxxxxxxxxx" \
-H "X-Source-App: api_direct" \
-H "Content-Type: application/json" \
-d '{
"name": "Calendar MCP",
"description": "Server MCP per gestione calendario",
"transport": "streamable-http",
"url": "https://mcp.example.com/calendar",
"env": { "Authorization": "Bearer ..." }
}'

Esempio risposta (201 Created)

{
"id": 12,
"tenant_id": "acme",
"name": "Calendar MCP",
"description": "Server MCP per gestione calendario",
"transport": "streamable-http",
"command": null,
"args": null,
"url": "https://mcp.example.com/calendar",
"env": { "Authorization": "Bearer ..." },
"status": "unknown",
"tools_count": 0,
"tools_cache": null,
"last_health_check": null,
"created_at": "2026-04-30T10:50:00Z",
"updated_at": "2026-04-30T10:50:00Z"
}

Errori specifici

CodiceSignificato
400Validazione fallita (es. transport=sse senza url, transport=stdio senza command).

GET /mcp-servers

Elenca i server MCP del tenant. Filtri: search, status, transport, oltre a offset/limit.

GET /mcp-servers/{server_id}

Dettaglio e cache dei tool.

PATCH /mcp-servers/{server_id}

Aggiorna il server (campi opzionali). Stessi vincoli di trasporto.

DELETE /mcp-servers/{server_id}

Elimina il server (204).


GET /mcp-servers/{server_id}/tools

Restituisce i tool esposti dal server, con relativo input_schema (JSON Schema).

POST /mcp-servers/{server_id}/refresh-tools

Forza il refresh della cache tool dal server. Restituisce conteggio e lista aggiornata.

POST /mcp-servers/{server_id}/test

Esegue un test di connessione live. Risposta { "success": bool, "message": string }.


Health

Lo stato status del server è cacheato in database. Le chiamate di health probano i server in tempo reale e persistono il risultato.

GET /mcp-servers/health

Stato cacheato di tutti i server (nessuna probe). Restituisce un array di McpServerResponse.

POST /mcp-servers/health/refresh

Probe live in parallelo di tutti i server e persiste i risultati.

POST /mcp-servers/{server_id}/health/refresh

Probe live di un singolo server.


5. Valutazioni e A/B Testing

note

Endpoint disponibili lato piattaforma; il riferimento sintetico seguente è derivato dall'inventario delle funzionalità e verrà esteso con parametri di dettaglio ed esempi in un aggiornamento successivo.

EndpointMetodoDescrizione
/evaluations/datasetsGET, POST, PUT, DELETEGestione dei dataset di valutazione.
/evaluations/runPOSTAvvia l'esecuzione di una valutazione su un dataset.
/evaluations/runsGETElenca le esecuzioni di valutazione.
/ab-experimentsGET, POST, PUT, DELETEGestione degli esperimenti A/B tra varianti di agente.
/ab-experiments/{id}/runPOSTAvvia un esperimento A/B.
/ab-experiments/{id}/resultsGETRisultati aggregati dell'esperimento.
/ab-experiments/{id}/promote/{variant}POSTPromuove una variante a configurazione attiva.

6. Template Prompt

Template di prompt riutilizzabili e versionabili.

POST /prompt-templates

Crea un template.

Attributi richiesta

CampoInTipoObbligatorioDefaultDescrizione
namebodystring (1–255)Nome del template.
contentbodystringTesto del prompt; può contenere {{variabile}}.
rolebodystringNosystemRuolo del messaggio (system, user, assistant).
descriptionbodystringNoDescrizione.
variablesbodyarrayNo[][{ name, description, default_value }].
parent_idbodyintNoTemplate genitore.
tagsbodystring[]No[]Tag liberi.
statusbodystringNodraftdraft, published, archived.

Esempio risposta (201 Created)

{
"id": 55,
"tenant_id": "acme",
"name": "Saluto cliente",
"description": "Apertura standard delle conversazioni di supporto",
"content": "Buongiorno {{nome_cliente}}, sono l'assistente di {{azienda}}.",
"role": "system",
"variables": [
{ "name": "nome_cliente", "description": "Nome del cliente", "default_value": "" },
{ "name": "azienda", "description": "Nome azienda", "default_value": "Askme" }
],
"parent_id": null,
"tags": ["welcome", "support"],
"status": "draft",
"version": 1,
"created_by": "user-uuid",
"created_at": "2026-04-30T12:00:00Z",
"updated_at": "2026-04-30T12:00:00Z"
}

GET /prompt-templates

Elenca i template.

Attributi richiesta

CampoInTipoDefaultDescrizione
parent_idqueryintFiltra per template genitore.
statusquerystringFiltro stato.
searchquerystringRicerca testuale.
root_onlyqueryboolfalseSe true mostra solo i template senza genitore.
offset, limitqueryint0, 50Paginazione (limit max 200).

PUT /prompt-templates/{template_id}

Aggiornamento (campi opzionali). Incrementa version.

DELETE /prompt-templates/{template_id}

Eliminazione (204).

Pagine correlate