WhereGoingWhereGoing
  • Pricing
  • Docs
  • Blog

Docs

What it isHow to use itAPIUse your own agent

API

Create surveys and named recipients with an API key. The API does not send invite email — send from the dashboard.

Create an API key under Settings → API keys. Send it as Authorization: Bearer <key>.

Environment variable name: WHEREGOING_API_KEY (alias: WHEREGOING_TOKEN).

Base URL: https://wheregoing.com/api/v1

{id} in paths accepts the survey id or slug.

The API does not send email. Every recipient object includes a url. Send invites from the dashboard Recipients tab. The default-locale URL is /s/{slug}/{recipientId}; Chinese pages are at /zh/s/{slug}/{recipientId}.

Create a survey

curl -X POST https://wheregoing.com/api/v1/surveys \
  -H "Authorization: Bearer $WHEREGOING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "targetCompany": "Acme",
    "title": "Wanted to ask Acme about this workflow",
    "description": "A 3-minute research survey. No right answers — actual experience only.",
    "questions": [
      {
        "type": "multiple_choice",
        "label": "Where does customer data live today?",
        "required": true,
        "options": ["Excel / CSV", "ERP", "CRM", "Google Sheets"],
        "allowOther": true
      },
      {
        "type": "linear_scale",
        "label": "How painful is cleaning that data today?",
        "required": true,
        "scaleMin": 1,
        "scaleMax": 10,
        "scaleMinLabel": "Fine",
        "scaleMaxLabel": "Unworkable"
      }
    ],
    "recipients": [
      {
        "targetCompany": "Acme",
        "email": "[email protected]",
        "title": "Wanted to ask Acme about this workflow",
        "accentColor": "#315c4c"
      }
    ]
  }'

The response includes survey.recipients[].url — that is the unique public page.

List and read

curl https://wheregoing.com/api/v1/surveys \
  -H "Authorization: Bearer $WHEREGOING_API_KEY"

curl https://wheregoing.com/api/v1/surveys/{id} \
  -H "Authorization: Bearer $WHEREGOING_API_KEY"

Update a survey

PATCH /api/v1/surveys/{id} with any subset of title, description, welcomeMessage, logoUrl, accentColor, questions, recipients.

Replacing recipients overwrites the list. To add people without dropping existing ones, use the endpoint below.

Optional on create: slug, published, notifyOnResponse, notificationEmail. Invite copy belongs on each recipient (inviteTop, inviteBottom, inviteSignOff). Duplicate slug returns 409.

Add recipients

curl -X POST https://wheregoing.com/api/v1/surveys/{id}/recipients \
  -H "Authorization: Bearer $WHEREGOING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "skipExisting": true,
    "recipients": [
      { "targetCompany": "Northwind", "email": "[email protected]" }
    ]
  }'

Matched by id or email. Default is upsert. skipExisting: true leaves existing rows unchanged (keeps inviteSentAt). Response includes added, updated, skipped. Max 200 per survey.

Read responses

curl https://wheregoing.com/api/v1/surveys/{id}/responses \
  -H "Authorization: Bearer $WHEREGOING_API_KEY"

Question types

short_text, long_text, single_choice, multiple_choice, dropdown, linear_scale, rating, multiple_choice_grid, checkbox_grid, date, time.

Choice questions take options. Linear scale: scaleMin 0 or 1, scaleMax 2–10.

Errors

StatusMeaning
401Missing or invalid API key
400Payload failed validation (details from Zod)
404Survey not found for this key
409slug already in use
429API key rate limit exceeded

A prompt you can paste into an agent is on the agent page.

WhereGoingWhereGoing

Branded customer research. One unique link, their company's page.

Product
  • Pricing
  • Documentation
  • Blog
Legal
  • Privacy Policy
  • Terms of Service
© 2026 WhereGoing. All Rights Reserved.