Front-end entry form not updating custom fields in existing entry
You need to pass your custom fields in a fields array, try:
{{ input('text', 'fields[headline]', entry.headline, {
    required: true,
    class: entry.hasErrors('headline') ? 'text error' : 'text'
}) }}

See example here - https://craftcms.com/knowledge-base/entry-form