Zum Hauptinhalt springen

API-Referenz

Vollständige API-Referenz für Vartovii.

Basis-URL: https://sentryanalytic.com

Authentifizierung

Die meisten Endpunkte sind öffentlich. Agenten-Tool-Endpunkte erfordern einen API-Schlüssel:

curl -H "X-API-Key: your-api-key" https://sentryanalytic.com/api/agent/...

Unternehmens-Endpunkte

Unternehmen suchen

GET /api/company/search?q=QUERY

Parameter: | Name | Type | Required | Beschreibung | |------|------|----------|--------------| | q | string | Yes | Suchanfrage | | limit | int | No | Maximale Ergebnisse (Standard: 10) |

Antwort:

{
"companies": [
{
"company_name": "BMW",
"company_slug": "bmw",
"trust_score": 74,
"review_count": 5621
}
]
}

Unternehmensdetails abrufen

GET /api/company/SLUG

Antwort:

{
"company_name": "BMW",
"company_slug": "bmw",
"trust_score": 74,
"risk_level": "MEDIUM",
"avg_rating": 3.97,
"review_count": 5621,
"sentiment": {
"positive": 50,
"negative": 40,
"neutral": 10
},
"data_freshness": "fresh",
"last_updated": "2025-12-27"
}

Smarte Suche

GET /api/search/smart?q=QUERY&auto_scrape=true

Parameter: | Name | Type | Default | Beschreibung | |------|------|---------|--------------| | q | string | required | Firmenname | | country | string | "de" | Länder-Code | | auto_scrape | bool | true | Automatisches Auslösen des Scraping |

Antwort:

{
"status": "gefunden",
"company_name": "BMW",
"data_status": "frisch",
"review_count": 5621,
"scraping_jobs": []
}

AI Chat-Endpunkte

Mit AI chatten

POST /api/ai/chat

Anfrage:

{
"message": "Wie hoch ist der Trust Score für BMW?",
"language": "auto",
"enable_grounding": false,
"enable_rag": true
}

Antwort:

{
"response": "BMW hat einen Trust Score von 74/100...",
"status": "ok",
"grounded": false,
"rag_used": true,
"tools_used": true,
"tool_calls": [
{ "name": "search_company", "args": { "company_name": "BMW" } }
]
}

Zustandsprüfung

GET /api/ai/chat/health

Antwort:

{
"status": "gesund",
"model": "gemini-2.5-flash",
"rag_corpus": "active"
}

Agenten-Tool-Endpunkte

⚠️ Erfordert API-Schlüssel: X-API-Key Header

Unternehmen suchen

POST /api/agent/search-company

Anfrage:

{
"company_name": "BMW",
"country": "de"
}

Trust Score abrufen

POST /api/agent/trust-score

Anfrage:

{
"company_name": "BMW"
}

Antwort:

{
"company_name": "BMW",
"trust_score": 74,
"risk_level": "MEDIUM",
"breakdown": {
"rating_quality": 22.2,
"sentiment": 12.5,
"volume": 20.0,
"consistency": 9.0,
"recency": 10.0
}
}

Unternehmen auflisten

POST /api/agent/list-companies

Anfrage:

{
"country": "de",
"limit": 10,
"sort_by": "trust_score"
}

Unternehmen vergleichen

POST /api/agent/compare-companies

Anfrage:

{
"company1": "BMW",
"company2": "Audi"
}

Analyse durchführen

POST /api/agent/run-analysis

Anfrage:

{
"company_name": "Spotify",
"country": "de"
}

Antwort:

{
"action": "Analyse_gestartet",
"company_name": "Spotify",
"company_slug": "spotify-ab1",
"scraping_jobs": ["uuid1", "uuid2", "uuid3", "uuid4"],
"message": "🚀 Analyse gestartet!"
}

Unternehmensbewertungen abrufen

POST /api/agent/get-reviews

Anfrage:

{
"company_name": "BMW",
"sentiment": "positive",
"limit": 5
}

Scraping-Endpunkte

Magische Suche

POST /api/scraping/magic-search

Anfrage:

{
"company_name": "Spotify",
"country": "de",
"months_back": 24
}

Job-Status abrufen

GET /api/scraping/jobs/JOB_ID

Antwort:

{
"job_id": "uuid",
"status": "läuft",
"source": "kununu",
"company_name": "Spotify",
"reviews_collected": 156,
"progress_percent": 78
}

Alle Jobs auflisten

GET /api/scraping/jobs

Aktive Jobs auflisten

GET /api/scraping/jobs/active

Job-Steuerung

POST /api/scraping/jobs/{job_id}/pause
POST /api/scraping/jobs/{job_id}/resume
POST /api/scraping/jobs/{job_id}/cancel

Worker auslösen (geschützt)

POST /api/scraping/trigger-worker

Auth erforderlich: X-Internal-Key oder X-Admin-Token Rate Limit: 5/minute


Analyse-Endpunkte

Unternehmensstatistiken abrufen

GET /api/stats?company=BMW

Stimmungsverteilung

GET /api/sentiment-distribution?company=BMW

Antwort:

{
"distribution": [
{ "label": "POSITIVE", "count": 2810 },
{ "label": "NEGATIVE", "count": 1960 },
{ "label": "NEUTRAL", "count": 851 }
]
}

