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

GET /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"
    }
  ]
}
GET /api/v1/documents/{uuid}

Dokument-Details inklusive Kapitel abrufen.

POST /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
ParameterTypPflichtBeschreibung
fileFileJaPDF-Datei (max. 100 MB)
titleStringNeinTitel (Standard: Dateiname)
descriptionStringNeinBeschreibung
downloadableBooleanNeinDownload mit Wasserzeichen erlauben
DELETE /api/v1/documents/{uuid}

Dokument und alle zugehörigen Zugänge löschen.

GET /api/v1/documents/{uuid}/chapters

Kapitel eines Dokuments auflisten (automatisch aus PDF-Bookmarks extrahiert).

Zugänge

GET /api/v1/documents/{uuid}/accesses

Alle Zugänge eines Dokuments auflisten.

POST /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
ParameterTypPflichtBeschreibung
emailStringJaE-Mail des registrierten Kunden
chapter_idUUID (String)NeinKapitel-ID (leer = gesamtes Dokument)
expires_atISO 8601NeinAblaufdatum (leer = unbegrenzt)
DELETE /api/v1/documents/{uuid}/accesses/{accessUuid}

Zugang widerrufen.

Einladungen

GET /api/v1/invitations

Alle Einladungen auflisten.

POST /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"
  }
}
ParameterTypPflichtBeschreibung
emailStringJaE-Mail des einzuladenden Kunden
document_idUUID (String)NeinDokument-ID für automatische Freigabe
access_expires_atISO 8601NeinAblaufdatum des Zugangs
send_emailBooleanNeinE-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 CodeBedeutung
200Erfolg
201Erstellt
204Gelöscht (kein Body)
400Ungültige Anfrage
401Nicht authentifiziert
403Keine Berechtigung / Limit erreicht
404Nicht gefunden
429Rate Limit überschritten

Rate Limits & Pläne

API-Zugang ist ab dem Pro-Plan verfügbar. Bei Überschreitung erhalten Sie eine 429 Antwort.

PlanAPI-ZugangRate Limit
Starter (29 €/mo)Kein Zugang
Pro (79 €/mo)Verfügbar100 Requests/min
Business (199 €/mo)Verfügbar1.000 Requests/min