---
title: "Workflow d'embauche rapide en une seule action UX."
method: POST
path: "/api/v1/recrutement/applications/{app_id}/quick-hire"
tags: ["Recrutement / ATS (V2)"]
---

# Workflow d'embauche rapide en une seule action UX.

`POST /api/v1/recrutement/applications/{app_id}/quick-hire`

## Request

- Base URL: `https://erp.eyeot.fr/api/v1`
- URL: `https://erp.eyeot.fr/api/v1/api/v1/recrutement/applications/{app_id}/quick-hire`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Workflow d'embauche rapide en une seule action UX.

    Chaîne : create Offer → accept Offer → hire (création Employee + event
    `recrutement.candidate_hired`). Pratique pour les TPE/PME qui n'ont pas
    de signature formelle d'offer (offer écrite séparément, ou orale).

    Body minimal : `{salary_proposed: str|number, start_date?: ISO date,
    contract_type?: CDI|CDD|...}`.

    Idempotent : si `candidate.linked_employee_id` est déjà set, retourne
    l'Employee existant sans créer de doublon.

    Pré-condition : `application.status == "active"`.

**Permissions requises** : `recrutement:hire`

## Response `200`

Succès — payload `{data, meta}` (cf. API-GUIDE §3.1)

## Other responses

- `201`: Ressource créée. ID dans `data.id`.
- `400`: Validation Marshmallow échouée. `errors` détaille chaque champ invalide.
- `401`: JWT manquant, expiré ou révoqué.
- `402`: L'organisation n'a pas d'abonnement actif (paywall). Rediriger vers /activate.
- `403`: Permissions `module:action` insuffisantes pour cette route.
- `404`: Ressource introuvable (ou cross-tenant — équivalent à hidden).
- `409`: État incohérent (email dupliqué, ressource déjà dans cet état, etc.).
- `422`: Validation Marshmallow échouée. `errors` détaille chaque champ invalide.
- `429`: Trop de requêtes. Honorer le header `Retry-After` (secondes).

---

[API](https://skmtc.dev/eyeot/apis/eyeot-erp-api.md) · [All operations](https://skmtc.dev/eyeot/apis/eyeot-erp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/eyeot/apis/eyeot-erp-api/revisions/42ab95222a89?raw)
