### Update This expression will evaluate to show the cause. The only requirement is an emacs with `url`. As you can see, the result from using `curl` and that from using the `url` package is different. Fields `upvoted`, `downvoted`, and `body_markdown` are missing from the `url` request. What is differing between these two requests, and how can I fix the problem? I recommend instrumenting the function before evaluating it. Since this issue is bordering off-topic now, I'm going to post [this question on Emacs.SE][emacs.se]. The underlying issue though still concerns the API. I believe these two issues have the same cause, but if I should post this as a separate question for tracking purposes, just let me know. <!-- language: lang-lisp --> (defconst access-token "YOUR ACCESS TOKEN") (defconst key "AN API KEY") (defun tmp:api-bug (use-curl access-token key) "Post a test answer to the formatting sandbox." (let ((random-body-1 (md5 (current-time-string))) (random-body-2 (md5 (md5 (current-time-string)))) (method "https://api.stackexchange.com/2.2/questions/3122/answers/add") (args (mapconcat #'identity `(,(format "access_token=%s" (replace-regexp-in-string "%" "%%" (url-hexify-string access-token))) ,(format "key=%s" (replace-regexp-in-string "%" "%%" (url-hexify-string key))) "site=meta" "pagesize=100" "filter=%%21GoYr1we0U5inG5G7wBg4JBGpbgX%%29C7LDqpy-%%2AbfwPOujOr4SR4W%%29bLNSyYUpQDdTwTj.XChTFB0gfLaAJq0hv" "body=this-is-an-answer-test-for-sx.el--%s") "&"))) (if use-curl (shell-command-to-string (format "curl --silent -X POST --data %S %s | gunzip" (format args random-body-2) method)) (let ((url-automatic-caching t) (url-inhibit-uncompression t) (url-request-data (format args random-body-1)) (url-request-method "post") (url-request-extra-headers '(("Content-Type" . "application/x-www-form-urlencoded")))) (with-current-buffer (url-retrieve-synchronously method) (goto-char (point-min)) (search-forward "\n\n") (delete-region (point-min) (point)) (buffer-string)))))) (tmp:api-bug t access-token key) "{\"items\":[{\"owner\":{\"reputation\":160,\"display_name\":\"Sean Allred\"},\"downvoted\":false,\"upvoted\":false,\"score\":0,\"last_activity_date\":1421684370,\"creation_date\":1421684370,\"answer_id\":247295,\"share_link\":\"http://meta.stackexchange.com/a/247295/188148\",\"body_markdown\":\"this-is-an-answer-test-for-sx.el--e3eeb6228ed9c2c58e5385b73493f0f0\",\"link\":\"http://meta.stackexchange.com/questions/3122//247295#247295\"}],\"has_more\":false,\"quota_max\":10000,\"quota_remaining\":9979,\"page\":1,\"page_size\":100,\"total\":1}" (tmp:api-bug nil access-token key) "{\"items\":[{\"owner\":{\"reputation\":160,\"display_name\":\"Sean Allred\"},\"score\":0,\"last_activity_date\":1421684555,\"creation_date\":1421684555,\"answer_id\":247297,\"share_link\":\"http://meta.stackexchange.com/a/247297/188148\",\"link\":\"http://meta.stackexchange.com/questions/3122//247297#247297\"}],\"has_more\":false,\"quota_max\":10000,\"quota_remaining\":9977,\"page\":1,\"page_size\":100,\"total\":1}" --- When upvoting an answer via the API, `preview=true` gives the correct new `score` value but `preview=false` does not. When the following expressions are evaluated, we receive different responses. <!-- language: lang-lisp --> (sx-method-call "answers" :id 7192 :submethod "upvote" :auth 'warn :url-method 'post :keywords (list (cons 'preview 'true)) ;; NOTE :site "emacs") => [((question_id . 7189) (answer_id . 7192) (creation_date . 1420761994) (last_edit_date . 1420762419) (last_activity_date . 1420762419) (score . 4) (is_accepted . t) (owner (link . "http://emacs.stackexchange.com/users/105/drew") (display_name . "Drew") (profile_image . "https://www.gravatar.com/avatar/32a8e553d85d193ee5ae1533ce6ec158?s=128&d=identicon&r=PG&f=1") (user_type . "registered") (user_id . 105) (reputation . 6689)))] versus <!-- language: lang-lisp --> (sx-method-call "answers" :id 7192 :submethod "upvote" :auth 'warn :url-method 'post :keywords (list (cons 'preview 'false)) ;; NOTE :site "emacs") => [((question_id . 7189) (answer_id . 7192) (creation_date . 1420761994) (last_edit_date . 1420762419) (last_activity_date . 1420762419) (score . 3) (is_accepted . t) (owner (link . "http://emacs.stackexchange.com/users/105/drew") (display_name . "Drew") (profile_image . "https://www.gravatar.com/avatar/32a8e553d85d193ee5ae1533ce6ec158?s=128&d=identicon&r=PG&f=1") (user_type . "registered") (user_id . 105) (reputation . 6689)))] Note the difference: - when `preview=true`, `.score=4` - when `preview=false`, `.score=3` However, the POST does succeed; `.score` is updated when you re-retrieve the answer: <!-- language: lang-lisp --> (sx-method-call "answers" :id 7192 :site "emacs") => [((question_id . 7189) (answer_id . 7192) (creation_date . 1420761994) (last_edit_date . 1420762419) (last_activity_date . 1420762419) (score . 4) (is_accepted . t) (owner (link . "http://emacs.stackexchange.com/users/105/drew") (display_name . "Drew") (profile_image . "https://www.gravatar.com/avatar/32a8e553d85d193ee5ae1533ce6ec158?s=128&d=identicon&r=PG&f=1") (user_type . "registered") (user_id . 105) (reputation . 6699)))] Note that to reproduce the issue with the Elisp examples provided, you must `sx-authenticate` first. ---------- I cannot figure out how to correctly `POST` to the API with curl, so feel free to edit this Q to use curl if you know how. As it stands, clone http://stackapps.com/q/3950/11299 (or install `M-x package-install RET sx RET` from MELPA) and require `sx-load`. <sub>Cross-reference [`vermiculus/sx.el#223`][pull223], [Emacs.SE question][emacs.se]</sub> [pull223]: https://github.com/vermiculus/sx.el/pull/223 [emacs.se]: http://emacs.stackexchange.com/q/7545/2264