ManualHQ REST API
Integrieren Sie ManualHQ in Ihre Systeme. Verwalten Sie Dokumente, Zugänge und Einladungen programmatisch.
Base URL: https://www.manualhq.app/api/v1
Authentifizierung
Alle API-Anfragen benötigen einen API Key im Authorization Header.
API Keys erstellen Sie unter Einstellungen → API Keys in Ihrem Hersteller-Dashboard.
# Beispiel-Request curl https://www.manualhq.app/api/v1/documents \ -H "Authorization: Bearer mhq_IhrApiKeyHier"
Wichtig: API Keys gewähren vollen Zugriff auf alle Dokumente und Zugänge Ihres Hersteller-Kontos. Behandeln Sie sie wie Passwörter.
Dokumente
/api/v1/documents
Alle Dokumente des Herstellers auflisten.
curl https://www.manualhq.app/api/v1/documents \ -H "Authorization: Bearer mhq_..." # Response 200 { "data": [ { "id": "0195f3c2-7b1a-7e42-9c3d-4a5b6c7d8e9f", "title": "Installationsanleitung v3.2", "page_count": 42, "file_size": 2458624, "downloadable": true, "access_count": 12, "created_at": "2026-03-20T10:30:00+00:00" } ] }
/api/v1/documents/{uuid}
Dokument-Details inklusive Kapitel abrufen.
/api/v1/documents
PDF-Dokument hochladen. Multipart/form-data.
curl -X POST https://www.manualhq.app/api/v1/documents \ -H "Authorization: Bearer mhq_..." \ -F "[email protected]" \ -F "title=Installationsanleitung v3.2" \ -F "description=Für Modell XR-500" \ -F "downloadable=1" # Response 201
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
file | File | Ja | PDF-Datei (max. 100 MB) |
title | String | Nein | Titel (Standard: Dateiname) |
description | String | Nein | Beschreibung |
downloadable | Boolean | Nein | Download mit Wasserzeichen erlauben |
/api/v1/documents/{uuid}
Dokument und alle zugehörigen Zugänge löschen.
/api/v1/documents/{uuid}/chapters
Kapitel eines Dokuments auflisten (automatisch aus PDF-Bookmarks extrahiert).
Zugänge
/api/v1/documents/{uuid}/accesses
Alle Zugänge eines Dokuments auflisten.
/api/v1/documents/{uuid}/accesses
Zugang für einen Kunden erteilen. JSON-Body.
curl -X POST https://www.manualhq.app/api/v1/documents/0195f3c2-7b1a-7e42-9c3d-4a5b6c7d8e9f/accesses \ -H "Authorization: Bearer mhq_..." \ -H "Content-Type: application/json" \ -d '{ "email": "[email protected]", "chapter_id": "0195f3c2-8c2b-7f53-8d4e-5b6c7d8e9f0a", "expires_at": "2026-12-31T23:59:59+00:00" }' # Response 201
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
email | String | Ja | E-Mail des registrierten Kunden |
chapter_id | UUID (String) | Nein | Kapitel-ID (leer = gesamtes Dokument) |
expires_at | ISO 8601 | Nein | Ablaufdatum (leer = unbegrenzt) |
/api/v1/documents/{uuid}/accesses/{accessUuid}
Zugang widerrufen.
Einladungen
/api/v1/invitations
Alle Einladungen auflisten.
/api/v1/invitations
Kunden per E-Mail einladen. Erstellt automatisch eine Einladung und sendet die E-Mail.
curl -X POST https://www.manualhq.app/api/v1/invitations \ -H "Authorization: Bearer mhq_..." \ -H "Content-Type: application/json" \ -d '{ "email": "[email protected]", "document_id": "0195f3c2-7b1a-7e42-9c3d-4a5b6c7d8e9f", "send_email": true }' # Response 201 { "data": { "id": 42, "email": "[email protected]", "status": "pending", "invite_url": "https://www.manualhq.app/invite/abc123...", "expires_at": "2026-03-27T10:30:00+00:00" } }
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
email | String | Ja | E-Mail des einzuladenden Kunden |
document_id | UUID (String) | Nein | Dokument-ID für automatische Freigabe |
access_expires_at | ISO 8601 | Nein | Ablaufdatum des Zugangs |
send_email | Boolean | Nein | E-Mail senden (Standard: true) |
Fehlerbehandlung
Fehler werden als JSON mit einem error und message Feld zurückgegeben.
{
"error": "authentication_failed",
"message": "Invalid API key."
}
| HTTP Code | Bedeutung |
|---|---|
200 | Erfolg |
201 | Erstellt |
204 | Gelöscht (kein Body) |
400 | Ungültige Anfrage |
401 | Nicht authentifiziert |
403 | Keine Berechtigung / Limit erreicht |
404 | Nicht gefunden |
429 | Rate Limit überschritten |
Rate Limits & Pläne
API-Zugang ist ab dem Pro-Plan verfügbar. Bei Überschreitung erhalten Sie eine 429 Antwort.
| Plan | API-Zugang | Rate Limit |
|---|---|---|
| Starter (29 €/mo) | Kein Zugang | — |
| Pro (79 €/mo) | Verfügbar | 100 Requests/min |
| Business (199 €/mo) | Verfügbar | 1.000 Requests/min |