# Create posts

URL: https://docs.hanzo.ai/docs/openapi/reward/post-reward-me-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`

> [Reward →](https://docs.hanzo.ai/docs/openapi/reward) · [All API references →](https://docs.hanzo.ai/docs/openapi) · [Get started →](https://docs.hanzo.ai/docs/guides)

|               |                                           |
| ------------- | ----------------------------------------- |
| **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](https://docs.hanzo.ai/docs/errors).

## Examples

**CLI**

```bash
hanzo reward me posts create
```

**SDK**

**.ts**

```ts
import { 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>" });
```

**.py**

```python
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>")
```

**.go**

```go
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
}
```

**.rs**

```rust
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?;
```

**.java**

```java
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. `hanzoai@8.5.914` (npm) and `hanzoai@8.5.914` (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 →](https://docs.hanzo.ai/docs/sdks)

**HTTP**

```bash
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**

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:

```bash
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"
         }
       }
     }'
```

---

[Reward API](https://docs.hanzo.ai/docs/openapi/reward) · [All Hanzo APIs](https://docs.hanzo.ai/docs/openapi) · [Interactive reference](https://docs.hanzo.ai/docs/openapi/reference)
