Skip to main content
TroopyDocs
Open Troopy
Troopy

API reference / Surveys

Make a survey

Makes a survey from a template, or as a copy of another survey. pmf asks how a customer would feel without the product, then three open questions, and comes again after 30 days. feedback asks what a customer likes, dislikes and wants built, one time. blank has no question. The new survey does not show: a change with active shows it. Owners and admins only. A workspace keeps 50 surveys.

post/api/v1/surveys

Authorization

HeaderAuthorization: Bearer <API key>
Or the headerX-API-Key: <API key>
API keyMake one in Troopy under Settings > API keys. It acts as you, in its workspace.

Other ways to call it

CLItroopy surveys add
MCP toolNone. Call it over REST or with the CLI.
Rate limit30 calls in 60 seconds, for each key
RetriesSend an Idempotency-Key header. A retry with the same key gets the first answer back, and the operation runs one time.

Body

application/json
namestring

The name of the survey. Without it: the name of the template, or of the copy

At least 1 characters · At most 80 characters

templateenum<string>

What the survey starts from. Without template and from: blank

pmffeedbackblank

fromstring

Another survey of the workspace: the new survey is a copy of its questions and its rules. It wins over template

Response

201 · application/json
data*object
14 properties
id*string

A 24-character id

name*string

The name of the survey, for the people of the business. Customers never see it

active*boolean

The survey shows in the product now. One survey of a workspace shows at a time

scored*boolean

The survey asks how a customer would feel without the product. The score comes from this question, and its words are fixed

questions*array<object>

The open questions, in the order that the survey asks them, after the question of the score. A customer can skip each one

2 properties
id*string
text*string

The question, in the words of the business

audience*enum<string>

engaged: the users who know the product, 7 days after they began, with steady use or 3 days of use in the last 30. everyone: each user

engagedeveryone

again*integer | null

After how many days a customer gets the survey again. Null: a customer answers it one time

shown*integer

The customers who saw the survey

answered*integer

The customers who answered it

lastAnswerAt*string | null

When a customer last answered it

score*object | null

The score of this survey, each customer with its latest answer to it. Null when it does not ask that question

8 properties
answers*integer

The answers that count: each answer but no_longer_use

very*integer

Would be very disappointed without the product

somewhat*integer

Would be somewhat disappointed

not*integer

Would not be disappointed

gone*integer

No longer use the product. These are not in the score

love*number | null

The share that would be very disappointed, in percent. Null under 5 answers

low*number | null

The low end of the 95% range of that share, in percent. Null under 10 answers

level*enum<string>

hidden: under 5 answers, so no share. directional: 5 to 9 answers. ranked: 10 or more

hiddendirectionalranked

by*object

Who made it

2 properties
type*string
name*string | null
activatedAt*string | null

When the survey last began to show

createdAt*string

ISO 8601 date and time

Errors

400 invalid_inputFix the field named in detail. Each operation's schema is in /api/v1/openapi.json.
401 unauthorizedSend an API key as `Authorization: Bearer tr_live_...`. Create one in Troopy under Settings.
403 forbiddenThe key lacks a scope this operation needs, or its owner lacks the role. detail says which; create a key with the scope, or ask an organization owner or admin.
409 conflictThis Idempotency-Key was used for a different request, or that request is still running. Use a new key for a new request.
429 rate_limitedWait the number of seconds in Retry-After, then retry.