Overview
The demo behaves like a real customer system with two deliberate differences: the one-time code is always 123456, and no text message or email is ever sent. Use it to learn the flow, to test your HTTP client, and to see Auto Trainer’s chained test pass in your own dashboard before your endpoints exist.
verify-identity {full_name + postcode/email/mobile} → otp_token (code "sent" — really 123456)
verify-otp {otp_token, otp_code: "123456"} → session_token (valid 30 minutes)
account-summary {session_token} → account
orders {session_token} → orders[]
invoices {session_token} → invoices[]Demo details
| Setting | Value |
|---|---|
| Base address | https://www.siluxchat.com/api/account-connect-demo/v1 |
| API key header | X-API-Key |
| API key | demo-account-connect-key |
| One-time code | 123456 (never sent) |
| Code lifetime | 10 minutes |
| Session lifetime | 30 minutes |
Test customers
| Name | Postcode | Mobile | Account | Data | |
|---|---|---|---|---|---|
| Test Customer | TE5 7ST | test@example.com | 07700900000 | C1001 | Business Phone Line, £19.95/month, balance £0.00; one dispatched order (ORD-50231, Royal Mail Tracked 48); two paid invoices |
| Jane Demo | SW1A 1AA | jane.demo@example.com | 07700900001 | C1002 | Unlimited Calls Bundle, £29.95/month, balance £29.95; no orders; one unpaid invoice (INV-7790, £29.95) |
Match on the full name plus any one of the postcode, email or mobile. Case and spaces are ignored, so test customer / te57st also match.
The same test customer everywhere
Test Customer / TE5 7ST / code 123456 is also the customer your own Account Connect implementation must recognise — it is how the dashboard tests your chain without texting anyone.End-to-end scripts
Each script verifies a customer, exchanges the code for a session and reads the account, orders and invoices. All four were run against the live demo before publishing. The bash version uses python3 to read JSON; substitute jq -r .otp_token if you prefer.
#!/usr/bin/env bash
set -euo pipefail
BASE=https://www.siluxchat.com/api/account-connect-demo/v1
KEY=demo-account-connect-key
# 1. Verify identity: full name + one more detail
OTP=$(curl -s -X POST "$BASE/verify-identity" \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{"full_name":"Test Customer","postcode":"TE5 7ST"}' \
| python3 -c 'import sys,json; print(json.load(sys.stdin)["otp_token"])')
echo "otp_token: ${OTP:0:24}..."
# 2. Verify the one-time code (always 123456 in the demo)
SESSION=$(curl -s -X POST "$BASE/verify-otp" \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d "{\"otp_token\":\"$OTP\",\"otp_code\":\"123456\"}" \
| python3 -c 'import sys,json; print(json.load(sys.stdin)["session_token"])')
echo "session_token: ${SESSION:0:24}..."
# 3. Read the verified customer's data
for EP in account-summary orders invoices; do
echo "== $EP"
curl -s -X POST "$BASE/$EP" \
-H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d "{\"session_token\":\"$SESSION\"}"
echo
doneotp_token: eyJrIjoib3RwIiwiYyI6IkMx...
session_token: eyJrIjoic2Vzc2lvbiIsImMi...
== account-summary
{"success":true,"account":{"account_number":"C1001","status":"active","plan":"Business Phone Line — 12 months","monthly_price":"£19.95","contract_end":"2027-03-31","balance_due":"£0.00","name":"Test Customer"}}
== orders
{"success":true,"orders":[{"order_number":"ORD-50231","placed":"2026-09-20","status":"dispatched","courier":"Royal Mail Tracked 48","tracking":"TT123456789GB"}]}
== invoices
{"success":true,"invoices":[{"invoice":"INV-7781","date":"2026-09-01","amount":"£19.95","status":"paid"},{"invoice":"INV-7702","date":"2026-08-01","amount":"£19.95","status":"paid"}]}Step by step
1. Verify identity
curl -s -X POST "https://www.siluxchat.com/api/account-connect-demo/v1/verify-identity" \
-H "X-API-Key: demo-account-connect-key" \
-H "Content-Type: application/json" \
-d '{"full_name":"Jane Demo","email":"jane.demo@example.com"}'{
"success": true,
"otp_token": "eyJrIjoib3RwIiwiYyI6IkMxMDAyIiwiZXhwIjoxNzkwNDE2NTc2LjIyOTcxNjN9.962dec66dc64f449593e38db62894354",
"message": "Code sent to mobile ending 001"
}2. Verify the code
# export OTP=<otp_token from step 1>
: "${OTP:?export OTP first}"
curl -s -X POST "https://www.siluxchat.com/api/account-connect-demo/v1/verify-otp" \
-H "X-API-Key: demo-account-connect-key" \
-H "Content-Type: application/json" \
-d "{\"otp_token\":\"$OTP\",\"otp_code\":\"123456\"}"{
"success": true,
"session_token": "eyJrIjoic2Vzc2lvbiIsImMiOiJDMTAwMiIsImV4cCI6MTc5MDQxNzc3Ni4yNTc3NTE1fQ.738a53355bc2bbce104f1f4f422428b9"
}3. Read the account, orders and invoices
# export SESSION=<session_token from step 2>
# The same body works for /account-summary and /orders.
: "${SESSION:?export SESSION first}"
curl -s -X POST "https://www.siluxchat.com/api/account-connect-demo/v1/invoices" \
-H "X-API-Key: demo-account-connect-key" \
-H "Content-Type: application/json" \
-d "{\"session_token\":\"$SESSION\"}"{
"success": true,
"account": {
"account_number": "C1002",
"status": "active",
"plan": "Unlimited Calls Bundle — 24 months",
"monthly_price": "£29.95",
"contract_end": "2028-01-15",
"balance_due": "£29.95",
"name": "Jane Demo"
}
}{"success": true, "orders": []}
{
"success": true,
"invoices": [
{"invoice": "INV-7790", "date": "2026-09-01",
"amount": "£29.95", "status": "unpaid"}
]
}An empty list is a valid, successful answer: the bot tells Jane she has no orders rather than guessing.
The demo vendor API
Alongside the Account Connect endpoints, the demo exposes a small read-only “vendor” API shaped like a typical shop platform. It is what the Silux Demo Store connector reads, and it is a convenient target for testing your own HTTP tooling. All three are GET requests with the same X-API-Key.
/vendor/customers?email=… or ?phone=…X-API-KeyFinds customers by exact email, or by the last 10 digits of a phone number.
curl -s "https://www.siluxchat.com/api/account-connect-demo/v1/vendor/customers?phone=07700900000" \
-H "X-API-Key: demo-account-connect-key"{
"customers": [
{"id": "C1001", "first_name": "Test", "last_name": "Customer", "email": "test@example.com",
"phone": "07700900000", "address": {"postcode": "TE5 7ST"}}
]
}/vendor/orders?customer_id=…X-API-KeyOrders for a customer ID. An unknown ID returns {"orders": []}, not an error.
curl -s "https://www.siluxchat.com/api/account-connect-demo/v1/vendor/orders?customer_id=C1001" \
-H "X-API-Key: demo-account-connect-key"{
"orders": [
{"order_number": "ORD-50231", "placed": "2026-09-20", "status": "dispatched",
"courier": "Royal Mail Tracked 48", "tracking": "TT123456789GB"}
]
}/vendor/invoices?customer_id=…X-API-KeyInvoices for a customer ID.
curl -s "https://www.siluxchat.com/api/account-connect-demo/v1/vendor/invoices?customer_id=C1002" \
-H "X-API-Key: demo-account-connect-key"{"invoices": [{"invoice": "INV-7790", "date": "2026-09-01", "amount": "£29.95", "status": "unpaid"}]}The demo connector
To see the complete connector experience — connection test, customer verification and live answers — in your own dashboard:
- 1Open Dashboard → Integrations → Connectors and search for Silux Demo Store (try it).
- 2Enter the key
demo-account-connect-keyand press Connect & test. You should see “Connected — a real call to the vendor worked” with ticks for Verify customers, Orders and Invoices. - 3If you have no other customer verification set up, it is used to verify customers automatically; otherwise press Use to verify customers.
- 4Open your chat widget and ask “have I paid my last invoice?”. Give the name
Jane Demoand the emailjane.demo@example.com, then the code123456. The bot reads back the unpaid £29.95 invoice. - 5Disconnect it when you have finished so your real system takes over.
Negative tests
A good integration handles “no” answers as carefully as “yes” answers. All of these were captured from the live demo.
| Test | Status | Response |
|---|---|---|
| Name only, no second detail | 200 | {"success":false,"message":"We could not match those details to an account."} |
| Right name, wrong postcode | 200 | {"success":false,"message":"We could not match those details to an account."} |
| Wrong code | 200 | {"success":false,"message":"That code is not correct."} |
| Expired or made-up otp_token | 200 | {"success":false,"message":"That code has expired — please ask for a new one."} |
| Missing or wrong X-API-Key | 401 | {"detail":{"success":false,"message":"Missing or wrong X-API-Key"}} |
| Expired or made-up session_token | 401 | {"detail":{"success":false,"message":"Session expired — please verify again."}} |
curl -s -X POST "https://www.siluxchat.com/api/account-connect-demo/v1/verify-identity" \
-H "X-API-Key: demo-account-connect-key" \
-H "Content-Type: application/json" \
-d '{"full_name":"Jane Demo","postcode":"XX1 1XX"}'curl -s -X POST "https://www.siluxchat.com/api/account-connect-demo/v1/account-summary" \
-H "X-API-Key: demo-account-connect-key" \
-H "Content-Type: application/json" \
-d '{"session_token":"nope"}'The demo does not count wrong codes — yours must
The demo’s tokens are signed and stateless, so it cannot count attempts. Your implementation must allow at most 5 wrong codes perotp_token and then refuse it. Connections made through our connectors enforce this for you. See Customer identity verification & OTP.Pacing and good practice
- Keep automated tests gentle: a few requests per second at most, and back off if you ever receive
429. - Do not load-test the demo. It exists for learning and functional testing.
- Never put real customer data into the demo — it only knows its two fictional customers.
- The
otp_tokenandsession_tokenvalues are opaque: store and send them back exactly, and never parse them. Your own tokens may look completely different. - Set a client timeout (15 seconds is what the platform itself uses) and treat a timeout as “can’t check right now”, never as “no account”.
Get help
If a demo request behaves differently from this page, or you would like us to watch a test run against your own endpoints, email support@siluxcall.co.uk.
Need help with your integration?
Our integration team can review your endpoints, help you choose the right connector and check a test run with you. Tell us which system you use and what you would like the bot to answer.