Start here
- 1Open Dashboard → Integrations. Each connection shows its status, a tick or cross per capability, and the last error in full.
- 2Press Test (connectors) or Connect & test (Account Connect) to re-run the check with the test customer — nobody is contacted.
- 3Find the exact message in the tables below.
- 4Check your Activity Log: every connect, test and disconnect is recorded.
- 5Still stuck? Email support@siluxcall.co.uk with the connection name and the message (never the key).
HTTP status codes
| Status | Meaning | Typical cause | Fix |
|---|---|---|---|
| 200 + success:true | It worked | — | — |
| 200 + success:false | A normal “no” | Details don’t match, wrong or expired code, system temporarily unavailable | Read message; see the next table |
| 400 | Bad input (dashboard) | A required setting or key is missing or malformed | Correct the field named in the message |
| 401 | Not authorised | Missing/wrong X-API-Key, or an unknown/expired session_token | Check the key and header name; verify the customer again |
| 404 | Not found | Unknown connector, connection or path | Check the base address and connection |
| 409 | Not available yet | OAuth sign-in for a vendor whose Silux Chat app is not registered | Use an API key where the vendor offers one, or contact us |
| 422 | Invalid JSON body | Body not JSON, or a field of the wrong type | Send Content-Type: application/json with the documented fields |
| 429 | Rate limited | Too many requests in a short time | Slow down; honour Retry-After |
| 5xx | Server error | A fault on the server that returned it | Retry later; tell us if it persists |
Verification messages
These are the exact message strings returned by the platform’s connector endpoints (/api/connect/{id}/…). Your own Account Connect implementation should use the same wording; the reference implementations do.
| Message | HTTP | Meaning | What to do |
|---|---|---|---|
We could not match those details to an account. | 200 | No customer with that name plus a matching postcode, email or mobile | Check the record in your system; see Empty results below |
That code is not correct. | 200 | Wrong code; attempts remain | The customer retypes the code |
Too many wrong codes — please ask for a new one. | 200 | Fifth wrong code; the code is voided | Start verification again for a new code |
That code has expired — please ask for a new one. | 200 | Unknown, used or older than 10 minutes | Start verification again |
We can't check accounts right now — our team has been told. with system_error: true | 200 | The vendor refused or failed the lookup; the connection is marked failing | Reconnect or fix the credentials; see Vendor errors |
We found the account but have no mobile or email on it to send a code to — please contact us directly. | 200 | The record has no usable contact details, or both text and email failed | Add a mobile or email to the customer record |
Session expired — please verify again. | 401 | Session unknown or older than 30 minutes | The bot re-verifies the customer |
Missing or wrong X-API-Key | 401 | Account Connect / connector endpoint called without the right key | Check the key and the header name |
<Name> can't be used to check who you are — it holds no customer records with a name and email to match. Please contact us directly. with not_supported: true | 200 | verify-identity on a connector with neither a customer search nor records that name the customer (e.g. a carrier, Trello) | Verify customers with another connector or Account Connect |
To check your details I need your full name and the email address you used with us. with needs | 200 | A connector that verifies from the customer’s own orders/bookings was sent no valid email | The bot asks for the email |
That doesn't look like a tracking number — … | 200 | order-status: the tracking number is shorter than 8 characters or has no digits | Ask for the number from the dispatch email or text |
Looking an order up by its order number needs the customer to be verified first. … with needs_verification: true | 200 | order-status by order number without a verified session of that connection | Verify the customer, or use the tracking number |
We can't check tracking right now — our team has been told. with system_error: true | 200 | The courier refused or failed the lookup | Reconnect or fix the credentials |
{"detail":"Invalid API key"} | 401 | Platform API (e.g. /api/chatbot-api/*, /api/sandbox/*) called with a wrong tenant key | Copy the key again from Dashboard → API Settings |
“Can't check” is never “not found”
If a lookup fails for a technical reason, the customer is told the system is unavailable — never that they have no account or no orders. If you see this message, the fault is in the connection, not the customer.
Error body shapes
Normal “no” answers are flat JSON. A 401 raised by the platform is wrapped in FastAPI’s detail envelope. Code that reads the reply should accept both:
{"success": false, "message": "That code is not correct."}{"detail": {"success": false, "message": "Session expired — please verify again."}}When you build your own endpoints, either shape is fine for a 401 — the platform acts on the status code.
Dashboard connect errors
| Message | Cause | Fix |
|---|---|---|
Enter the <label> | A required setting or secret was left blank | Fill in the named field |
That <label> doesn't look right — e.g. <example> | The value does not match the expected format (for example a Shopify domain must end .myshopify.com) | Copy the value from the vendor admin in the format shown; https:// and trailing slashes are removed for you |
<Name> connects by signing in — use the Connect with <Name> button | An OAuth-only vendor was given keys | Press Sign in with <Name> |
Silux Chat's <Name> app is not registered yet — … | 409 — our app with that vendor is not yet approved | Use an API key where the vendor offers one, or email us and we will tell you when it is ready |
This connector holds no customer records with a name and email to check, so it can't verify customers | Use to verify customers pressed on a connector with no customer search and no records naming the customer (e.g. a carrier, Trello) | Verify customers with another connector or Account Connect; a carrier can still answer by tracking number — press Use for tracking |
This connector has no tracking look-up | Use for tracking pressed on a connector without order tracking | Use a courier or shipping connector |
That address can't be used: … | Account Connect base address is private, internal or malformed | Use a public HTTPS address |
Enter the API key your system expects | Account Connect key left blank | Enter the key |
Vendor errors
| Error shown | Meaning | Fix |
|---|---|---|
the vendor refused the credentials (401) | The key or token is wrong, revoked or expired | Create a new key in the vendor admin and reconnect |
the vendor refused the credentials (403) | The key works but lacks a read permission/scope, or the plan does not include API access | Grant the read scopes listed on the connector page, then reconnect |
vendor error 404: … | Wrong store/site/region/account setting — or simply no such customer | Check the settings; for a made-up customer a 404 counts as working |
vendor error 4xx/5xx: … | The vendor rejected or failed the request; the first 200 characters of its reply are shown | Read the vendor’s message; retry later for 5xx |
the vendor kept rate-limiting the request | HTTP 429 three times in a row. Each 429 is retried after the vendor’s Retry-After (up to 10 seconds) | Reduce other traffic on the same key, or ask the vendor for a higher limit |
| Timeout | Each vendor call is allowed 15 seconds | Check the vendor’s status page |
this connector is no longer available | The connector was withdrawn from the catalogue | Contact us for an alternative |
How connection tests work
- When you connect, press Test, or the daily check runs, the platform makes a real, read-only call for every capability using a customer who does not exist:
connection-test@example.com, mobile07700900999. - Working credentials give an empty answer (or a 404 “not found”), which counts as a pass. Wrong or revoked credentials give a refusal, which counts as a fail.
- The connection shows working if at least one capability passes; the per-capability ticks show exactly which ones work. It shows failing only when none do.
- When the bot’s chained test sends the test customer (
Test Customer/TE5 7ST) through a connector, it runs this probe instead of looking anyone up, issues code123456, and the account endpoints reply with"test": trueand no customer data.
Account Connect test failures
| What the dashboard shows | Fix |
|---|---|
| Verify Identity ✗ “no otp_token returned” | Step 1 must reply {"success": true, "otp_token": "..."} for the test customer Test Customer / TE5 7ST. |
| Verify OTP ✗ “no session_token returned” | The test customer’s code must be 123456, and step 2 must reply {"success": true, "session_token": "..."}. |
| Verify OTP — “skipped — step 1 failed” | Fix step 1 first. |
| Account Summary ✗ “failed: 401” | The session_token from step 2 is not recognised — check your session store (a common cause is several workers with in-memory storage). |
| My Orders / My Invoices ✗ | The endpoint must return HTTP 200 with JSON and must not say "success": false. |
| Every step ✗ with 401 | The API key or header name on the dashboard does not match your system. |
| “That address can't be used” | The address must be public HTTPS, not an internal or private IP. |
Failed steps stay switched off, so the bot never uses a half-working chain. The full specification is in Build your own Account Connect endpoints.
Empty results
“We could not match those details” or an empty list for a customer you know exists usually has one of these causes:
| Cause | Check |
|---|---|
| Wrong store, site, region or account | The settings on the connection point at a test or different store |
| Looked up by email or mobile — not postcode | Connectors find the customer by email, then mobile. A customer who gives only name + postcode cannot be found; the bot asks for an email or mobile. Connectors with no customer search (Cal.com, Etsy, eBay, AfterShip…) match on the customer’s own orders or bookings by email only |
| Email not on the record | The customer used a different email with you than the one they typed |
| Name mismatch | The surname must match exactly and the first name must match or begin with the same letter (“Jan Smith” matches “Jane Smith”; “Jane Smyth” does not). Single letters are ignored, so an initial on its own (“J Smith”) is not enough — ask for the first name |
| Phone format | Numbers compare on the last ten digits, so 07700 900123 and +44 7700 900123 match — but a landline on the record will not match a mobile |
| Missing permission | The key can read customers but not orders or invoices — the capability shows a cross |
| Record belongs to someone else | Rows carrying another customer’s email are deliberately dropped |
KEY=demo-account-connect-key
V=https://www.siluxchat.com/api/account-connect-demo/v1/vendor
# A customer who isn't there: an empty list, not an error (this is what a passing connection test looks like)
curl -s "$V/customers?email=nobody@example.com" -H "X-API-Key: $KEY"
# The same customer by mobile in international format: phone numbers match on the last ten digits
curl -s "$V/customers?phone=%2B447700900001" -H "X-API-Key: $KEY"{"customers":[]}
{"customers":[{"id":"C1002","first_name":"Jane","last_name":"Demo","email":"jane.demo@example.com","phone":"07700900001","address":{"postcode":"SW1A 1AA"}}]}Codes not arriving
- Where it goes: by text to the mobile on the record where your plan includes SMS; otherwise, or if the text cannot be sent, by email to the address on the record. The reply says which (“Code sent by a text to the mobile ending 123”, or a masked email).
- No contact details on the record produce the “no mobile or email” message — add one in your system.
- Old number on file: the code goes to the number your system holds, never one the customer types. Update the record.
- Demo and test customers are never contacted; their code is always
123456. - Your own endpoints: check your SMS provider’s delivery log and sender-ID rules.
OAuth sign-in results
After signing in with a vendor you are returned to /dashboard?tab=integrations&connector=…:
| connector= | Meaning | Next step |
|---|---|---|
| ok | Signed in and tested | Nothing — it is live |
| failing | Signed in, but the test call was refused | Check the account has access to the data, then Test again |
| cancelled | Sign-in was declined or cancelled at the vendor | Start again and approve access |
| failed | The vendor refused to issue a token | Try again; if it repeats, contact us |
| expired | The sign-in link was stale or already used | Start the sign-in again from the dashboard |
Daily health check
Every active connection is re-tested once a day. If a connection that was working starts failing — typically a revoked key or an expired sign-in — the account owner receives one email: “Your <Name> connection has stopped working”, with the reason. Until it is reconnected the bot tells customers it can’t check their account right now, rather than implying they have nothing on record.
Diagnostics with curl
Run these against the demo to see correct behaviour, then set BASE and KEY to your own Account Connect address and key and compare.
BASE=${BASE:-https://www.siluxchat.com/api/account-connect-demo/v1}
KEY=${KEY:-demo-account-connect-key}
# 1. Is the platform reachable? (expect 200)
curl -s -o /dev/null -w "%{http_code}\n" https://www.siluxchat.com/api/connectors/catalogue
# 2. Missing key (expect 401)
curl -s -w " %{http_code}\n" -X POST $BASE/verify-identity \
-H "Content-Type: application/json" -d '{"full_name":"Test Customer","postcode":"TE5 7ST"}'
# 3. The test customer (expect success:true and an otp_token)
curl -s -w " %{http_code}\n" -X POST $BASE/verify-identity -H "X-API-Key: $KEY" \
-H "Content-Type: application/json" -d '{"full_name":"Test Customer","postcode":"TE5 7ST"}'
# 4. Wrong details (expect 200 with success:false)
curl -s -w " %{http_code}\n" -X POST $BASE/verify-identity -H "X-API-Key: $KEY" \
-H "Content-Type: application/json" -d '{"full_name":"Test Customer","postcode":"AB1 2CD"}'
# 5. Unknown or expired code token (expect 200 with success:false)
curl -s -w " %{http_code}\n" -X POST $BASE/verify-otp -H "X-API-Key: $KEY" \
-H "Content-Type: application/json" -d '{"otp_token":"expired-or-made-up","otp_code":"123456"}'
# 6. Unknown or expired session (expect 401)
curl -s -w " %{http_code}\n" -X POST $BASE/orders -H "X-API-Key: $KEY" \
-H "Content-Type: application/json" -d '{"session_token":"expired-or-made-up"}'200
{"detail":{"success":false,"message":"Missing or wrong X-API-Key"}} 401
{"success":true,"otp_token":"eyJrIjoib3RwIiwiYyI6IkMxMDAxIiwi…","message":"Code sent to mobile ending 000"} 200
{"success":false,"message":"We could not match those details to an account."} 200
{"success":false,"message":"That code has expired — please ask for a new one."} 200
{"detail":{"success":false,"message":"Session expired — please verify again."}} 401The demo key
The demo uses demo-account-connect-key and fictional customers only. More in Testing with the live demo.
FAQ
Why does my connection say working when orders show a cross?
A connection is working if any capability passes. Orders failing usually means the key lacks the orders read permission — grant it and press Test.
Will a failed test text or email anyone?
No. Tests use a made-up customer or the test customer, and neither is ever contacted.
The bot asked the customer to verify again mid-conversation.
Sessions last 30 minutes. After that, account endpoints return 401 and the bot starts a fresh verification.
We rotated our vendor key and the bot stopped answering.
Enter the new key: disconnect and reconnect the connector (the old key is destroyed), or re-run Connect & test for Account Connect.
Can I see what the vendor actually returned?
The dashboard shows the last error in full. For your own endpoints, your server logs are the source of truth — log status codes and outcomes, never codes or tokens.
Get help
Send us the message, not the key
Email support@siluxcall.co.uk with the connector or base address, the exact message and roughly when it happened. We can see test results for your account and will take it from there.
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.