Skip to main content
TroopyDocs
Open Troopy
Troopy

API reference / Customers

Get the score of the surveys

How the customers answered the question of the score in the surveys in the product: how they would feel without the product. The score is the share that would be very disappointed. Each customer counts one time, with its latest answer of the days, whichever survey asked. Under 5 answers there is no share, and under 10 it only shows a direction.

get/api/v1/customer-pmf

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 customers pmf
MCP tooltroopy_get_customer_pmf
Rate limit120 calls in 60 seconds, for each key

Query parameters

daysinteger

The days back from now: 30, 90, 180, 365

Default 90

Response

200 · application/json
data*object
7 properties
on*boolean

A survey that asks the question of the score shows in the product now

survey*object | null

The survey that shows in the product now, whatever it asks. Null when no survey shows

3 properties
id*string

A 24-character id

name*string
scored*boolean
days*integer

The days that the numbers cover

asked*integer

The customers that saw the survey in those days

all*object

Every customer who answered in those days, with its latest answer

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

paying*object

Only the customers who pay now

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

others*object

Only the customers who do not pay now

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

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.
429 rate_limitedWait the number of seconds in Retry-After, then retry.