curl(1) --get --data-urlencode "bc=#ccffgg" --data-urlencode "a.t=Edit this text" https://img.bruzu.com --output output.png
transfer a URL
-G, --get
       When used, this option will make all data specified with -d, --data or --data-binary to be used in
       a HTTP GET request instead of the POST request that otherwise would be  used.  The  data  will  be
       appended to the URL with a '?' separator.

       If  used  in  combination  with  -I, the POST data will instead be appended to the URL with a HEAD
       request.

       If this option is used several times, the  following  occurrences  make  no  difference.  This  is
       because  undoing  a  GET  doesn't  make sense, but you should then instead enforce the alternative
       method you prefer.
--data-urlencode <data>
       (HTTP)  This posts data, similar to the other --data options with the exception that this performs
       URL-encoding. (Added in 7.18.0)

       To be CGI-compliant, the <data> part should begin with a  name  followed  by  a  separator  and  a
       content specification. The <data> part can be passed to curl using one of the following syntaxes:

       content
              This  will  make  curl URL-encode the content and pass that on. Just be careful so that the
              content doesn't contain any = or @ symbols, as that will then make the syntax match one  of
              the other cases below!
-o, --output <file>
       Write  output  to <file> instead of stdout. If you are using {} or [] to fetch multiple documents,
       you can use '#' followed by a number in the <file> specifier. That variable will be replaced  with
       the current string for the URL being fetched. Like in:

         curl http://{one,two}.site.com -o "file_#1.txt"

       or use several variables like:

         curl http://{site,host}.host[1-5].com -o "#1_#2"

       You may use this option as many times as the number of URLs you have.
source manpages: curl