500 or 400 when updating the content of a post using the API

I’m trying to update the content of a post using the API. The docs at Discourse API Docs mention that I should use PUT /posts/:id.json sending post[raw] as a body.

This results in 400 along with:

errors: [ 'param is missing or the value is empty: post' ]

The error is complaining about a param called post, but replacing post[raw] with post in my HTTP request results in a 500 Internal Server Error response.

The post content was just Edited comment, so I don’t think it’s anything related to the content.

Am I missing something? Are the API docs out of date?

I’m running a cloud instance at https://forums.balena.io. Not sure what the Discourse version is.

I just realised I was passing a topic id instead of a post id to the API, but the problem still persists. I’m trying to update post 34816, assuming you have access to the cloud instance:

PUT https://forums.balena.io/posts/34816.json

With body:

{
    "post": "Edited comment"
}

And that still results in 500.

Why is my post being flagged as spam? Is this not the right place to submit bugs?

Turns out it works fine if I pass raw instead of post in the request body. The docs could probably be clearer about that :slight_smile:

4 Likes

Glad you got it figured out! I’ve got a bunch of topics that are me taking to myself.

Mostly these are the docs, and they are continually updated: How to reverse engineer the Discourse API :wink:

I generally forget that there are any docs besides just seeing how it works in the browser development tools.

5 Likes