Authentifizierung
Die API des AI Application Layer verwendet Bearer-Token-Authentifizierung. Jeder API-Aufruf muss einen gültigen Token im Authorization-Header enthalten.
API-Token erstellen
- In der Plattform-Oberfläche anmelden
- Oben rechts: Profil → API-Tokens
- “Neuen Token erstellen”
- Einen sprechenden Namen vergeben (z. B.
ci-pipeline-meine-app) - Token sofort kopieren — er wird danach nicht mehr im Klartext angezeigt
Token verwenden
Jeder API-Request benötigt den Header:
Authorization: Bearer <euer-token>Beispiel mit curl
# Token als Umgebungsvariable (sicher)export COOLIFY_TOKEN="<euer-token>"
curl -s https://coolai.btc-ag.cloud/api/v1/applications \ -H "Authorization: Bearer $COOLIFY_TOKEN"Beispiel mit Python
import httpximport os
token = os.environ["COOLIFY_TOKEN"]base_url = "https://coolai.btc-ag.cloud/api/v1"
headers = {"Authorization": f"Bearer {token}"}
response = httpx.get(f"{base_url}/applications", headers=headers)response.raise_for_status()print(response.json())Beispiel mit JavaScript/TypeScript
const token = process.env.COOLIFY_TOKEN;const baseUrl = "https://coolai.btc-ag.cloud/api/v1";
const response = await fetch(`${baseUrl}/applications`, { headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", },});
const apps = await response.json();Token in CI/CD-Systemen
Hinterlegt den Token als Secret in eurem CI/CD-System:
Gitea Actions:
# In .gitea/workflows/deploy.ymlsteps: - name: Deploy env: COOLIFY_TOKEN: ${{ secrets.COOLIFY_TOKEN }} run: | curl -s -X GET \ "https://coolai.btc-ag.cloud/api/v1/deploy?uuid=${{ secrets.APP_UUID }}" \ -H "Authorization: Bearer $COOLIFY_TOKEN"Repository → Settings → Secrets → “Neues Secret” → COOLIFY_TOKEN
Token rotieren
Wenn ein Token kompromittiert wurde oder ein Teammitglied das Unternehmen verlässt:
- Alten Token in der Plattform-Oberfläche löschen (Profil → API-Tokens)
- Neuen Token erstellen
- Neuen Token in allen CI/CD-Systemen und Scripts aktualisieren
Fehler bei der Authentifizierung
| HTTP-Status | Bedeutung |
|---|---|
401 Unauthorized | Token fehlt oder ist ungültig |
403 Forbidden | Token ist gültig, aber ohne Berechtigung für diese Ressource |
// Beispiel-Response bei 401{ "message": "Unauthenticated."}