Why does the API take Stage display_value, not actual_value?

Why does the API take Stage display_value, not actual_value?

When creating or updating a Deal, why does the Stage attribute uses the picklist `display_value` instead of `actual_value`? The behavior seems unintuitive. 

Is there a way to update using the Deal actual_value or ID instead?

Is this the standard behavior of all picklist?