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
}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.