Impossible to get the source field with the Contribution API
There is an issue with the contribution 'source' field being accessed through the API, due to there being a conflict between the 'source' field of a contribution and the 'source' field of a contact.

To get around this conflict, add the prefix 'contribution_'. So in the API call, change 'source' to 'contribution_source':

$result = civicrm_api3('Contribution', 'get', array(
  'sequential' =&gt; 1,
  'return' =&gt; "source",
  'id' =&gt; 1,
));


...becomes...

$result = civicrm_api3('Contribution', 'get', array(
  'sequential' =&gt; 1,
  'return' =&gt; "contribution_source",
  'id' =&gt; 1,
));


This worked for me.