Can you get only fields marked as required via a plugin?
Your $entry variable – i.e. an instance of EntryModel – has an attribute called fieldLayout, which will return the field layout (FieldLayoutModel) for this entry.

Via the field layout, you can loop over all fields for the entry (each field will be an instance of FieldLayoutFieldModel), checking their required attribute:

// Get all fields for this entry
$fields = $entry-&gt;fieldLayout-&gt;fields;

// Loop over fields, check required attribute
$requiredFields = array();
foreach ($fields as $fieldModel) {
    if ($fieldModel-&gt;required) {
        $requiredFields[] = $fieldModel-&gt;field;
    }
}


In the above example, $requiredFields will be an array of required fields, i.e. FieldLayoutFieldModels. If you only need an array of the required attribute names for your entry, you can opt to only store the field handles:

$requiredAttributes = array();
foreach ($fields as $fieldModel) {
    if ($fieldModel-&gt;required) {
        $requiredAttributes[] = $fieldModel-&gt;field-&gt;handle;
    }
}