"password", //client id - default is sugar. //It is recommended to create your own in Admin > OAuth Keys "client_id" => "sugar", "client_secret" => "", "username" => $username, "password" => $password, //platform type - default is base. //It is recommend to change the platform to a custom name such as "custom_api" to avoid authentication conflicts. "platform" => "custom_api" ); $auth_request = curl_init($auth_url); curl_setopt($auth_request, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($auth_request, CURLOPT_HEADER, false); curl_setopt($auth_request, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($auth_request, CURLOPT_RETURNTRANSFER, 1); curl_setopt($auth_request, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($auth_request, CURLOPT_HTTPHEADER, array( "Content-Type: application/json" )); //convert arguments to json $json_arguments = json_encode($oauth2_token_arguments); curl_setopt($auth_request, CURLOPT_POSTFIELDS, $json_arguments); //execute request $oauth2_token_response = curl_exec($auth_request); //get token to expire $oauth2_token_response_obj = json_decode($oauth2_token_response); $oauth_token = $oauth2_token_response_obj->access_token; //Identify records to export - POST //filter $filter_url = $instance_url . "/Accounts/filter"; $filter_arguments = array( "filter" => array( array( '$or' => array( array( //name starts with 'a' "name" => array( '$starts'=>"A", ) ), array( //name starts with 'b' "name" => array( '$starts'=>"b", ) ) ), ), ), "max_num" => 2, "offset" => 0, "fields" => "id", "order_by" => "date_entered", "favorites" => false, "my_items" => false, ); $filter_request = curl_init($filter_url); curl_setopt($filter_request, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($filter_request, CURLOPT_HEADER, false); curl_setopt($filter_request, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($filter_request, CURLOPT_RETURNTRANSFER, 1); curl_setopt($filter_request, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($filter_request, CURLOPT_HTTPHEADER, array( "Content-Type: application/json", "oauth-token: {$oauth_token}" )); //convert arguments to json $json_arguments = json_encode($filter_arguments); curl_setopt($filter_request, CURLOPT_POSTFIELDS, $json_arguments); //execute request $filter_response = curl_exec($filter_request); //decode json $filter_response_obj = json_decode($filter_response); //store ids of records to export $export_ids = array(); foreach ($filter_response_obj->records as $record) { $export_ids[] = $record->id; } //Create a record list - POST //record_list $record_list_url = $instance_url . "/Accounts/record_list"; $record_list_arguments = array( "records" => $export_ids, ); $record_list_request = curl_init($record_list_url); curl_setopt($record_list_request, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($record_list_request, CURLOPT_HEADER, false); curl_setopt($record_list_request, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($record_list_request, CURLOPT_RETURNTRANSFER, 1); curl_setopt($record_list_request, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($record_list_request, CURLOPT_HTTPHEADER, array( "Content-Type: application/json", "oauth-token: {$oauth_token}" )); //convert arguments to json $json_arguments = json_encode($record_list_arguments); curl_setopt($record_list_request, CURLOPT_POSTFIELDS, $json_arguments); //execute request $record_list_response = curl_exec($record_list_request); //decode json $record_list_response_obj = json_decode($record_list_response); //Export Records - GET //export/:record_list_id $export_url = $instance_url . "/Accounts/export/" . $record_list_response_obj->id; $export_request = curl_init($export_url); curl_setopt($export_request, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); curl_setopt($export_request, CURLOPT_HEADER, true); //needed to return file headers curl_setopt($export_request, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($export_request, CURLOPT_RETURNTRANSFER, 1); curl_setopt($export_request, CURLOPT_FOLLOWLOCATION, 0); curl_setopt($export_request, CURLOPT_HTTPHEADER, array( "Content-Type: application/json", "oauth-token: {$oauth_token}" )); $export_response = curl_exec($export_request); //set headers from response list($headers, $content) = explode("\r\n\r\n", $export_response ,2); foreach (explode("\r\n",$headers) as $header) { header($header); } $content = trim($content); echo $content;