Reactions
Thumbs-up / thumbs-down votes on targets
/api/v0/reactionsSubmit a reaction
Record a thumbs-up (1) or thumbs-down (-1) reaction against a target surface.
Target resolution — supply target.type + target.metadata. The target is found or auto-created using the same dedupe-key logic as input creation.
Dedupe — the API prevents double-voting: - If user_id is provided it is hashed (SHA-256) and used for strict all-time dedupe: one reaction per user per target, forever. - If user_id is omitted, the caller's IP address is hashed and used for a 24-hour time-window dedupe: one reaction per IP per target per day. This is best-effort and may block users sharing a NAT or proxy.
Duplicate submissions return a 201 with the same response shape as a new reaction.
Request Body*
Target to react to. Provide type + metadata — the target is found or auto-created using the same dedupe-key logic as input creation.
HTTP method (e.g. GET, POST).
API endpoint path.
Hostname of the API (e.g. api.example.com).
API version string (e.g. v1).
1 for thumbs-up, -1 for thumbs-down.
Optional identifier for the end user submitting the reaction (e.g. your internal user ID or account email). Hashed with SHA-256 before storage — the raw value is never persisted. Used for strict all-time dedupe: one reaction per user per target. If omitted, dedupe falls back to a 24-hour IP-address window.
Short ID derived from a UUID (short-uuid)
Short ID derived from a UUID (short-uuid)
1 for thumbs-up, -1 for thumbs-down.
ISO 8601 timestamp when the reaction was recorded.
No response body
No response body
No response body
/api/v0/targets/{targetId}/reactions/summaryGet reaction summary for a target
Returns all-time totals and a 30-day daily breakdown of thumbs-up / thumbs-down reactions for a specific target. Requires a full_access token — widget tokens are not permitted.
Short ID of the target.
Short ID derived from a UUID (short-uuid)
Total thumbs-up reactions of all time.
Total thumbs-down reactions of all time.
total_up minus total_down.
Per-day up/down counts for the past 30 days.
No response body
No response body
No response body