DocumentazioneThread ed esecuzioni

I tuoi assistenti

Thread ed esecuzioni

Un thread conserva una conversazione con un assistente. Ogni domanda vi avvia un’esecuzione, che segui fino alla risposta.

In questa pagina
  1. Un turno di conversazione
  2. Seguire l’esecuzione
  3. Disponibile anche
  4. Configurare un’esecuzione
  5. Limiti

Un turno di conversazione

  1. Aprire un thread

    POST /v1/thread Con l’ID dell’assistente.

  2. Fare la domanda

    POST /v1/thread/{id}/messages Il messaggio della persona.

  3. Avviare l’esecuzione

    POST /v1/thread/{id}/runs L’assistente lavora su questo messaggio. La risposta contiene l’ID dell’esecuzione.

# Open a thread with the assistant.
curl https://api.learnya.ai/v1/thread \
  -H "Authorization: Bearer $LEARNYA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"assistantId": "ASSISTANT_ID", "title": "Ticket 42"}'

# Post the question.
curl https://api.learnya.ai/v1/thread/THREAD_ID/messages \
  -H "Authorization: Bearer $LEARNYA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content": "Where is my invoice?"}'

# Start the run on it. The answer carries the run id.
curl https://api.learnya.ai/v1/thread/THREAD_ID/runs \
  -H "Authorization: Bearer $LEARNYA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"triggerMessageId": "MESSAGE_ID"}'

Seguire l’esecuzione

Interroga l’esecuzione finché non si conclude. Quando è terminata, la risposta si trova in output.

StatoCosa significa
queuedIn attesa di un worker libero
in_progressL’assistente sta lavorando
completedTerminata, la risposta è pronta
failedInterrotta da un errore, descritto in error
canceledFermata prima della fine
import time

while True:
    reply = requests.get(f"{API}/run/{run_id}", headers=HEADERS)
    run = reply.json()
    if run["status"] in ("completed", "failed", "canceled"):
        break
    time.sleep(1)

if run["status"] == "completed":
    print(run["output"][0]["text"])
else:
    print(run["status"], run.get("error"))
Risposta
{
  "id": "c2a7e9d4-1b3f-4e6a-8c5d-9f0b2e4a6d18",
  "threadId": "8e4b1d6f-2c9a-4f7e-b3d5-0a6c8e2f4b91",
  "assistantId": "6f1c2b0e-3a4d-4c8e-9b7a-2d5e8f1a0c34",
  "status": "completed",
  "output": [
    { "type": "text", "text": "Your invoice 2026-114 was sent on 2 October." }
  ],
  "modelUsed": "learnya-flash",
  "error": null
}

Disponibile anche

GET /v1/thread/{id}/messages I messaggi del thread, fino a 400 per pagina.

GET /v1/run/{id}/stream La risposta come eventi inviati dal server, mentre viene scritta.

POST /v1/runs/{id}/stop Interrompe un’esecuzione.

GET /v1/threads I thread della persona, filtrabili per assistente.

Configurare un’esecuzione

modelOverridetesto
Il modello di questa sola esecuzione: flash o max.
reasoning_efforttesto
Lo sforzo di ragionamento: none, low, medium o high.
maxStepsintero
Il numero massimo di passaggi dell’esecuzione, da 1 a 500.

Limiti

  • 20 esecuzioni al minuto per persona
  • 600 richieste al minuto per le altre route
  • Il numero di esecuzioni al giorno dipende dal piano dello spazio di lavoro