API REST do Marketing Cloud: autenticação OAuth 2.0 e gravação em Data Extension
Crie o Installed Package, gere o token OAuth 2.0 server-to-server, reaproveite o token e grave linhas numa Data Extension pela API REST.
Integrar um sistema externo ao Marketing Cloud Engagement começa sempre pelo mesmo passo: conseguir um token de acesso. Este tutorial cobre a autenticação server-to-server (OAuth 2.0, client credentials) e um primeiro uso real: gravar linhas numa Data Extension.
1. Installed Package
Em Setup → Apps → Installed Packages:
- New e dê um nome (ex.: "Integração ERP").
- Add Component → API Integration → Server-to-Server.
- Marque só as permissões que a integração precisa. Para gravar em Data Extension: Data → Data Extensions: Read e Write.
- Salve e anote: Client Id, Client Secret, Authentication Base URI e REST Base URI.
2. Pedindo o token
curl -X POST "https://SEU_SUBDOMINIO.auth.marketingcloudapis.com/v2/token" \
-H "Content-Type: application/json" \
-d '{
"grant_type": "client_credentials",
"client_id": "SEU_CLIENT_ID",
"client_secret": "SEU_CLIENT_SECRET",
"account_id": "MID_DA_BUSINESS_UNIT"
}'account_idé o MID da Business Unit em que você quer agir. Sem ele, o token vale para a BU do pacote.- O subdomínio é o mesmo que aparece na Authentication Base URI do pacote.
A resposta:
{
"access_token": "eyJhbGciOi...",
"token_type": "Bearer",
"expires_in": 1079,
"scope": "data_extensions_read data_extensions_write",
"rest_instance_url": "https://SEU_SUBDOMINIO.rest.marketingcloudapis.com/",
"soap_instance_url": "https://SEU_SUBDOMINIO.soap.marketingcloudapis.com/"
}3. Reaproveite o token
O token vale por cerca de 18 minutos (expires_in, em segundos). Pedir um token novo a cada chamada é o erro
mais comum: deixa a integração lenta e pode esbarrar em limites de requisição.
O padrão correto:
- guarde o
access_tokene o horário em que ele expira; - reutilize enquanto faltar mais de um ou dois minutos para expirar;
- peça outro só quando estiver perto do fim, ou quando uma chamada voltar 401.
Use sempre o rest_instance_url que veio na resposta para as chamadas seguintes.
4. Gravando numa Data Extension
O endpoint de upsert de linhas usa a chave externa da Data Extension:
curl -X POST "https://SEU_SUBDOMINIO.rest.marketingcloudapis.com/hub/v1/dataevents/key:PEDIDOS_API/rowset" \
-H "Authorization: Bearer SEU_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '[
{
"keys": { "Numero": "10021" },
"values": { "Email": "ana@exemplo.com", "Valor": "189.90", "Status": "Enviado" }
}
]'keysleva as colunas da chave primária;values, as demais.- Se a linha com aquela chave já existe, ela é atualizada; se não existe, é criada.
- Envie várias linhas no mesmo array em vez de uma chamada por linha.
Erros comuns
| Resposta | Causa provável |
|---|---|
| 401 no token | Client Id ou Secret errado, ou subdomínio de outra conta |
| 401 numa chamada | Token expirado: peça outro |
| 403 | O pacote não tem a permissão daquela operação, ou o account_id aponta para uma BU sem acesso |
| 404 no rowset | Chave externa da Data Extension errada (não é o nome) |
Resumo
Um Installed Package server-to-server, um token reaproveitado até perto de expirar e o rest_instance_url da
resposta: com isso, qualquer integração com o Marketing Cloud fica estável. O upsert por /hub/v1/dataevents é o
jeito mais direto de manter uma Data Extension sincronizada com outro sistema.
Leia também
| Título | Tipo | Plataforma | Faixa | Leitura |
|---|---|---|---|---|
| Transactional Messaging API: e-mail transacional em tempo real no Marketing Cloud | Tutorial | Marketing Cloud Engagement | Marrom | 3 min |
| Subscriber Key igual ao e-mail: o cliente que troca de e-mail vira outra pessoa | Erro | Marketing Cloud Engagement | Amarela | 4 min |
| Query Activity em Overwrite direto na Data Extension final | Erro | Marketing Cloud Engagement | Amarela | 4 min |
| Lookup dentro de loop no AMPscript: rápido no teste, lento no envio real | Erro | Marketing Cloud Engagement | Verde | 3 min |