Complete example for updating an interactive ephemeral message?

I’m trying to make a slash command that posts an ephemeral message with interactive buttons that result in updating the original message. The documentation says this should be possible:

In specific, it says:

The integration can respond with an update to the original post, or with an ephemeral message:

  "update": {
    "message": "Updated!"
  "ephemeral_text": "You updated the post!"

My problem is that this seems to just be a snippet of a valid response. I can post the original message, I get the request, and no matter how I respond to the request, nothing happens. I’ve tried responding with the exact block above and multiple variations on it, and it does nothing. The documentation links to the Matterpoll plugin as an example, which isn’t really useful to me because I’m not using Go, I’m just writing a CGI script that returns a JSON-formatted response.

Has anybody gotten this working? If so, could you share example JSON requests/responses that produce the desired behavior? I really just need to know what an action response is supposed to look like and what the valid options are.

Thanks in advance!

@Hanzei Pinging you in case you have an answer for this.

Hey @pjreed,

Ephemeral messages can’t be updated via update. This is only achievable via plugins. See

But posting an ephemeral message after clicking on a button in the original ephemeral message should still work.

What server version are you using?

I see, that makes sense. Thanks. We just upgraded to 5.11.

I was hoping to be able to make a slash command similar to the giphy plugin for Slack that posts an ephemeral message that has “Send”, “Shuffle”, and “Cancel” buttons that can make the ephemeral message in_channel, replace the image, or remove it; is that not possible without writing a plugin?

is that not possible without writing a plugin?

Yes, this is currently no possible without writing a plugin.