Skip to main content

Lister les tâches

GET https://dloopiq.onrender.com/api/v1/tasks
Authorization: Bearer <jwt_acheteur>

Paramètres de requête

ParamètreTypeDescription
statusstringFiltrer par statut : PENDING, VALIDATING, COMPLETED, FAILED
typestringFiltrer par type : SENTIMENT_ANALYSIS, etc.
projectIdstringFiltrer par projet
localestringFiltrer par langue
limitnumberNombre de résultats par page (défaut: 20, max: 100)
cursorstringCurseur de pagination (valeur nextCursor de la page précédente)

Exemple

# Première page — tâches complétées
curl "https://dloopiq.onrender.com/api/v1/tasks?status=COMPLETED&limit=20" \
  -H "Authorization: Bearer eyJhbGci..."

Réponse

{
  "tasks": [
    {
      "id": "cmpkb4ghw00016qduu44p7n2q",
      "type": "SENTIMENT_ANALYSIS",
      "content": "Ce produit est fantastique !",
      "options": ["Positif", "Négatif", "Neutre"],
      "status": "COMPLETED",
      "result": "Positif",
      "confidence": 0.87,
      "locale": "fr",
      "costCents": 20,
      "totalResponses": 3,
      "createdAt": "2026-05-25T10:00:00Z",
      "validatedAt": "2026-05-25T10:05:00Z"
    }
  ],
  "nextCursor": "cmpkb4ghw00016qduu44p7n2r",
  "hasMore": true
}

Pagination curseur

async function getAllCompletedTasks() {
  const tasks = []
  let cursor: string | null = null

  do {
    const url = new URL('https://dloopiq.onrender.com/api/v1/tasks')
    url.searchParams.set('status', 'COMPLETED')
    url.searchParams.set('limit', '100')
    if (cursor) url.searchParams.set('cursor', cursor)

    const res = await fetch(url, {
      headers: { 'Authorization': `Bearer ${JWT}` }
    })
    const data = await res.json()

    tasks.push(...data.tasks)
    cursor = data.nextCursor
  } while (cursor)

  return tasks
}

Consulter une tâche

GET https://dloopiq.onrender.com/api/v1/tasks/:id
Authorization: Bearer <jwt_acheteur>
curl "https://dloopiq.onrender.com/api/v1/tasks/cmpkb4ghw00016qduu44p7n2q" \
  -H "Authorization: Bearer eyJhbGci..."

Réponse complète

{
  "id": "cmpkb4ghw00016qduu44p7n2q",
  "type": "SENTIMENT_ANALYSIS",
  "content": "Ce produit est fantastique !",
  "options": ["Positif", "Négatif", "Neutre"],
  "status": "COMPLETED",
  "result": "Positif",
  "confidence": 0.87,
  "locale": "fr",
  "costCents": 20,
  "responses": [
    { "answer": "Positif", "timeSpentMs": 3200 },
    { "answer": "Positif", "timeSpentMs": 2100 },
    { "answer": "Neutre",  "timeSpentMs": 4500 }
  ],
  "totalResponses": 3,
  "validationsNeeded": 3,
  "createdAt": "2026-05-25T10:00:00Z",
  "validatedAt": "2026-05-25T10:05:00Z"
}

Mettre à jour une tâche

PATCH https://dloopiq.onrender.com/api/v1/tasks/:id
Authorization: Bearer <jwt_acheteur>
Content-Type: application/json
Seules les tâches en statut PENDING peuvent être modifiées.
curl -X PATCH "https://dloopiq.onrender.com/api/v1/tasks/cmpkb4ghw00016qduu44p7n2q" \
  -H "Authorization: Bearer eyJhbGci..." \
  -H "Content-Type: application/json" \
  -d '{
    "maxCents": 30,
    "validationsNeeded": 5
  }'

Erreurs courantes

CodeHTTPDescription
TASK_NOT_FOUND404ID introuvable ou n’appartient pas à votre compte
UNAUTHORIZED401JWT manquant ou expiré
TASK_NOT_PENDING400Tentative de modification d’une tâche non-PENDING