Spyke
piefed_api·PieFed API & mobile app devbyMaven

Getting 400 error when creating a post

I am created a piefed interface as a fun personal project but every time I try to create a post I get the following error:

{  
    "code": 400,  
    "message": "Validation failed",  
    "status": "{'json': {'title': ['Missing data for required field.'], 'community_id': ['Missing data for required field.']}}"  
}  

It says I'm missing the title and community but here's what the body looks like on my most recent attempt:

{  
        "body": "[Source](https://mstdn.social/@grickle/115345057031028219)\n\nAlt Text: A cartoon illustration of a vampire in his living room surrounded by his pesky West Highland terriers. Caption reads \"He and the Westies had tormented the village for centuries now.\"",  
        "community_id": 891,  
        "language_id": 0,  
        "nsfw": false,  
        "title": "Forever pests.",  
        "url": "https://media.mstdn.social/media_attachments/files/115/345/056/927/012/957/original/b20b96453c62665c.jpeg"  
}  

The title is very much there and so is the community ID. Am I missing something?

View original on crust.piefed.social
wjs018reply
piefed.wjs018.xyz

Alright, if I had to guess, the problem might be in how you are submitting your payload. The fact that those two fields are the only required ones and both of them are considered missing tells me that the most likely scenario is that piefed isn't receiving any of your payload.

The POST /post endpoint takes a request body with the json structure that you have there. Passing data to the api in a request body like this is different than passing data in query parameters in the url. I am not sure what tool/language you are using to interface with the api, but make sure you are passing the json in the right way for the endpoint.

3
Mavenreply
crust.piefed.social

I'm using reqwest within Rust. I think youre definitely right though. Tomorrow when I'm back at my desk ill try submitting the body in a different way

1
wjs018reply
piefed.wjs018.xyz

I don't really know rust at all...but combining what I found from a quick search here and the official docs, it looks like you need to build a structure matching the json that is then serialized into json by reqwest rather than passing a json string directly.

2
crust.piefed.social

semi-related note... In the API the form is limited to just:

{  
  "title": "string",  
  "community_id": 0,  
  "body": "string",  
  "url": "string",  
  "nsfw": true,  
  "language_id": 0  
}  

But the piefed "create post" page allows you to add a few extra things like alt text. How would one add alt text through the api?

1

Yeah, the api is comparatively limited compared to the web ui still in many ways. This is one of them.

2

You reached the end

Getting 400 error when creating a post | Spyke