PHP CURL Post Request Example

3 min readJul 9


Hi friends, in this tutorial, you will learn how to send PHP curl post requests to any URL and API endpoints. Before getting started with the tutorial, you must know the concept of CURL following with an example.

What is CURL in PHP

In PHP, cURL (Client URL Library) is a powerful and widely used library that allows you to make HTTP requests to various servers and retrieve or send data. It provides a simple and flexible way to interact with web services, APIs, and other remote resources.

Also read, PHP REST API Example

cURL supports several protocols, including HTTP, HTTPS, FTP, SMTP, and more. It offers a wide range of features such as making GET, POST, PUT, and DELETE requests, handling cookies, setting headers, handling file uploads, and managing SSL certificates.

Below are some key features of cURL in PHP:

  • Making HTTP requests: cURL allows you to send HTTP requests to servers, including GET, POST, PUT, DELETE, and more.
  • Setting request headers: You can set custom headers in your requests, such as content type, user agent, authorization, and more.
  • Handling response: cURL provides options to handle the response received from the server, including retrieving response headers, response body, and response status codes.
  • Handling cookies: You can manage cookies by storing them, sending them with subsequent requests, and handling cookie sessions.
  • SSL/TLS support: cURL supports secure connections over HTTPS and can handle SSL certificates and verify the server’s identity.
  • File uploads: cURL supports uploading files to servers using multipart/form-data encoding.
  • Customization: cURL offers various options and settings to customize your requests, timeouts, proxies, follow redirects, and more.

Overall, cURL in PHP is a versatile library that allows you to interact with remote resources programmatically, making it an essential tool for web development, API integration, and data retrieval tasks.

Below is an example of using a PHP cURL POST request:

// API endpoint URL
$url = '';
// Data to be sent in the POST request
$data = array(
'param1' => 'value1',
'param2' => 'value2',
// Initialize cURL
$ch = curl_init();
// Set the URL and other options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Execute the cURL request
$response = curl_exec($ch);
// Check for errors
if (curl_errno($ch)) {
$error = curl_error($ch);
// Handle the error appropriately
} else {
// Process the response
// $response contains the API response data
echo $response;
// Close cURL

In the above example, we have an API endpoint URL ($url) to which we want to send a POST request. The data to be sent is stored in an associative array ($data), where each key-value pair represents a parameter and its value.

We initialize cURL using curl_init(), set the URL with CURLOPT_URL, and specify that we want to make a POST request with CURLOPT_POST set to true. The data is set as the request body using CURLOPT_POSTFIELDS after encoding it with http_build_query().

We also set CURLOPT_RETURNTRANSFER to true to ensure that the response is returned as a string instead of being printed directly.

After executing the cURL request with curl_exec($ch), we can check for any errors using curl_errno($ch). If an error occurs, you can handle it accordingly. Otherwise, you can process the response, which is stored in the $response variable in this example.

Finally, we close the cURL handle with curl_close($ch) to free up resources.

Please note that this is a basic example, and depending on the specific API you’re working with, you may need to set additional options such as headers or handle authentication.

Conclusion:- I hope this tutorial will help you to understand the concept of CURL. If there is any doubt then please leave a comment below.

Originally published at on July 9, 2023.




Hi, This is Biplab and I am a PHP laravel developer and other open source technologies. I am here to share my experience with the community.