# Create a social post

`POST https://api.cryptohopper.com/v1/social/post`

Part of [Social](https://www.cryptohopper.com/api-documentation/api-reference/social.md) in the Cryptohopper API reference.

Publishes a new post on your social profile. A post needs a message, a media URL or a YouTube video; hashtags and coin symbols in the message feed the trending topics.

OAuth scope: `manage`

media is used as is when it is a giphy.com, tradingview.com or cryptohopper.com URL. video is a YouTube video ID and is dropped when the video does not exist. location is a 2 letter code; longer values are dropped. You can post at most once every 30 seconds, and banned profiles cannot post.

## Headers

| Name | Type | Required | Description |
|---|---|---|---|
| `access-token` | string | yes | The OAuth access token of the user. |

## Example request

```bash
curl -X POST "https://api.cryptohopper.com/v1/social/post" \
  -H "access-token: YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message":"Watching BTC closely today #bitcoin","media":"https://media.giphy.com/media/abc123/giphy.gif","location":"NL"}'
```

## Response

Example response (illustrative values):

```json
{
    "data": {
        "status": 1,
        "item": {
            "id": "123456",
            "profile_id": "4567",
            "location": "NL",
            "message": "Watching BTC closely today #bitcoin",
            "media_url": "",
            "created": 1790316000,
            "updated": 1790316000,
            "private_message": "0",
            "profile_alias": "trader-jane",
            "profile_image": "https://cdn.example.com/images/social/uploads/avatar_4567.jpg",
            "profile_name": "Trader Jane",
            "verified": "0",
            "total_likes": "12",
            "total_comments": "3",
            "total_reposts": "1",
            "liked": 0,
            "commented": 0,
            "reposted": 0,
            "profile_link": "/social/profile/trader-jane",
            "following": 0
        }
    }
}
```

Status codes: 200. Errors return JSON with `status`, `error` and `message`, plus a numeric `code` when the error comes from the API itself rather than the gateway.
