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

# Développer avec MARKO

> Les guides et la référence pour intégrer l'API partenaire MARKO.

export const CopyDocumentation = ({topic = "marko-documentation", label, chooseFamily = false}) => {
  const [state, setState] = useState("idle");
  const [message, setMessage] = useState("");
  const [selected, setSelected] = useState(topic);
  const [topics, setTopics] = useState([]);
  const base = "https://raw.githubusercontent.com/mathieuworoniecki/marko-developer-docs/main/downloads/";
  useEffect(() => {
    if (!chooseFamily) return;
    let active = true;
    fetch(base + "index.json").then(async response => {
      if (!response.ok) throw new Error("Index indisponible");
      const index = await response.json();
      if (active && index.format === "marko-documentation-index/v1") setTopics(index.topics);
    }).catch(() => {
      if (active) setMessage("La liste des périmètres est indisponible. La copie complète reste accessible.");
    });
    return () => {
      active = false;
    };
  }, [chooseFamily]);
  const id = chooseFamily ? selected : topic;
  const downloadUrl = base + encodeURIComponent(id) + ".json";
  const copy = async () => {
    setState("loading");
    setMessage("");
    try {
      const document = fetch(downloadUrl).then(async response => {
        if (!response.ok) throw new Error("Documentation indisponible");
        const payload = await response.json();
        const text = payload.markdown;
        if (payload.format !== "marko-documentation/v1" || typeof text !== "string" || !text.startsWith("# MARKO — ")) {
          throw new Error("Format de documentation inattendu");
        }
        return text;
      });
      if (navigator.clipboard.write && typeof ClipboardItem !== "undefined") {
        await navigator.clipboard.write([new ClipboardItem({
          "text/plain": document.then(text => new Blob([text], {
            type: "text/plain"
          }))
        })]);
      } else {
        await navigator.clipboard.writeText(await document);
      }
      setState("copied");
      setMessage("Documentation copiée. Vous pouvez la coller dans votre assistant.");
    } catch {
      setState("error");
      setMessage("La copie n'a pas abouti. Utilisez le lien de téléchargement ci-dessous.");
    }
  };
  return <div className="not-prose my-4">
      {chooseFamily && <label className="mb-3 block text-sm">
          <span className="mb-1 block">Documentation à copier</span>
          <select aria-label="Documentation à copier" value={selected} disabled={state === "loading"} onChange={event => {
    setSelected(event.target.value);
    setState("idle");
    setMessage("");
  }} className="w-full rounded-lg border px-3 py-2" style={{
    color: "inherit",
    backgroundColor: "transparent",
    borderColor: "#087E8B"
  }}>
            {!topics.length && <option value="marko-documentation">Toute la documentation</option>}
            {topics.map(item => <option key={item.id} value={item.id}>{item.kind === "tutorial" ? "Tutoriel : " : item.kind === "family" ? "API : " : ""}{item.title}</option>)}
          </select>
        </label>}
      <button type="button" onClick={copy} disabled={state === "loading"} className="rounded-lg border px-4 py-2 text-sm font-semibold disabled:opacity-60 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2" style={{
    backgroundColor: "#76E7F4",
    color: "#092E33",
    borderColor: "#087E8B"
  }}>
        {state === "loading" ? "Copie en cours…" : state === "copied" ? "Documentation copiée ✓" : label || (chooseFamily ? "Copier la sélection pour une IA" : "Copier toute la documentation pour une IA")}
      </button>
      <p className="mt-2 text-sm" role="status" aria-live="polite">{message}</p>
      <a className="text-sm underline" href={downloadUrl}>{chooseFamily || topic !== "marko-documentation" ? "Télécharger cette documentation" : "Télécharger la documentation complète"}</a>
    </div>;
};

L'API partenaire permet de lire et synchroniser les données de votre entité MARKO. Commencez par un appel en lecture, puis choisissez le parcours correspondant à votre intégration.

<Columns cols={2}>
  <Card title="Premier appel" icon="terminal" href="/quickstart" arrow>
    Obtenez un bearer et lisez une page d'opérations.
  </Card>

  <Card title="CRM vers MARKO" icon="arrows-rotate" href="/tutorials/crm-sync" arrow>
    Synchronisez une opération et ses notes historiques.
  </Card>

  <Card title="Document et extraction IA" icon="file" href="/tutorials/document-extraction" arrow>
    Envoyez un fichier et suivez son traitement.
  </Card>

  <Card title="Référence API" icon="code" href="/resources" arrow>
    Trouvez les routes, leurs champs et leurs scopes.
  </Card>
</Columns>

## Votre intégration

L'API utilise un bearer obtenu par un échange signé côté serveur. Les routes accessibles dépendent des scopes et des éventuelles restrictions de votre clé.

**URL de production**

```text theme={null}
https://partner-api.marko.fr/v1
```

Pour préparer vos tests, consultez le guide des [environnements](/environments). Un administrateur de l'entité peut exporter depuis MARKO un contrat OpenAPI ou une collection Postman filtrés pour votre clé.

Les [exemples Python, Node.js et PHP](/code-examples) prennent en charge les appels JSON. Le guide [Comprendre les ressources](/concepts) explique les liens entre fonds, SPV, opérations et documents. Pour plusieurs opérations à la fois, suivre [Import par lot](/tutorials/batch-import).

## Développer avec une IA

<CopyDocumentation />

Le menu de chaque page permet aussi de copier son contenu en Markdown ou de l'ouvrir dans Claude ou ChatGPT. Pour un contexte plus court, le guide [IA et outils de développement](/ai-and-tools) permet de copier une famille API ou un tutoriel avec ses contrats. L'[index de la documentation](https://developers.marko.fr/llms.txt?v=20261001-2) et le [contrat OpenAPI enrichi](https://raw.githubusercontent.com/mathieuworoniecki/marko-developer-docs/main/openapi.json) sont accessibles directement.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.