Partner Posts API

Upload a link-in-bio post tile to any Kind Joe desk. No staff login. Same key as the partner publish API.

Endpoint

POST /api/partner/posts

Authentication

Send Authorization: Bearer <HOPE_PUBLISH_API_KEY> or x-api-key: <HOPE_PUBLISH_API_KEY>.

Desks

  • kindjoe — /posts
  • ventura — /ventura/posts
  • la — /joeknowsla/posts
  • oxnard — /oxnard/posts
  • slo — /joefromslo/posts

Aliases also work: joeknowsla, oxnard-news, cityofox, joefromslo, ventura-county.

Cloudinary

Kind Joe uploads the photo to Cloudinary in the kindjoe/posts folder and saves that link on the post. The caller does not need Cloudinary keys.

  • Send the file as multipart field file.
  • Or send imageBase64 as a data:image/…;base64,… string.
  • Or send imageUrl. A link that is not already on Kind Joe Cloudinary is copied there first.

File upload

curl -X POST https://www.kindjoe.com/api/partner/posts \
  -H "Authorization: Bearer $HOPE_PUBLISH_API_KEY" \
  -F "desk=ventura" \
  -F "destinationUrl=https://www.kindjoe.com/your-story" \
  -F "caption=Optional" \
  -F "file=@tile.jpg"

JSON body

{
  "desk": "ventura",
  "imageUrl": "https://res.cloudinary.com/…/tile.jpg",
  "destinationUrl": "https://www.kindjoe.com/your-story",
  "caption": "Optional"
}

imageUrl in the response is the Cloudinary URL stored on the post.

Response (201)

{
  "success": true,
  "desk": "ventura",
  "id": 42,
  "feedPath": "/ventura/posts",
  "imageUrl": "https://…",
  "destinationUrl": "https://…"
}