Create posts
Takes the address of a post of yours, reads it from its network, and holds it for a week if it is public, is yours, and carries your own referral link.
POST /v1/reward/me/posts
| Address | https://api.hanzo.ai/v1/reward/me/posts |
| Method | POST |
| Operation | post_reward_me_posts |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Takes the address of a post of yours, reads it from its network, and holds it for a week if it is public, is yours, and carries your own referral link. A held post is not points: it is looked at every day, and one found gone, private or without your link is removed and earns nothing. One still up after seven days is put to staff, who decide it. Pasting a post again answers the first.
Request
2 fields, body application/json (required).
| Field | In | Type | Required | Description |
|---|---|---|---|---|
handle | body | string | — | Handle is who you are on that network, so the post's author can be matched. |
url | body | string | — | URL is the address of the post, on X, Bluesky, Reddit, Hacker News, Mastodon or LinkedIn. |
Response
| Status | Body | Meaning |
|---|---|---|
201 | reward.postView | created |
default | problem-details | refused |
201 body — 15 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
checks | body | reward.Check[] | — | Checks is every look at the post, oldest first. |
checks[].author_match | body | string | — | AuthorMatch is whether the author is the member's linked identity: yes, no or unknown. |
checks[].fetched_at | body | string (date-time) | — | FetchedAt is when the source was fetched. |
checks[].public | body | boolean | — | Public is whether the source is readable by anyone. |
checks[].ref_found | body | boolean | — | RefFound is whether the member's own ref code was found. |
checks[].status | body | integer (int64) | — | Status is the HTTP status the fetch answered. |
countsAt | body | string (date-time) | — | |
daysLeft | body | integer (int64) | — | |
id | body | string | — | |
network | body | string | — | |
note | body | string | — | Note says why a post was removed. |
since | body | string (date-time) | — | Since is when the post's week began; CountsAt when it counts, and DaysLeft the days until then. |
status | body | string | — | Status is pending (held for its week, counts for nothing), verified (it stayed up and was put to staff), removed (it earns nothing) or review (staff decide it by hand). |
url | body | string | — | |
week | body | string | — | Week is the ISO week the post was published in; a post in a later week can earn again. |
Failure carries the platform error shape — see Errors.
Examples
hanzo reward me posts createimport { Configuration, RewardApi } from 'hanzoai';
const api = new RewardApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postRewardMePosts({ handle: "<handle>", url: "<url>" });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import RewardApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = RewardApi(client).post_reward_me_posts(handle="<handle>", url="<url>")cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)
resp, _, err := client.RewardAPI.PostRewardMePosts(context.Background()).Execute()
if err != nil {
return err
}use hanzo_client::apis::{configuration::Configuration, reward_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = reward_api::post_reward_me_posts(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.RewardApi;
ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));
var result = new RewardApi(client).postRewardMePosts();The method above is the one at the current release of the document. [email protected] (npm) and [email protected] (PyPI) were generated from an earlier release, where this operation carried a different id, so it spells the method differently — regenerating the clients is what makes the two agree. SDKs →
curl -X POST https://api.hanzo.ai/v1/reward/me/posts \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"handle": "<handle>",
"url": "<url>"
}'MCP reaches reward through the reward tool, which names its 7 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "list_reward_me_posts"
}
}
}'