You could reduce code duplication with a function like:

function findMeta( $type ) {
    if ( !empty( $this->metadata[$type] ) ) {
        return $this->metadata[$type];
    }

    if ( !empty( $this->interfaceObj['metadata'][$type] ) ) {
        return $this->interfaceObj['metadata'][$type];
    }

    return '';
}

Then you'd just need a short line for each accessor:

  function getSource() { return $this->findMeta('source'); }

You could probably even define getMeta in ApiWrapper since $type is probably the only thing that changes from provider to provider.