MetalAPI
XAU3.997,89−1,54%XAG53,936−1,51%XPT1.554,47−0,83%XPD1.047,03−0,44%XCU6,5080+2,29%WTI103,27+3,82%BRENT111,70−1,30%EUR1,120400−0,01%GBP1,337500−0,01%JPY0,0063761+0,14%CHF1,213445−0,25%TRY0,020125−0,12%BTC80.329,75−0,55%ETH2.329,36−1,13%
Todos os artigos
OuroJoalheriaTutorial

Preços do ouro por quilate: 24K, 22K, 18K e como calculá-los

O que significam 24K, 22K e 18K, como se relacionam com teores como 916 e 750, como calcular o preço por grama de cada quilate e como obtê-lo por uma API.

Por MetalAPI Team··9 min de leitura

Quilate e pureza

O quilate mede a pureza do ouro, não o seu peso. O ouro puro tem 24 quilates, então o teor de ouro de uma liga é o seu número de quilates dividido por 24. O ouro 18 quilates tem 18 partes de ouro e 6 partes de outros metais, como prata, cobre, zinco ou paládio, que deixam a liga mais dura, mudam a sua cor e reduzem o seu custo.

Em português, a palavra quilate tem dois sentidos: a pureza do ouro (K ou kt) e a unidade de 200 miligramas usada para pesar pedras preciosas (ct). O inglês americano separa os dois em karat (pureza) e carat (peso das gemas), enquanto o inglês britânico costuma usar carat para ambos. O endpoint da MetalAPI se chama /carat, seguindo esse uso mais amplo, mas retorna preços do ouro por pureza, não por peso de gemas.

A fórmula que liga o preço por quilate ao mercado do ouro é curta:

preço por grama do ouro de K quilates = preço à vista por onça troy ÷ 31,1034768 × K ÷ 24

Este artigo explica cada parte dessa fórmula, mostra como calculá-la você mesmo e como obtê-la pela API e, em seguida, analisa o que separa o preço do ouro por quilate do preço de uma joia pronta.

Pureza em quilates e teor milesimal

Muitos países marcam o ouro com o seu teor milesimal, as partes de ouro por mil, em vez do quilate ou ao lado dele. As duas escalas se correspondem diretamente:

QuilatePureza (K ÷ 24)Percentual de ouroTeor milesimal (partes por 1.000)
24K1,0000100%1000 (barras têm 999 ou 999,9)
23K0,958395,8%958,3
22K0,916791,7%916,7 (marcado 916)
21K0,875087,5%875
20K0,833383,3%833,3
18K0,750075,0%750
16K0,666766,7%666,7
14K0,583358,3%583,3 (marcado 585)
12K0,500050,0%500
10K0,416741,7%416,7 (marcado 417)
9K0,375037,5%375
8K0,333333,3%333,3 (marcado 333)

Dois detalhes importam quando você transforma esta tabela em preços:

  • As marcações de teor são padrões mínimos. Uma marcação 585 significa pelo menos 58,5% de ouro, um pouco mais que 14 ÷ 24 = 58,33%. Cada país define os seus próprios padrões e tolerâncias, então o teor real de uma peça pode ficar um pouco acima da fração do quilate.
  • O ouro puro não é exatamente 1,0000. Barras de investimento normalmente têm teor 999,9 ou 999. O preço do 24K na MetalAPI usa uma pureza de exatamente 1, o que o torna igual ao preço à vista.

Os quilates que importam dependem de onde você vende. 22K e 21K são tradicionais na joalheria do Sul da Ásia e de grande parte do Oriente Médio, 18K e 14K são difundidos na Europa e na América do Norte, e o 9K é comum no Reino Unido. Ofereça os quilates que os seus clientes realmente compram.

Calculando os preços por quilate você mesmo

O ouro à vista é cotado por onça troy de ouro puro. Para obter o preço por grama de um quilate, converta a unidade e depois ajuste pela pureza. Com o preço à vista de exemplo da documentação da MetalAPI, 3.997,89 USD por onça troy (uma ilustração, não um preço ao vivo):

  1. Preço por grama do ouro puro: 3.997,89 ÷ 31,1034768 = 128,5351 USD.
  2. Preço por grama do ouro 22K: 128,5351 × 22 ÷ 24 = 117,8239 USD.
  3. Preço por grama do ouro 18K: 128,5351 × 18 ÷ 24 = 96,4014 USD.

O mesmo cálculo em JavaScript, com uma segunda função para precificar pelo teor milesimal em vez do quilate:

karat.mjs
const GRAMS_PER_TROY_OZ = 31.1034768;

/** Preço por grama do ouro em um quilate (24 = ouro puro). */
export function karatPricePerGram(spotPerTroyOz, karat) {
  return (spotPerTroyOz / GRAMS_PER_TROY_OZ) * (karat / 24);
}

/** Preço por grama em um teor milesimal, como 585 ou 916. */
export function finenessPricePerGram(spotPerTroyOz, fineness) {
  return (spotPerTroyOz / GRAMS_PER_TROY_OZ) * (fineness / 1000);
}

const spot = 3997.89; // preço de exemplo, USD por onça troy
for (const k of [24, 22, 21, 18, 14, 10, 9]) {
  console.log(`${k}K`, karatPricePerGram(spot, k).toFixed(4));
}
// 24K 128.5351, 22K 117.8239, 21K 112.4683, 18K 96.4014, 14K 74.9788, 10K 53.5563, 9K 48.2007
console.log("585", finenessPricePerGram(spot, 585).toFixed(4)); // 75.1931

Comece por um preço à vista que já esteja na sua moeda de venda (base=EUR, base=INR e assim por diante), para que o preço do ouro e a taxa de câmbio sejam do mesmo momento. Converter um preço por grama em dólares com uma taxa de câmbio obtida em outro momento adiciona um erro que não tem nada a ver com o ouro.

Se você precifica pela marcação de teor e não pelo quilate, use a função de teor milesimal. A diferença entre 583,3 e 585 é de cerca de 0,3% do valor do metal: pequena por grama, mas visível em uma corrente pesada. Seja qual for a sua escolha, use-a de forma consistente e documente-a.

Obtendo preços por quilate no endpoint /carat

A MetalAPI faz essas contas para você em /carat, que está disponível em todos os planos pagos, a partir do Lite. Ele aceita estes parâmetros:

  • carat: 24 (padrão), 23, 22, 21, 20, 18, 16, 14, 12, 10, 9, 8 ou all.
  • base: a moeda dos preços, USD por padrão.
  • unit: troy_oz por padrão; gram é a escolha habitual na joalheria.
  • date: um YYYY-MM-DD opcional para os preços por quilate de um dia passado.
bash
curl "https://metalapi.com/api/v1/carat?carat=22&unit=gram&base=EUR" \
  -H "X-API-Key: $METALAPI_KEY"

A resposta, com os valores de exemplo da referência da API:

Exemplo de resposta
{
  "success": true,
  "carat": "22",
  "date": "2026-10-24",
  "base": "EUR",
  "timestamp": 1792834892,
  "rates": {
    "XAU22K": { "price": 105.5297, "unit": "gram", "carat": "22", "purity": 0.916667 }
  }
}

Com carat=all, você recebe todos os quilates em uma única requisição, que custa o mesmo que um único quilate. Cada entrada tem a chave XAU<karat>K e traz o preço, a unidade, o quilate e a pureza aplicada. Este exemplo está resumido:

Exemplo de resposta (carat=all, resumido)
{
  "success": true,
  "carat": "all",
  "date": "2026-10-23",
  "base": "USD",
  "timestamp": 1792765800,
  "rates": {
    "XAU24K": { "price": 128.53515, "unit": "gram", "carat": "24", "purity": 1 },
    "XAU22K": { "price": 117.82389, "unit": "gram", "carat": "22", "purity": 0.916667 },
    "XAU18K": { "price": 96.401361, "unit": "gram", "carat": "18", "purity": 0.75 },
    "XAU14K": { "price": 74.978836, "unit": "gram", "carat": "14", "purity": 0.583333 }
  }
}

Lendo todos os quilates em dirhams dos Emirados Árabes por grama no Node.js 18 ou mais recente:

carat.mjs
const params = new URLSearchParams({ carat: "all", unit: "gram", base: "AED" });
const res = await fetch(`https://metalapi.com/api/v1/carat?${params}`, {
  headers: { "X-API-Key": process.env.METALAPI_KEY },
});
const data = await res.json();
if (!data.success) throw new Error(`${data.error.code} ${data.error.type}: ${data.error.info}`);

for (const row of Object.values(data.rates)) {
  console.log(`${row.carat}K: ${row.price.toFixed(2)} ${data.base} per ${row.unit}`);
}

No plano Free, /carat retorna o erro 106 (plan_restriction) junto com uma upgrade_url. Um quilate não suportado retorna 210 (invalid_carat). No Free, você ainda pode aplicar a fórmula acima ao preço do ouro de /latest, no intervalo de atualização diário do plano Free.

Preços na sua moeda local

Joias são compradas e vendidas em moeda local, então defina base como a moeda da loja: INR para rupias, AED para dirhams, TRY para liras, GBP para libras. Todas as 57 moedas suportadas funcionam e, como o ouro e a taxa de câmbio vêm do mesmo snapshot, os números são consistentes entre si.

bash
# Todos os quilates em rupias indianas por grama
curl "https://metalapi.com/api/v1/carat?carat=all&unit=gram&base=INR" \
  -H "X-API-Key: $METALAPI_KEY"

# 22K em liras turcas por grama em um dia passado
curl "https://metalapi.com/api/v1/carat?carat=22&unit=gram&base=TRY&date=2026-10-01" \
  -H "X-API-Key: $METALAPI_KEY"

Para mercados que cotam em tolas, multiplique o preço por grama por 11,6638038, ou o preço por onça troy por 0,375. Uma barra de 10 tolas pesa 116,638 g. O artigo sobre conversão de unidades traz os fatores exatos para tolas, taels e pennyweights.

Três pontos práticos:

  • A atualização segue o seu plano. /carat retorna preços tão recentes quanto o seu plano permite: a cada 30 minutos no Lite, a cada 10 minutos no Standard, até a cada 5 segundos no Enterprise. Uma loja que atualiza o seu quadro de preços algumas vezes por dia não precisa do plano mais rápido.
  • Mostre o timestamp. O campo timestamp informa a clientes e auditores quando o preço foi obtido.
  • Fins de semana. O ouro à vista para de ser negociado na sexta-feira às 17:00, no horário de Nova York, e volta no domingo às 17:00, então os preços por quilate ficam no último preço de sexta-feira durante o fim de semana.

Do preço por quilate ao preço da joia

O preço por quilate é o valor do ouro contido na peça. O preço de uma peça pronta soma vários componentes, e a forma de calculá-los varia conforme o país, os costumes do comércio e o negócio. Os componentes habituais são:

  • Valor do metal: peso líquido de ouro × preço por grama do quilate. Pedras, pérolas e outras partes que não são de ouro são pesadas separadamente e excluídas.
  • Custo de feitio: mão de obra e design, cobrados por grama, como porcentagem do valor do metal ou como valor fixo por peça. Alguns mercados também acrescentam uma margem para o metal perdido na fabricação.
  • Pedras e outros materiais: precificados em separado.
  • Taxas de marcação de teor ou de certificação, quando se aplicam.
  • Impostos: IVA, GST ou imposto sobre vendas. Alíquotas e regras variam conforme o país, e alguns países tratam o ouro de investimento de forma diferente das joias. Na União Europeia, por exemplo, o ouro de investimento tem uma isenção especial de IVA que não abrange joias.

Aqui está uma calculadora de orçamento mínima que mantém essas partes separadas. Ela usa Decimal em todo o cálculo, para que os centavos da fatura fechem:

quote.py
from dataclasses import dataclass
from decimal import Decimal, ROUND_HALF_UP

CENT = Decimal("0.01")


