Finding entry by content
It sort of depends on what information you have to identify the entry. If your external service knows the entry id that would be the most direct — otherwise you would have to find the entry by some other unique property.

To update an entry (given $entryId, $newTitle):

$entry = craft()-&gt;entries-&gt;getEntryById($entryId);
if ($entry) {
    $entry-&gt;getContent()-&gt;setAttributes(array(
        'title' =&gt; $newTitle
    ));
    craft()-&gt;entries-&gt;saveEntry($entry);
}


To update an entry (given $sectionHandle, $title, and $newTitle - or other unique property):

$criteria = craft()-&gt;elements-&gt;getCriteria(ElementType::Entry);
$criteria-&gt;section = $sectionHandle;
$criteria-&gt;title = $title;
$entries = craft()-&gt;elements-&gt;findElements($criteria);

foreach ($entries as $entry) {
    $entry-&gt;getContent()-&gt;setAttributes(array(
        'title' =&gt; $newTitle
    ));
    craft()-&gt;entries-&gt;saveEntry($entry);
}


Could also use the 'search' method (although less reliable):

$criteria = craft()-&gt;elements-&gt;getCriteria(ElementType::Entry);
$criteria-&gt;search = 'fieldHandle:searchstring';


In the last two cases, would need to handle the possibility that more than 1 entry is returned.

Also, when creating entries might want to include the authorId and typeId, in addition to sectionId:

$entry = new EntryModel();
$entry-&gt;sectionId  = $sectionId
$entry-&gt;typeId     = $typeId
$entry-&gt;authorId   = $authorId;
$entry-&gt;enabled    = true;
$entry-&gt;getContent()-&gt;setAttributes(array(
    'title' =&gt; $title
));
craft()-&gt;entries-&gt;saveEntry($entry);