I spent a while building a service that publishes to Instagram on a schedule. Most of that time did not go into the interesting parts. It went into errors whose message points nowhere near the actual cause.

Here is the list I wish I had found on day one.

1. Publishing is two calls, and the first one publishes nothing

You do not post a photo. You create a media container, then you publish that container:

POST /{ig-user-id}/media -> returns a creation_id