Baxly API
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.
A key is a password for the API. Make one per system using it, so you can revoke one without breaking the others.
Send your key on every call as Authorization: Bearer …. The survey ids below are your real ones.
curl -H "Authorization: Bearer bx_live_YOUR_KEY" \ https://api.brc.com/se/api/v1/surveys
curl -H "Authorization: Bearer bx_live_YOUR_KEY" \ https://api.brc.com/se/api/v1/surveys/YOUR-SURVEY-UUID
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"
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"
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"curl -H "Authorization: Bearer bx_live_YOUR_KEY" \ https://api.brc.com/se/api/v1/surveys/YOUR-SURVEY-UUID/lists
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/linksAlso: 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.
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…
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
TypedScheduled 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.
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.