The engagement endpoints let users interact with pods in three ways: commenting for discussion, voting to influence curation rewards, and submitting qualitative feedback alongside a vote. All engagement endpoints require Privy cookie authentication. Votes are on-chain actions on Base — you must submit the transaction first and pass the resulting hash to the API.
GET /pods/{podId}/comments
Returns all comments posted on a pod, ordered by creation time.
Auth: Privy cookie
Path parameters
The internal ID of the pod.
Response 200
{
"data": {
"comments": [
{
"id": "comment_001",
"comment": "Great summary of the paper.",
"createdAt": "2025-04-01T10:30:00Z",
"userName": "alice",
"thumbnailURL": "https://example.com/avatar.png"
}
]
}
}
Response fields
Ordered list of comments on the pod.
ISO 8601 timestamp when the comment was posted.
Display name of the commenter.
Avatar URL for the commenter.
Example
curl https://reppo.ai/api/v1/pods/pod_xyz789/comments \
-H "Cookie: privy-token=<your-privy-token>"
POST /pods/{podId}/comments
Posts a new comment on a pod. Returns the internal ID of the created comment.
Auth: Privy cookie
Path parameters
The internal ID of the pod.
Request body
The internal ID of the pod (must match the path parameter).
Response 201
{
"data": {
"id": "comment_002"
}
}
Example
curl -X POST https://reppo.ai/api/v1/pods/pod_xyz789/comments \
-H "Cookie: privy-token=<your-privy-token>" \
-H "Content-Type: application/json" \
-d '{
"podId": "pod_xyz789",
"comment": "This is a well-curated summary — very useful for the datanet."
}'
Register a vote for a pod
Records a vote for a pod after the corresponding on-chain transaction has been confirmed on Base. Votes affect the pod’s curation score for the given epoch and determine reward distribution.
You must submit the vote transaction on Base before calling this endpoint. Passing an invalid or unconfirmed txHash will result in a 400 error.
Auth: Privy cookie
Path parameters
The internal ID of the pod being voted on.
Request body
The internal ID of the pod (must match the path parameter).
The epoch number in which this vote is being cast.
The weighted vote amount, derived from the voter’s veREPPO balance.
true for an up-vote, false for a down-vote.
Transaction hash of the on-chain vote submitted on Base.
Response 200
{
"data": {
"id": "vote_abc456"
}
}
Response fields
Internal ID of the created vote record.
Example
curl -X POST https://reppo.ai/api/v1/pods/pod_xyz789/votes \
-H "Cookie: privy-token=<your-privy-token>" \
-H "Content-Type: application/json" \
-d '{
"podId": "pod_xyz789",
"epoch": 42,
"votes": 250.5,
"upVote": true,
"txHash": "0xdef456..."
}'
Store vote feedback for a pod
Stores qualitative written feedback alongside a vote. Use this to capture the voter’s reasoning — the feedback is linked to the specific vote context (epoch, voting power, and direction).
Auth: Privy cookie
Path parameters
The internal ID of the pod.
Request body
The internal ID of the pod.
The voter’s written rationale or qualitative assessment.
The epoch number in which the vote was cast.
The voter’s veREPPO voting power at the time of the vote.
true if the associated vote was an up-vote, false for a down-vote.
Internal ID of the datanet the pod belongs to.
The weighted vote amount associated with this feedback entry.
Response 201
{
"data": {
"id": "feedback_789"
}
}
Example
curl -X POST https://reppo.ai/api/v1/feedback/pods/pod_xyz789 \
-H "Cookie: privy-token=<your-privy-token>" \
-H "Content-Type: application/json" \
-d '{
"podId": "pod_xyz789",
"feedback": "The summary is accurate and well-structured, covering the key contributions clearly.",
"epoch": 42,
"votingPower": 1500.0,
"upVote": true,
"privateSubnetId": "subnet_abc123",
"votes": 250.5
}'