Quickstart

This guide walks you through the three things you need to do to submit your first verification: get an account, generate an API key, and call POST /v1/verify with an image. The whole loop takes about five minutes.

What you'll need

A photo to upload (JPEG, PNG, or WebP, under 10 MB) and a terminal with curl. Anything that can speak HTTP works — we'll use curl for the examples but a Node, Python, Flutter, or React Native client works the same way.

1. Create an account

Sign up at verify.switchlabs.dev/signup. You'll land on the dashboard with a sandbox API key, a sample policy, and $5 of test credit ready to use. No credit card is required.

2. Generate an API key

From the dashboard, open Settings → API keys and click Create key. VerifyAI API keys start with the vai_ prefix:

bash
vai_live_8x9k2m4n7p3q5w8r1t6y2u4i9o0a3s
Keep keys server-side when possible

Treat API keys like passwords. If you must use a key inside a mobile app, rotate it regularly and monitor request volume from the dashboard. Never commit keys to a public repository.

3. Submit your first verification

Send a photo to POST /v1/verify. The request needs two things: an image and a policy ID. Use the built-in scooter_parking policy to start.

curl -X POST https://verify.switchlabs.dev/api/v1/verify \
-H "X-API-Key: vai_your_api_key" \
-F "image=@scooter.jpg" \
-F "policy=scooter_parking"

You'll get back a JSON object describing whether the image was compliant and why:

json
{
  "id": "ver_8x92m4k9",
  "created_at": "2026-05-12T14:30:00Z",
  "status": "success",
  "is_compliant": false,
  "confidence": 0.94,
  "policy": "scooter_parking",
  "category": "unsafe",
  "violation_reasons": ["blocking_sidewalk", "kickstand_up"],
  "feedback": "Please deploy the kickstand and move away from the walkway.",
  "metadata": {},
  "image_url": "https://...signed-url..."
}

That's the loop. Every verification:

  1. Runs through the configured policy (scooter_parking, bike_parking, forest_designated_bay, or any custom policy you've authored).
  2. Returns a structured category and human-readable feedback string you can show to the end user.
  3. Persists in the dashboard so you can audit decisions later.

What's next

  • Authentication — header format, key rotation, rate-limit headers.
  • Verify endpoint — full request and response schema, including JSON-with-base64 mode.
  • Concepts: Policies — how categories, criteria, and severities combine into a verification decision.
  • SDKs — drop in a scanner instead of writing your own camera UI.

Get in Touch

Questions about pricing, integrations, or custom deployments? We'd love to hear from you.