Dokumentation

In unserer Dokumentation findest Antworten auf häufig gestellt Fragen sowie Informationen zu unseren Funktionen.

Hinweis
Falls du Einblicke in unsere internen Prozesse oder eingesetzten Technologien erwartest, möchten wir darauf hinweisen, dass diese Informationen nicht öffentlich zugänglich sind. Angaben zu verwendeten Sprachmodellen sowie zur zugrunde liegenden Prozesslogik geben wir nicht bekannt.

BotHosting.io

Mit BotHosting.io ermöglichen wir die Automatisierung von Dialogen. Im Gegensatz zu klassischen Service-Systemen liegt unser Fokus dabei auf persönlichen, individuellen Gesprächen - nicht auf typischen Support-Chats.

Rate Limits

Um faire Nutzung zu gewährleisten, gelten folgende Rate Limits:

Plan Requests / Minute Requests / Tag
Free 10 1,000
Bronze 30 5,000
Silber 60 15,000
Gold 120 50,000
⚠️ Rate Limit überschritten
Bei Überschreitung des Rate Limits erhältst du einen 429 Too Many Requests Fehler. Warte kurz und versuche es erneut.
POST /chat/send
🔐 Authentifizierung erforderlich

Sendet eine Nachricht an den Chat Bot und erhält eine KI-generierte Antwort. Der Bot berücksichtigt dabei den Kontext vorheriger Nachrichten und gespeicherte Memories.

Request Parameter

Parameter Typ Erforderlich Beschreibung
platform string required Plattform des Customers (z.B. "telegram", "mydirtyhobby", "onlyfans")
platform_id string required ID des Customers auf der Plattform
name string required Name des Customers (max 255 Zeichen)
message string optional Die Nachricht vom Customer (max 1000 Zeichen)
image string optional Bild als Base64-String oder URL
Customer-Verwaltung
Wenn ein Customer mit der angegebenen platform/platform_id Kombination noch nicht existiert, wird er automatisch erstellt. Die Kombination aus platform und platform_id muss eindeutig sein.
Bilder empfangen
Du kannst Bilder auf zwei Arten empfangen:
1. Als URL: "image": "https://example.com/photo.jpg"
2. Als Base64: "image": "data:image/jpeg;base64,/9j/4AAQ..." oder nur der Base64-String ohne Prefix

Request Beispiel

JSON
{
  "message": "Hast du Bilder von dir?",
  "platform": "telegram",
  "platform_id": "123456789",
  "name": "Max Mustermann"
}

Request mit Bild-URL

JSON
{
  "message": "Was siehst du auf diesem Bild?",
  "image": "https://example.com/photo.jpg",
  "platform": "telegram",
  "platform_id": "123456789",
  "name": "Max Mustermann"
}
cURL
curl -X POST https://bothosting.io/api/v1/chat/send \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Hey, wie gehts?",
    "platform": "telegram",
    "platform_id": "987654321"
  }'

Response

200 OK
{
  "success": true,
  "response": "Hey! Mir geht's gut 😊 Und dir?",
  "wallet": "47.35",
  "cost": "0.000123",
  "charged_cost": "0.02",
  "customer": {
    "id": 42,
    "platform": "telegram",
    "platform_id": "123456789",
    "name": "Max Mustermann"
  }
}

Response mit Content

200 OK
{
  "success": true,
  "response": "Hier ist ein Bild für dich! 😘",
  "content": {
    "url": "https://cdn.example.com/content/image_123.jpg",
    "type": "image",
    "category": "body"
  },
  "wallet": "47.13",
  "cost": "0.000145",
  "charged_cost": "0.02",
  "customer": {
    "id": 42,
    "platform": "telegram",
    "platform_id": "123456789",
    "name": "Max Mustermann"
  }
}

Fehler Responses

400 Bad Request
{
  "success": false,
  "error": "empty_message",
  "message": "Bitte sende eine Nachricht oder ein Bild."
}
401 Unauthorized
{
  "error": "Invalid token",
  "message": "The provided token is invalid or expired"
}
402 Payment Required
{
  "success": false,
  "error": "insufficient_funds",
  "message": "Kein Guthaben mehr vorhanden. Bitte Wallet aufladen.",
  "wallet": "0.00"
}
500 Internal Server Error
{
  "success": false,
  "error": "internal_error",
  "message": "Ein technischer Fehler ist aufgetreten. Bitte versuche es erneut."
}
GET /chat/memories
🔐 Authentifizierung erforderlich

Ruft alle gespeicherten Memories für einen bestimmten Kunden ab. Memories sind wichtige Informationen, die sich der Bot über den Nutzer gemerkt hat.

Query Parameter

Parameter Typ Erforderlich Beschreibung
customer_id integer optional ID des Kunden (die von BotHosting.io vergebene ID)
category string optional Filtere Memories nach Kategorie (z.B. "personal", "preferences")

Response

200 OK
{
  "success": true,
  "data": {
    "memories": [
      {
        "id": 1,
        "memory_key": "name",
        "memory_value": "Max",
        "category": "personal",
        "created_at": "2026-02-01T10:30:00Z"
      },
      {
        "id": 2,
        "memory_key": "favorite_color",
        "memory_value": "blau",
        "category": "preferences",
        "created_at": "2026-02-05T14:22:00Z"
      }
    ],
    "total": 2
  }
}
POST /api/v1/chat/switch
🔐 Authentifizierung erforderlich

