Tools kan använda en intern AI-motor ("OpenAI Engine") för att analysera innehåll och driva plattformsfunktioner – utan att någon API-nyckel någonsin exponeras i frontend.
Den här dokumentationen är en användarmanual och beskriver:
URL:
/admin/openaiKrav:
openai.manageI webgränssnittet kan du:
Model-dropdowns i /admin/openai är inte längre hårdkodade.
GET /v1/modelsallowed_models är satt så filtreras dropdownen vidare av allowlistenDet betyder att modellistan i admin bättre speglar vad den aktiva provider-nyckeln faktiskt kan använda, utan att någon nyckel exponeras i webbläsaren.
503, beroende på endpoint).Obs: Provider-nycklar hanteras under API Keys och visas aldrig i klartext.
Om Slack-audit-forwarding är aktiverad för OpenAI- / SocialGPT-kategorier innehåller auditposterna nu också:
user_id, och namn/e-post när det finns)error_reason när ett upstream-/provideranrop misslyckasDet gör det lättare för operatörer att se vem som utlöste ett AI-anrop och varför en misslyckad request avvisades.
Användare som har behörighet kan skapa en personlig bearer token:
/keys/mineAnvänds så här:
Authorization: Bearer <token>
Token fungerar för AI-endpoints (t.ex. /api/ai/url/analyze) och är kopplad till din användare + behörighet.
Tools stöder nu också andra personliga systemtoken (till exempel provider_ircwatch eller provider_mail_support_assistant) så länge de är:
is_ai=1)Viktig skillnad:
provider_openai är uppströmsproviderns secret som används mot OpenAI och behandlas aldrig som en AI-mottagartokenVanliga nya användare får inte längre använda OpenAI-baserade Tools-funktioner automatiskt bara för att ett dagligt budgettak finns.
Användarflöde:
/keys/mine/admin/openaiprovider_openai och kan därefter generera en Tools AI bearer-tokenAdminflöde:
/admin/openaiEndpoint:
POST /api/ai/url/analyzeSyfte:
Form data eller JSON:
url (required) — URL att analyseraquestion (optional) — fråga/fokus för analysenprofile (optional) — prompt-profil (default: URL Analyzer om den finns, annars minimal default)JSON:
ok — true/falserequest_id — intern request-idlatency_ms — ungefärlig svarstidmodel — vilken modell som användesresponse — model output (om ok)error — felmeddelande (om ok=false)För att använda endpointen krävs:
401 Unauthenticatedis_admin=1) → tillåts alltidprovider_openaiOm OpenAI provider saknas (ingen global provider_openai API key) returneras normalt 503.
Endpoint:
POST /api/ai/socialgpt/respondAuth / access-regler:
tools_ai_bearer-token fungerar fortfarandeapi_keys.is_ai=1)provider_openai)Om bearer-token tillhör en användare utan godkänd OpenAI-access returnerar endpointen 403.
Additiva requestfält för SocialGPT:
client_nameclient_versionclient_platformDe här fälten är valfria och låter Tools identifiera vilken klientbuild som gjorde requesten. Svaret kan också innehålla ett additivt client-objekt som ekar tillbaka accepterade metadata.
Notering om felhantering:
error som vanlig text.Säkerhetsbeteende:
.env-värden, lösenord, token, API-nycklar eller andra interna Tools-detaljer.Relaterade extension-endpoints:
GET /api/social-media-tools/extension/validate-tokenGET /api/social-media-tools/extension/testPOST /api/social-media-tools/extension/testViktig skillnad:
validate-token verifierar bara att den skickade personliga AI-kapabla tokenen är giltigtest kör ett riktigt OpenAI-baserat smoke test och kräver därför godkänd OpenAI-access för icke-adminDet gör att klienter kan skilja på "tokenet tillhör en riktig användare" och "den användaren får faktiskt köra OpenAI-anrop just nu".
curl -X POST "https://tools.tornevall.net/api/ai/url/analyze" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <TOKEN>" \
-d '{
"url": "https://example.com",
"question": "What is this page about?",
"profile": "URL Analyzer"
}'
Endpoint:
GET /api/social-media-tools/extension/modelsSyfte: