Understanding GPT-Vision API pricing?

I don’t understand how the pricing of Gpt vision works, see below:

I have this code:

async function getResponseImageIA(url) {
    let response = await openai.chat.completions.create({
        model: "gpt-4-turbo",
        messages: [
            {
                role: "user",
                content: [
                    { type: "text", text: "Brindame una descripción detallada de la imagen" },
                    {
                        type: "image_url",
                        image_url: {
                            url: url,
                            detail: 'high'
                        }
                    },
                ],
            },
        ],
        max_tokens: 300,
    })
    console.dir(response, { depth: null })
    return response.choices[0]
}

The response is this:

{
  id: 'chatcmpl-9O7OIaPwHpf5AIcgRpKzsiqBubtHKS',
  object: 'chat.completion',
  created: 1715535310,
  model: 'gpt-4-turbo-2024-04-09',
  choices: [
    {
      index: 0,
      message: {
        role: 'assistant',
        content: 'La imagen que proporcionaste es un diseño gráfico muy estilizado y moderno, que parece ser un logotipo de una marca o empresa llamada "prendo". El fondo de la imagen es de un color púrpura uniforme y vibrante. \n' +
          '\n' +
          'El logotipo en sí consiste de un elemento gráfico abstracto que parece una "P" estilizada con un corte, formando también una flecha que apunta hacia la derecha, sugerente de movimiento o progreso. Este elemento gráfico es blanco con degradados de azul en su parte inferor, lo que le añade un efecto de profundidad y dimensión. \n' +
          '\n' +
          'El nombre "prendo" está ubicado debajo del ícono gráfico. Se utiliza una tipografía moderna, en minúsculas, con letras blancas, que coincide con el estilo y la paleta de colores del ícono principal. \n' +
          '\n' +
          'En conjunto, el diseño es limpio, contemporáneo y fácilmente reconocible, lo cual es efectivo para identidad de marca.'
      },
      logprobs: null,
      finish_reason: 'stop'
    }
  ],
  usage: { prompt_tokens: 784, completion_tokens: 227, total_tokens: 1011 },
  system_fingerprint: 'fp_07372e0dfd9'
}

I can’t understand if in “usage: { prompt_tokens: 784, completion_tokens: 227, total_tokens: 1011 }” the prompt_tokens is considering the image or the image calculation is calculated separately with this calculator:

I count the same 227 completion tokens by reassembling your assistant text and sending to a tokenizer.

The user message is 7 tokens overhead + 12 tokens of message.

So if we have 765 tokens of prompt still to account for, it must be from images.

Total tiles 4
Base tokens 85
Tile tokens 170 × 4 = 680
Total tokens 765

The internal resizing of the smallest side of the image is what makes 640x640 and even up to 1024x1024 take 4 “tiles” that are 512x512 in the detail:high mode.

For an image 640x640, detail:low will make it only cost 85 tokens with the image being downsized to 512x512 internally.