curl --request GET \
--url https://api.fanvue.com/v1/experiences/{experienceUuid}/actions \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/experiences/{experienceUuid}/actions"
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api.fanvue.com/v1/experiences/{experienceUuid}/actions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"actions": [
{
"externalActionId": "spin",
"title": "Spin the wheel",
"status": "active",
"amount": 700,
"currency": "USD"
},
{
"externalActionId": "reveal",
"title": "Reveal a card",
"status": "active",
"amount": 250,
"currency": "USD"
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}List an experience's priced actions
Returns the priced actions the creator has configured on one of your experiences, so your surface can render its own buttons with the real price — “Spin — $7” — instead of guessing.
Owner app only: the experience must belong to the app whose credentials make the call, otherwise 403. Actions the creator has withdrawn are omitted.
amount is in minor units (cents) and is resolved from Fanvue on every request, so a re-priced action is correct on the next read with no republish. An empty actions array means the creator has priced nothing; a failure to read the catalogue is a 502, never an empty list.
curl --request GET \
--url https://api.fanvue.com/v1/experiences/{experienceUuid}/actions \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/experiences/{experienceUuid}/actions"
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api.fanvue.com/v1/experiences/{experienceUuid}/actions', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"actions": [
{
"externalActionId": "spin",
"title": "Spin the wheel",
"status": "active",
"amount": 700,
"currency": "USD"
},
{
"externalActionId": "reveal",
"title": "Reveal a card",
"status": "active",
"amount": 250,
"currency": "USD"
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}read:experience— Exchange a fan’s experience token for the resolved experience and the fan’s identity, so an embedded fan-facing experience can render the right content.
Authorizations
OAuth 2.0 access token, presented as a JWT bearer token in the Authorization header. Obtain a token via the authorization-code flow; the scopes granted to the token determine which operations it may call.
Headers
API version to use for the request
"2025-06-26"
Path Parameters
"00000000-0000-4000-8000-000000000010"
Response
The experience's active priced actions
The experience's active priced actions, in the order the creator arranged them.
Show child attributes
Show child attributes
Was this page helpful?