How can I add an additional email id for "work" through API?
Here is an example for creating a new email on an existing contact. Note that the default "Work" is location_type_id 2:

  $params = array(
    'contact_id' =&gt; 99,
    'location_type_id' =&gt; 2,
    'email' =&gt; 'myemail@work.com'

  try{
    $result = civicrm_api3('Email', 'create', $params);
  }
  catch (CiviCRM_API3_Exception $e) {
    // Handle error here.
    $errorMessage = $e-&gt;getMessage();
    $errorCode = $e-&gt;getErrorCode();
    $errorData = $e-&gt;getExtraParams();
    return array(
      'error' =&gt; $errorMessage,
      'error_code' =&gt; $errorCode,
      'error_data' =&gt; $errorData,
    );
  }