Authentication & samples
Every request must carry an Authorization: Bearer <token> header obtained from POST /api/v1/auth/login.
Python example
# keensafe-quickstart.py (LAB SAMPLE)
import requests
API_BASE = "https://api.keensafeglobalbank.com/v1"
API_KEY = "ks-pub-FAKE-7d2c0a3b1e8f9c2d3f4a5b6c7d8e9f0a" # ← fake/lab key
# Get an access token
r = requests.post(
f"{API_BASE}/auth/login",
data={"email": "customer1@keensafeglobalbank.com", "password": "Customer123!"},
headers={"X-Partner-Key": API_KEY},
)
token = r.json()["access_token"]
# Read an account
r = requests.get(f"{API_BASE}/accounts/1", headers={"Authorization": f"Bearer {token}"})
print(r.json())
cURL
curl -s https://api.keensafeglobalbank.com/v1/auth/login \
-d email=customer1@keensafeglobalbank.com \
-d password=Customer123! \
-H "X-Partner-Key: ks-pub-FAKE-7d2c0a3b1e8f9c2d3f4a5b6c7d8e9f0a"
AWS upload helper
# Required if you upload artefacts to our partner bucket.
export AWS_ACCESS_KEY_ID=AKIAFAKEKEYONLY12345
export AWS_SECRET_ACCESS_KEY=FAKEsecret/Lab+OnlyDoNotUseInProductionAA
export AWS_DEFAULT_REGION=eu-west-1
aws s3 cp ./report.csv s3://keensafe-public-assets-eu-west-1/incoming/
Internal-only endpoints (do not call from partner code):
https://api-staging.internal.keensafeglobalbank.com/v1/internal/statushttps://jenkins.internal.keensafeglobalbank.com/job/api-deploy/https://vault.internal.keensafeglobalbank.com/v1/secret/api-keys