Gerar token de acesso
Fase 1 da autenticação. Envia as credenciais do parceiro via headers X-API-Key e X-API-Secret e recebe um token JWT válido por 1 hora.
O token retornado deve ser utilizado como Bearer no header Authorization de todas as rotas protegidas.
curl -X POST "https://sandbox-partner-api.keyspot.com.br/v1/auth/token" \
-H "Content-Type: application/json" \
-H "X-API-Key: ks_live_k9xv2mp8qr1nl4wz7jy0ea3sd6fh5tg2u" \
-H "X-API-Secret: ks_secret_c8bn1mq4pk7rv0xj3yw6za9oe2iu5lhd"
import requests
import json
url = "https://sandbox-partner-api.keyspot.com.br/v1/auth/token"
headers = {
"Content-Type": "application/json",
"X-API-Key": "ks_live_k9xv2mp8qr1nl4wz7jy0ea3sd6fh5tg2u",
"X-API-Secret": "ks_secret_c8bn1mq4pk7rv0xj3yw6za9oe2iu5lhd"
}
response = requests.post(url, headers=headers)
print(response.json())
const response = await fetch("https://sandbox-partner-api.keyspot.com.br/v1/auth/token", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "ks_live_k9xv2mp8qr1nl4wz7jy0ea3sd6fh5tg2u",
"X-API-Secret": "ks_secret_c8bn1mq4pk7rv0xj3yw6za9oe2iu5lhd"
}
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
)
func main() {
req, err := http.NewRequest("POST", "https://sandbox-partner-api.keyspot.com.br/v1/auth/token", nil)
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", "ks_live_k9xv2mp8qr1nl4wz7jy0ea3sd6fh5tg2u")
req.Header.Set("X-API-Secret", "ks_secret_c8bn1mq4pk7rv0xj3yw6za9oe2iu5lhd")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://sandbox-partner-api.keyspot.com.br/v1/auth/token')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['X-API-Key'] = 'ks_live_k9xv2mp8qr1nl4wz7jy0ea3sd6fh5tg2u'
request['X-API-Secret'] = 'ks_secret_c8bn1mq4pk7rv0xj3yw6za9oe2iu5lhd'
response = http.request(request)
puts response.body
{
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiresIn": 3600,
"tokenType": "Bearer"
}
}
{
"error": "X-API-Key and X-API-Secret headers are required",
"code": "MISSING_CREDENTIALS"
}
{
"error": "Invalid API key",
"code": "INVALID_API_KEY"
}
{
"error": "Invalid API secret",
"code": "INVALID_API_SECRET"
}
{
"error": "API access disabled for this client",
"code": "API_DISABLED"
}
{
"error": "IP not allowed",
"code": "IP_BLOCKED"
}
{
"error": "Client database not configured",
"code": "NO_DATABASE"
}
/v1/auth/token
Chave de API do parceiro, fornecida pela Keyspot
Secret de API do parceiro, fornecido pela Keyspot
Request Preview
Response
Response will appear here after sending the request
Headers
Chave de API do parceiro, fornecida pela Keyspot
Secret de API do parceiro, fornecido pela Keyspot
Responses
Token JWT para autenticação nas rotas protegidas
Tempo de expiração do token em segundos
Tipo do token (sempre Bearer)
Mensagem de erro legível
Código de erro programático
Mensagem de erro legível
Código de erro programático
Mensagem de erro legível
Código de erro programático
Last updated Mar 13, 2026
Built with Documentation.AI