The libcurl API
There are some example C source codes you can check out.
Dig into the Symbols In Versions document to learn in which libcurl releases symbols were added or removed.
Easy or Multi
The easy interface is a synchronous, efficient, quickly used and... yes, easy interface for file transfers. Numerous applications have been built using this.
The multi interface is the asynchronous brother in the family and it also offers multiple transfers using a single thread and more. Get a grip of how to work with it in the multi interface overview.
The Easy interface
When using libcurl you init your easy-session and get a handle, which you use as input to the following interface functions you use.
You continue by setting all the options you want in the upcoming transfer, most important among them is the URL itself. You might want to set some callbacks as well that will be called from the library when data is available etc.
When all is setup, you tell libcurl to perform the transfer. It will then do the entire operation and won't return until it is done or failed.
See also the easy interface overview.
While the above functions are the main functions to use in the easy interface, there is a series of other helpful functions too including:
|curl_version()||returns a pointer to the libcurl version string|
|curl_getdate()||converts a date string to time_t|
|curl_mime_init()||... and family, to build multipart form-data posts|
|curl_formadd()||(old-style) build multipart form-data posts|
|curl_slist_append()||builds a linked list|
|curl_slist_free_all()||frees a whole curl_slist as made with curl_slist_append()|
|curl_easy_escape()||URL encodes a string|
|curl_easy_unescape()||URL decodes a string|
All man pages are also included in every release archive.