Bewertungsverteilung

GET /api/rating-distribution?company=BMW

Bewertungen abrufen

GET /api/reviews?company=BMW&limit=50

Aspekte abrufen (ABSA)

GET /api/aspects?company=BMW

Antwort:

{
"aspects": [
{ "name": "Work-Life Balance", "positive": 120, "negative": 45 },
{ "name": "Salary", "positive": 80, "negative": 90 }
]
}

Stellenangebote abrufen

GET /api/vacancies?company=BMW

Zeitachse

GET /api/timeline?company=BMW

Berichte-Endpunkte

Bericht generieren

AI-Analyse für ein Unternehmen auslösen und Ergebnisse in der Datenbank speichern.

POST /api/analyze/{company_slug}

Antwort:

{
"status": "Erfolg",
"company": "BMW",
"analysis": {
"EXECUTIVE SUMMARY": "BMW zeigt eine hohe Mitarbeiterzufriedenheit...",
"STÄRKEN": "Work-Life-Balance, Karrieremöglichkeiten...",
"BEDENKEN": "Managementkommunikation, Arbeitsbelastung in einigen Abteilungen...",
"EMPFEHLUNGEN": "Fokus auf die Verbesserung der internen Kommunikation..."
}
}

Hinweise:

  • Die Analyse läuft in einem Hintergrund-Thread (asynchron)
  • Ergebnisse werden in der company_reports-Tabelle zwischengespeichert
  • Erneutes Auslösen überschreibt die vorherige Analyse

Bericht abrufen

GET /api/reports/{company_name}

Antwort (Auszug):

{
"company_name": "BMW",
"trust_score": 74,
"report_status": "cached"
}

PDF-Bericht herunterladen

GET /api/reports/download/{company_name}

Antwort: PDF-Datei-Download Header: X-Report-Status (ok, quality-degraded, no-data, fallback)


Krypto-Endpunkte

Krypto-Projekte suchen

GET /api/v2/crypto/search?q=QUERY

Krypto-Projekt abrufen

GET /api/v2/crypto/project/SLUG

Antwort:

{
"name": "Polkadot",
"symbol": "DOT",
"trust_score": 81,
"risk_level": "LOW",
"price_usd": 7.25,
"market_cap": 9500000000,
"tvl": 1200000000
}

Fehlerantworten

Alle Endpunkte geben Fehler in diesem Format zurück:

{
"detail": "Unternehmen nicht gefunden",
"status_code": 404
}

Gängige Statuscodes:

CodeBedeutung
200Erfolg
400Ungültige Anfrage
401Unautorisiert (fehlender API-Schlüssel)
404Nicht gefunden
429Ratenbegrenzung
500Serverfehler

Die API-Dokumentation ist auch unter /docs (Swagger UI) verfügbar.

Endpunkte des Forensik-Agenten

⚠️ Verfügbar über AI Chat oder Agenten-Tools - Diese Endpunkte treiben den Forensic Agent an

Wallet-Guthaben prüfen

POST /api/forensic/check_wallet

Anfrage:

{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
}

Antwort:

{
"address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"eth_balance": 32.1112,
"usd_value": 94241.62,
"eth_price": 2934.2,
"token_balances": [
{
"contract_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6,
"balance": 2500.0,
"balance_raw": 2500000000.0,
"token_price_usd": 1.0,
"usd_value": 2500.0
}
],
"found": true,
"chain": "ethereum"
}

Transaktionsverlauf abrufen

POST /api/forensic/transaction_history

Anfrage:

{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"limit": 10,
"days": 30
}

Antwort:

{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"transactions": [
{
"tx_hash": "0x123...",
"from": "0xabc...",
"to": "0xd8dA...",
"eth_value": 2.5,
"gas_price_gwei": 12.4,
"status": "success",
"timestamp": "2026-01-20T10:30:00Z",
"direction": "in"
}
],
"count": 5
}

Token-Inhaber abrufen

POST /api/forensic/token_holders

Anfrage:

{
"contract_address": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"limit": 20
}

Antwort:

{
"contract_address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"holders": [
{
"rank": 1,
"address": "0xf977814e90da44bfa03b6295a0616a897441acec",
"balance": 21951179974.29,
"balance_raw": 21951179974290000,
"usd_value": 21907277614.34
}
],
"count": 20,
"total_balance": 118490426863.74,
"decimals": 6,
"token_price_usd": 0.998,
"total_usd_value": 118253446010.01
}

Vertragsinformationen abrufen

POST /api/forensic/contract_info

Anfrage:

{
"contract_address": "0xdAC17F958D2ee523a2206206994597C13D831ec7"
}

Antwort:

{
"address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
"found": true,
"is_erc20": true,
"is_erc721": false,
"deployed_at": "2017-11-28T00:41:21+00:00",
"has_bytecode": true,
"is_verified_source": true,
"verification_source": "etherscan",
"verification_url": "https://etherscan.io/address/0xdac17f958d2ee523a2206206994597c13d831ec7#code",
"contract_name": "Tether USD"
}

Zustandsprüfung

GET /api/forensic/health

Antwort:

{
"status": "gesund",
"bigquery_available": true,
"coingecko_available": true
}