Wechselt den aktiven Chat-Partner. Nützlich für Account-Manager, die mehrere Kunden betreuen.

Request Parameter

Parameter Typ Erforderlich Beschreibung
customer_id integer required ID des Kunden zu dem gewechselt werden soll

Response

200 OK
{
  "success": true,
  "message": "Kunde erfolgreich gewechselt",
  "data": {
    "customer_id": 42,
    "name": "Max Mustermann"
  }
}
GET /api/v1/content
🔐 Authentifizierung erforderlich

Ruft verfügbare Content-Items (Bilder, Videos) ab, optional gefiltert nach Kategorie.

Query Parameter

Parameter Typ Erforderlich Beschreibung
category string optional Kategorie: ass, boobs, pussy, feet, body, face, lingerie
type string optional Content-Typ: image, video
is_free boolean optional Nur kostenlose Content-Items

Response

200 OK
{
  "success": true,
  "data": {
    "content": [
      {
        "id": 15,
        "type": "image",
        "category": "body",
        "url": "https://cdn.example.com/content/img_123.jpg",
        "description": "Ganzkörper-Foto in schwarzem Kleid",
        "price": 5.99,
        "is_free": false
      }
    ],
    "total": 1
  }
}
POST /api/v1/content/upload
🔐 Authentifizierung erforderlich

Lädt neuen Content (Bild oder Video) hoch und speichert die Metadaten.

Request Parameter (multipart/form-data)

Parameter Typ Erforderlich Beschreibung
file file required Die hochzuladende Datei (max. 10MB)
category string required Kategorie des Contents
description string optional Beschreibung des Contents
price decimal optional Preis in EUR (Standard: 0.00 = kostenlos)

Response

201 Created
{
  "success": true,
  "message": "Content erfolgreich hochgeladen",
  "data": {
    "id": 23,
    "type": "image",
    "category": "lingerie",
    "url": "https://cdn.example.com/content/img_456.jpg",
    "description": "Rote Spitze",
    "price": 7.99,
    "is_free": false,
    "created_at": "2026-02-09T15:30:00Z"
  }
}

Fehler Codes

Die API verwendet Standard-HTTP-Statuscodes. Hier sind die häufigsten Fehler:

Code Status Beschreibung
400 Bad Request Die Anfrage war ungültig oder fehlerhaft
401 Unauthorized Keine gültige Authentifizierung vorhanden
403 Forbidden Keine Berechtigung für diese Ressource
404 Not Found Die angeforderte Ressource wurde nicht gefunden
429 Too Many Requests Rate Limit überschritten
500 Internal Server Error Ein unerwarteter Serverfehler ist aufgetreten

Fehler Response Format

Error
{
  "success": false,
  "error": {
    "code": "INVALID_REQUEST",
    "message": "Das Feld 'message' ist erforderlich",
    "details": {
      "field": "message",
      "validation": "required"
    }
  }
}

Code Beispiele

JavaScript (Fetch API)

JavaScript
const sendMessage = async (message) => {
  try {
    const response = await fetch('https://api.chatbot.example/v1/chat/send', {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer YOUR_API_TOKEN',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({ message })
    });

    const data = await response.json();
    console.log('Bot Antwort:', data.data.message);

    if (data.data.content) {
      console.log('Content erhalten:', data.data.content);
    }
  } catch (error) {
    console.error('Fehler:', error);
  }
};

sendMessage('Hallo Bot!');

Python (Requests)

Python
import requests

API_TOKEN = 'YOUR_API_TOKEN'
BASE_URL = 'https://api.chatbot.example/v1'

def send_message(message):
    headers = {
        'Authorization': f'Bearer {API_TOKEN}',
        'Content-Type': 'application/json'
    }

    payload = {'message': message}

    response = requests.post(
        f'{BASE_URL}/chat/send',
        headers=headers,
        json=payload
    )

    data = response.json()
    print('Bot Antwort:', data['data']['message'])

    if data['data']['content']:
        print('Content erhalten:', data['data']['content'])

send_message('Hallo Bot!')

PHP (cURL)

PHP
<?php

$apiToken = 'YOUR_API_TOKEN';
$baseUrl = 'https://api.chatbot.example/v1';

function sendMessage($message, $apiToken, $baseUrl) {
    $ch = curl_init($baseUrl . '/chat/send');

    $headers = [
        'Authorization: Bearer ' . $apiToken,
        'Content-Type: application/json'
    ];

    $payload = json_encode(['message' => $message]);

    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    curl_close($ch);

    $data = json_decode($response, true);
    echo 'Bot Antwort: ' . $data['data']['message'] . "\n";

    if (!empty($data['data']['content'])) {
        echo 'Content erhalten: ' . print_r($data['data']['content'], true);
    }
}

sendMessage('Hallo Bot!', $apiToken, $baseUrl);
✅ Best Practices
  • Speichere deinen API-Token sicher und teile ihn niemals öffentlich
  • Implementiere Retry-Logik für fehlgeschlagene Requests
  • Nutze Caching für Memories, um API-Calls zu reduzieren
  • Überwache deine Token-Nutzung im Dashboard
  • Behandle Rate Limit Fehler (429) mit exponentieller Backoff-Strategie