Quickstart
Go from zero to a working API request in a few minutes.
Prerequisites
You need a Vibetracker account and an API key. Create your API key and store it as an environment variable:
bash
export VIBETRACKER_API_KEY="vbt_ak_your_prefix_your_secret"The plaintext key is only shown once. Copy it before closing the dialog.
Send a request
The minimum payload is model and score.
curl -X POST 'https://vibetracker.app/api/v1/opinions' \
-H 'Authorization: Bearer $VIBETRACKER_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "gpt-4o",
"score": 1
}'Add context
Include optional fields like useCase, interface, toolId, and comment for richer sentiment data. When sending tool context, interface becomes required.
curl -X POST 'https://vibetracker.app/api/v1/opinions' \
-H 'Authorization: Bearer $VIBETRACKER_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"model": "gpt-4o",
"score": -1,
"updateOptionalContext": true,
"useCase": "coding",
"interface": "api",
"toolId": "openai-api",
"comment": "Regression in tool calls after the latest deploy."
}'Response
A successful request returns the stored opinion. Check createdNewOpinion to know if the call created a new opinion or updated an active one.
json
{
"opinionId": "jh7m9w7r9m2w0n9w7d3h6n3w3n7c0sd0",
"createdNewOpinion": true,
"model": {
"displayName": "GPT-4o",
"fullSlug": "openai/gpt-4o"
},
"score": 1,
"useCase": null,
"interface": null,
"toolId": null,
"toolNameOther": null,
"comment": null,
"moderationStatus": "visible",
"submittedAt": 1773686400000,
"cooldownEndsAt": 1773688200000,
"currentSentiment": {
"model": {
"displayName": "GPT-4o",
"fullSlug": "openai/gpt-4o",
"providerName": "OpenAI",
"providerSlug": "openai",
"status": "active"
},
"sentiment": {
"label": "Positive",
"netSentiment": 0.5,
"totalSubmissions": 8,
"recentDelta": 0.12,
"baselineSentiment": 0.38,
"positiveCount": 5,
"neutralCount": 2,
"negativeCount": 1,
"positiveShare": 0.63,
"neutralShare": 0.25,
"negativeShare": 0.13
},
"sparkline": [
{ "day": 1773619200000, "avg": 0.5, "count": 8 }
]
}
}Common mistakes
- Missing the
Bearerprefix on the Authorization header - Sending a
scorethat is not-1,0, or1 - Using a short
modelslug that matches multiple providers. In that case, send the canonicalprovider/modelslug instead. - Passing a
toolIdthat does not belong to the selectedinterface - Including links in
commentortoolNameOther
For the full field-by-field reference, see POST /api/v1/opinions.