> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dloopiq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# getNextTask

> Récupère la prochaine tâche disponible pour un utilisateur.

## Signature

```typescript theme={null}
dloopiq.getNextTask(options?: GetNextTaskOptions): Promise<Task | null>
```

Retourne `null` si aucune tâche n'est disponible.

***

## Options

```typescript theme={null}
interface GetNextTaskOptions {
  /** Filtrer par types de tâches */
  types?: TaskType[]

  /** Langue préférée de l'utilisateur */
  locale?: 'fr' | 'en' | 'de' | 'zh' | 'es' | 'ar'

  /** Identifiant opaque de l'utilisateur dans votre app */
  userId?: string
}
```

***

## Exemple

```typescript theme={null}
const task = await dloopiq.getNextTask({
  types: ['SENTIMENT_ANALYSIS', 'BINARY_CHOICE'],
  locale: 'fr',
  userId: 'user_abc123'
})

if (!task) {
  console.log('Pas de tâche disponible')
  return
}

console.log(task.taskId)    // "cmpkb4ghw00016qduu44p7n2q"
console.log(task.type)      // "SENTIMENT_ANALYSIS"
console.log(task.content)   // "Ce produit est fantastique !"
console.log(task.options)   // ["Positif", "Négatif", "Neutre"]
console.log(task.locale)    // "fr"
```

***

## Type `Task`

```typescript theme={null}
interface Task {
  taskId: string
  type: TaskType
  content: string
  options: string[]
  locale: string
}
```

***

## Types de tâches disponibles

```typescript theme={null}
type TaskType =
  | 'IMAGE_CLASSIFICATION'
  | 'SENTIMENT_ANALYSIS'
  | 'AI_RESPONSE_RATING'
  | 'AUDIO_TRANSCRIPTION'
  | 'CONTENT_MODERATION'
  | 'BINARY_CHOICE'
  | 'CATEGORY_SELECTION'
  | 'RELEVANCE_RATING'
  | 'OBJECT_DETECTION'
  | 'TRANSLATION_REVIEW'
  | 'TEXT_COMPARISON'
  | 'COMPLEX_ANNOTATION'
```

***

## Golden Tasks

**5 %** des tâches retournées sont des **golden tasks** — des tâches dont la réponse correcte est connue, utilisées pour mesurer la qualité des annotateurs.

L'utilisateur ne peut pas distinguer une golden task d'une tâche normale. La réponse correcte n'est jamais exposée dans l'objet `Task`.

<Note>
  Les golden tasks servent à maintenir la qualité. Elles ne génèrent **aucun revenu** pour le développeur (`earnedCents: 0`), mais influencent le score de réputation de l'utilisateur.
</Note>

***

## Comportement sans tâche disponible

```typescript theme={null}
const task = await dloopiq.getNextTask({ types: ['AUDIO_TRANSCRIPTION'] })
// → null si aucune tâche de type AUDIO_TRANSCRIPTION n'est disponible

const task2 = await dloopiq.getNextTask()
// → null si aucune tâche disponible tous types confondus
```

***

## Gestion d'erreurs

```typescript theme={null}
try {
  const task = await dloopiq.getNextTask({ locale: 'fr' })
} catch (err) {
  // Authentification invalide → 401 INVALID_API_KEY
  // Trop de requêtes → 429 RATE_LIMITED
  console.error(err.message)
}
```

***

## Exemple d'affichage par type

```typescript theme={null}
function renderTask(task: Task) {
  switch (task.type) {
    case 'SENTIMENT_ANALYSIS':
      return <SentimentScreen text={task.content} options={task.options} />
    case 'BINARY_CHOICE':
      return <YesNoScreen question={task.content} />
    case 'IMAGE_CLASSIFICATION':
      return <ImageScreen imageUrl={task.content} labels={task.options} />
    default:
      return <GenericScreen task={task} />
  }
}
```
