🔌

Developer API

Report open slots from your own scripts. One endpoint, an API key, JSON in — validated and trust-weighted exactly like a report from the app. We never touch any visa portal; you report what you saw.

Get an API key

Access is reviewed by hand to keep the data clean — tell us your email and what you’re building, and if approved we’ll email your key. It’s tied to your identity, so programmatic reports build the same trust as your in-app ones; revoke anytime.

Request an API key

Manually reviewed. We store your email only to send the key — encrypted, never linked to your reports.

Submit a report

POST https://visaslotradar.com/api/v1/reports

curl -X POST https://visaslotradar.com/api/v1/reports \
  -H "Authorization: Bearer $SLOTRADAR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "consulate": "MUM",
    "visa_type": "H1B",
    "appt_type": "interview",
    "slot_dates": [{ "date": "2026-07-18", "period": "morning" }]
  }'

Fields (all required except period)

  • consulate — one of MUM, DEL, CHE, HYD, KOL, FRA, LON, TOR, SIN
  • visa_type — one of H1B, H1B_DROP, H4, L1, F1
  • appt_type — one of interview, vac
  • slot_dates — array of { date, period? }; date is UTC YYYY-MM-DD, must be today or later; period is one of morning, afternoon, evening

Responses

Success — 201:

{ "status": "ok", "id": "…", "reported_at": "2026-07-01T09:00:00Z" }

Errors return { "error": "<code>", "message": "…" }:

  • 401 missing_api_key · invalid_api_key
  • 400 invalid_consulate · invalid_visa · invalid_appt · no_dates · past_dates · too_many_dates · invalid_json
  • 409 duplicate — same consulate + visa within 10 minutes
  • 429 rate_limited — slow down

Reports flow through the same corroboration + trust model as the app — a key from a brand-new identity contributes almost nothing until the crowd confirms it, so the API can’t be used to manufacture fake “Strong” signals. Never automate, scrape, or log into a government visa portal.

Building something bigger, or want to integrate deeper? Let’s collaborate →