# Relire le correctif

Relit un correctif déjà débloqué, sans rien décompter. S'il n'est pas encore débloqué, la réponse est `404 fix_locked` et rien n'est débloqué : passe par [Débloquer le correctif](https://docs.rustine.io/api/issues/unlock-fix).

```
GET https://api.rustine.io/v1/issues/{issue_id}/fix
```

Permission OAuth : `scans:read` · une clé d'API les a toutes

## Paramètres de chemin

- `issue_id` (string, obligatoire) Le problème.

## Réponse (200 OK)

- `object` (string, obligatoire) Le type d'objet, toujours le même pour une route donnée.
- `issue_id` (string, obligatoire) Le problème.
- `prompt` (string, obligatoire) Le correctif, sous forme d'instructions pour ton agent de code (Cursor, Claude Code…), à appliquer dans ton code. Rustine ne modifie jamais ton code.
- `ai_fix` (string | null, obligatoire) Un correctif écrit par Rustine (diff unifié), s'il a été généré dans l'app.

## Exemples

### curl

```bash
# La clé reste dans une variable, jamais dans l'adresse
curl https://api.rustine.io/v1/issues/2a4c6e8f-0b1d-4f3a-9c5e-7a9b1c3d5e7f/fix \
  -H "Authorization: Bearer $RUSTINE_API_KEY"
```

### Node

```js
const res = await fetch(
  "https://api.rustine.io/v1/issues/2a4c6e8f-0b1d-4f3a-9c5e-7a9b1c3d5e7f/fix",
  {
    headers: {
      Authorization: `Bearer ${process.env.RUSTINE_API_KEY}`,
    },
  },
)
const fix = await res.json()
```

### Python

```python
import os

import requests

fix = requests.get(
    "https://api.rustine.io/v1/issues/2a4c6e8f-0b1d-4f3a-9c5e-7a9b1c3d5e7f/fix",
    headers={
        "Authorization": f"Bearer {os.environ['RUSTINE_API_KEY']}",
    },
).json()
```

### Réponse : 200 OK

```json
{
  "object": "fix",
  "issue_id": "2a4c6e8f-0b1d-4f3a-9c5e-7a9b1c3d5e7f",
  "prompt": "Your .env file is served publicly at https://app.example.com/.env.\n1. Remove .env from the public directory of the build…\n2. Rotate every secret it contained…",
  "ai_fix": null
}
```

## Erreurs

| Code | error.code | Ce qui se passe |
| --- | --- | --- |
| 401 | `authentication_required` | Aucune clé dans la requête. Passe-la dans l'en-tête `Authorization: Bearer rst_…`, jamais dans l'adresse. |
| 401 | `invalid_api_key` | La clé ou le jeton OAuth est faux, révoqué ou expiré. Vérifie qu'il est copié en entier, ou crée une nouvelle clé. |
| 402 | `api_plan_required` | L'espace est sur l'offre Gratuite. L'API vient avec Pro, ou à l'essai 14 jours sur Solo. |
| 402 | `api_trial_ended` | L'essai de 14 jours de Solo est terminé. Passe à Pro : tes clés remarchent aussitôt. |
| 403 | `scope_missing` | Le jeton OAuth n'a pas la permission que demande cette route (indiquée sur sa page). Reconnecte l'agent pour l'accorder. Une clé d'API a toutes les permissions. |
| 404 | `resource_not_found` | Rien avec cet identifiant dans l'espace de la clé. Un objet d'un autre espace répond pareil : son existence n'est jamais révélée. |
| 404 | `fix_locked` | Le correctif de ce problème n'est pas encore débloqué : `POST /issues/{issue_id}/fix` le débloque. |
| 429 | `rate_limited` | Trop de requêtes pour cette clé (120 par minute). Attends `Retry-After` secondes. |
| 500 | `internal_error` | Une erreur de notre côté, signalée automatiquement. Réessaie plus tard ; donne le `Request-Id` au support si elle revient. |
| 503 | `service_unavailable` | Rustine est indisponible un instant. Réessaie avec la même `Idempotency-Key`. |

https://docs.rustine.io/api/errors