@dataclass
class QuoteInput:
    weight_g: Decimal  # peso líquido de ouro, sem as pedras
    karat_price_per_g: Decimal  # de /carat?unit=gram, na sua moeda
    making_per_g: Decimal = Decimal("0")  # custo fixo de feitio por grama
    making_pct: Decimal = Decimal("0")  # ou uma fração do valor do metal
    stones: Decimal = Decimal("0")  # precificadas em separado
    tax_rate: Decimal = Decimal("0")  # IVA, GST ou imposto sobre vendas da sua jurisdição


def jewelry_quote(q: QuoteInput) -> dict:
    metal = q.weight_g * q.karat_price_per_g
    making = q.weight_g * q.making_per_g + metal * q.making_pct
    subtotal = metal + making + q.stones
    tax = subtotal * q.tax_rate
    parts = {"metal": metal, "making": making, "stones": q.stones, "tax": tax, "total": subtotal + tax}
    return {k: v.quantize(CENT, rounding=ROUND_HALF_UP) for k, v in parts.items()}


# Valores apenas ilustrativos: 10 g de 22K ao preço de exemplo de 117.8239 por grama,
# custo de feitio de 12% e alíquota de imposto de 20%.
print(jewelry_quote(QuoteInput(
    weight_g=Decimal("10"),
    karat_price_per_g=Decimal("117.8239"),
    making_pct=Decimal("0.12"),
    tax_rate=Decimal("0.20"),
)))

Com esses valores, o script imprime um valor do metal de 1.178,24, custo de feitio de 141,39, imposto de 263,93 e um total de 1.583,55. O custo de feitio e a alíquota de imposto são valores de exemplo, não recomendações. Se há imposto, sobre quais componentes e com qual alíquota são perguntas para o seu contador ou consultor tributário.

Este artigo explica cálculos. Ele não constitui recomendação de investimento, de preços ou tributária.

Valores de recompra e de sucata

Comprar ouro de volta dos clientes funciona no sentido inverso. O ponto de partida é o mesmo valor do metal, mas ele deve se basear no teor efetivamente medido, e não no quilate marcado:

valor da sucata = peso em gramas × teor milesimal ÷ 1.000 × preço à vista por grama − descontos de refino e manuseio

Os compradores costumam testar o teor, por exemplo com análise por fluorescência de raios X (XRF) ou testes com ácido, porque peças mais antigas podem ficar abaixo da marcação e a solda das correntes reduz a pureza média. Mantenha o desconto como um parâmetro explícito e documentado no seu código, em vez de escondê-lo em um preço à vista mais baixo, para que ele apareça com clareza nos orçamentos e nas auditorias.

Use aqui o preço por grama do 24K (ou /latest com unit=gram) como preço à vista e aplique você mesmo o teor medido. Os preços por quilate de /carat pressupõem a fração exata K ÷ 24, o que é correto para precificar peças novas por quilate, mas não para um resultado de ensaio como 912.

Checklist de implementação

  • Solicite carat=all uma vez e mantenha o resultado em cache pelo intervalo de atualização do seu plano, em vez de fazer uma chamada por quilate ou por produto.
  • Armazene o preço, o timestamp e a pureza usados em cada orçamento e pedido, para poder explicar um número depois.
  • Use date para preços históricos por quilate, por exemplo ao recalcular uma fatura antiga. O artigo Preços históricos de ouro e prata via API trata de intervalos maiores e de armazenamento local.
  • Arredonde apenas na exibição, usando as casas decimais de cada moeda.
  • Mantenha a chave de API no seu servidor. Para mostrar um quadro de preços do ouro no site de uma loja sem escrever código, use um widget incorporável.
  • Se você só precisa de alguns quilates, a fórmula aplicada aos dados de /latest funciona em todos os planos. /carat poupa as contas e retorna números prontos e consistentes nos planos pagos.

A documentação da API descreve todos os parâmetros de /carat, a página de preços mostra quais planos o incluem, e o guia da API de preço do ouro trata de chaves, erros e cache em geral. Para testar com o seu próprio catálogo, cadastre-se e obtenha uma chave.

Experimente com seus próprios dados

Crie uma conta grátis e faça sua primeira requisição em menos de dois minutos. 100 requisições por mês, sem cartão de crédito.

Continue lendo