I spent a day testing every major Canadian city’s civic reporting API. I wanted to find one, just one, that would let me submit a service request programmatically and get a reference number back.
The result: zero.
What I tested
| City | Status | What Happened |
|---|---|---|
| Toronto | Retired Dec 2021 | Returns 403. Moved to Salesforce |
| Ottawa | Dead | DNS doesn’t resolve. Server deleted |
| Quebec City | Dead | SSL certificate expired |
| Surrey, BC | Dead | Returns 400 error |
| Vancouver | Never had one | Van311 app only |
| Calgary | Never had one | 311 app only |
| Edmonton | Never had one | Data explorer only |
| Montreal | Never had one | Phone/app only |
| Winnipeg | Never had one | No public API |
| Halifax | Never had one | Cityworks platform, email only |
I also tested SeeClickFix, which claimed partnerships with 10+ Canadian cities. Every city returned only “Post to Neighbors”, a generic community board, not a real 311 integration.
What about other countries?
UK, FixMyStreet emails 98% of councils. Custom API integrations exist for maybe 2% of councils, built over 15 years.
Australia, SnapSendSolve emails 850+ councils. Two-way API integration is the rare exception, not the rule.
The global reality
Most if not all of the world’s civic reporting infrastructure seems to be running on email. Not APIs. Not integrations. Email.
So who confirms an issue is actually fixed? Not the city, they don’t report back.
Citizens do.
What this means for SolveTO
I’m not waiting for cities to build APIs. I built my own reference number tracking system. Every SolveTO report gets a unique reference (like STO-A3F7K2) that you can look up anytime.
I email reports to the city’s 311 service and to the ward councillor. When the issue gets fixed, community members verify it, the same way FixMyStreet has worked for 18 years.
Cities can catch up when they’re ready. Until then, citizens don’t have to wait.