Unable exchange authorization code for access code OAuth2 3LO

Hi! After I receive authorization code in step 1 link, I’m making request to excange code to access token, but I get just { error: ‘access_denied’, error_description: ‘Unauthorized’ }, however in network tab of browser I see status 200

  async getAccessCode(ctx) {
    const { authCode } = ctx.params
    const accessCode = await fetch('https://auth.atlassian.com/oauth/token',
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
          'X-Atlassian-Token': 'no-check',
          'cache-control': 'no-cache',
        data: {
          grant_type: 'authorization_code',
          client_id: 'xxx',
          client_secret: 'xxx',
          code: authCode,
          redirect_uri: 'http://localhost:3201/courses/june_2020_manual_qa_technical_support?',
    ).then(data => data.json()).catch(e => console.log(e.message))