Baxly API

Connect your systems to your surveys

Pull results into your own tools, and push item lists (products, brands, ads) into surveys so loops and list-based questions update automatically. Every example below is ready to paste into a terminal: create a key, copy a command, and you've made your first API call.

1 · Your API keys

A key is a password for the API. Make one per system using it, so you can revoke one without breaking the others.

2 · Try it

Send your key on every call as Authorization: Bearer …. The survey ids below are your real ones.

List your surveys

curl -H "Authorization: Bearer bx_live_YOUR_KEY" \
  https://api.brc.com/se/api/v1/surveys

Get a survey's questions

curl -H "Authorization: Bearer bx_live_YOUR_KEY" \
  https://api.brc.com/se/api/v1/surveys/YOUR-SURVEY-UUID

Download responses

100 at a time; pass the returned nextAfter as ?after= to get the next page. Test/sample responses are never included. Add ?status=all to include screened-out respondents.

curl -H "Authorization: Bearer bx_live_YOUR_KEY" \
  "https://api.brc.com/se/api/v1/surveys/YOUR-SURVEY-UUID/responses?limit=100"

Get aggregated results

The same numbers the Results tab shows: totals, every question's counts and percentages, means, MaxDiff scores, completes per day and the quality certificate. rows is a flat one-row-per-answer table for spreadsheets and dashboards. Add ?filter= for a segment (same format the Results view uses).

curl -H "Authorization: Bearer bx_live_YOUR_KEY" \
  "https://api.brc.com/se/api/v1/surveys/YOUR-SURVEY-UUID/results"

Push items into a list

Creates the list if it doesn't exist, replaces its items if it does. Any loop or list-based question using it picks the new items up automatically. This is how you keep a product / brand / ad list in sync from your own system.

curl -X PUT -H "Authorization: Bearer bx_live_YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"columns":["Name","Page","Image"],"items":[
    {"Name":"Acme Tools","Page":"12","Image":"https://…/acme.jpg"},
    {"Name":"Best Lumber","Page":"31","Image":"https://…/best.jpg"}
  ]}' \
  "https://api.brc.com/se/api/v1/surveys/YOUR-SURVEY-UUID/lists/Ads"

See a survey's lists

curl -H "Authorization: Bearer bx_live_YOUR_KEY" \
  https://api.brc.com/se/api/v1/surveys/YOUR-SURVEY-UUID/lists

Create a survey from a definition file

A definition is one JSON document describing the whole survey (pages, questions, logic, lists, loops, A/B variants, quotas, theme). The format is published for AI assistants at baxly.brc.com/survey-definition. Validate first; create returns the draft's uuid; publish makes the link live.

curl -X POST -H "Authorization: Bearer bx_live_YOUR_KEY" -H "Content-Type: application/json" \
  -d @my-survey.json https://api.brc.com/se/api/v1/surveys/validate

curl -X POST -H "Authorization: Bearer bx_live_YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"definition": '"$(cat my-survey.json)"'}' https://api.brc.com/se/api/v1/surveys

curl -X POST -H "Authorization: Bearer bx_live_YOUR_KEY" https://api.brc.com/se/api/v1/surveys/YOUR-SURVEY-UUID/publish
curl -H "Authorization: Bearer bx_live_YOUR_KEY" https://api.brc.com/se/api/v1/surveys/YOUR-SURVEY-UUID/links

Also: GET /surveys/:uuid/definition exports an existing survey as a definition, POST /surveys/:uuid/status with {"status":"paused"} pauses, resumes or closes, and openapi.json describes the whole surface for GPT Actions and code generators.

Connect your AI assistant directly (MCP)

Claude, ChatGPT, Gemini, Cursor and other assistants that take a remote MCP connector can build, publish and read surveys in this account without any file passing through you. Add a connector with this address. The assistant will send you here to sign in with Baxly and click Allow; no key to paste.

https://api.brc.com/se/mcp

Tools and scripts that cannot do a sign-in flow can use an API key instead, sent as a header:

Authorization:  Bearer bx_live_YOUR_KEY

A key-in-URL form exists for tools whose connector screen takes nothing but an address; it is off unless you tick “Allow this key inside a connector address” when creating a key.

The connector offers nine tools: get_rulebook, list_surveys, validate_survey, create_survey, get_survey_definition, publish_survey, set_survey_status, get_survey_links and get_survey_results. Surveys it creates are ordinary drafts you can still edit here, and publishing goes through the same checks as the Publish button.

Connected apps

Loading…

3 · Excel and Power BI: live results in your own dashboard

Excel and Power BI both read the API directly through Power Query, so a client can build their own dashboard that refreshes on demand. Pick a survey, copy the query, then in Power BI Desktop choose Get Data › Blank Query › Advanced Editorand paste (in Excel: Data › Get Data › From Other Sources › Blank Query). Replace the key if it shows a placeholder.

let
    ApiRoot = "https://api.brc.com/se/api/v1",
    ApiKey = "bx_live_YOUR_KEY",
    SurveyId = "YOUR-SURVEY-UUID",
    Source = Json.Document(Web.Contents(ApiRoot, [
        RelativePath = "surveys/" & SurveyId & "/results",
        Headers = [Authorization = "Bearer " & ApiKey]
    ])),
    Rows = Table.FromRecords(Source[rows]),
    Typed = Table.TransformColumnTypes(Rows, {
        {"questionNumber", Int64.Type}, {"count", Int64.Type}, {"base", Int64.Type}, {"percent", type number}
    })
in
    Typed

Scheduled refresh in the Power BI service: the key travels in a header, so set the data source credentials to Anonymousand tick Skip test connection; the query keeps using Web.Contents withRelativePath, which is what the service requires. Refresh is subject to the API rate limit (300 calls per 5 minutes per key), which a dashboard never reaches.

Zapier, Make and friends:use the webhooks below with a “Webhooks by Zapier” (or Make “Custom webhook”) trigger. Every completed response arrives as JSON within seconds, ready to become a row in Google Sheets, a card in Trello, or a message anywhere.

4 · Webhooks: we call you

Get an instant HTTPS POST to your URL every time a response completes (eventsresponse.completed andresponse.screened). Verify each call with theX-Baxly-Signature header: the HMAC-SHA256 of the raw body using your webhook secret (shown once below). Test respondents never fire webhooks.

The body carries the response id and, when the respondent is known, a contact block: their email and name, the id your own link put on the URL (?id=), the source tag, and any contact fields. That is enough for a Zapier or Make step to tag the person in your email platform when they finish. Mailchimp and HubSpot can also be connected directly on the Connections page, with no webhook needed.

{
  "event": "response.completed",
  "surveyUuid": "YOUR-SURVEY-UUID",
  "responseUuid": "3f1c…",
  "contact": {
    "email": "jane@example.com", "firstName": "Jane", "lastName": "Smith",
    "id": "jane@example.com", "source": "newsletter",
    "fields": { "title": "VP Marketing", "company": "Acme" }
  },
  "occurredAt": "2026-09-13T15:04:05.000Z"
}

Limits: 300 API requests per 5 minutes per key (HTTP 429 with Retry-After beyond that). A webhook delivery that fails is retried four more times over about seven hours; the latest result shows above. Coming next: per-survey webhooks in this UI and write access to survey structure. Something you need first? Tell us.

← All surveys