Obter a fatura de um mês
Retorna os detalhes de cobrança de um mês selecionado.
https://api2.transloadit.com/ bill/ {billYearMonth}Recupera os dados de faturamento do mês solicitado.
Verifique se a resposta tem ok === "BILL_FOUND" antes de usar seus campos de faturamento. Uma fatura ausente ou uma consulta malsucedida retorna error: "BILL_NOT_FOUND" com HTTP 200, portanto o status HTTP sozinho não comprova que uma fatura foi encontrada.
O parâmetro de caminho billYearMonth está no formato YYYY-MM. Por exemplo, para recuperar sua fatura de março de 2019 você usaria 2019-03.
Exemplo de requisição
Defina BILL_YEAR_MONTH com o valor do seu recurso sem aplicar codificação percentual.
Workspaces cancelados não podem criar novos tokens bearer. Este endpoint continua disponível com uma Auth Key ativa existente: use a receita de faturamento assinada em vez da configuração de token abaixo. A chave precisa conceder os escopos exigidos por este endpoint.
Execute esta requisição em um shell no lado do servidor com curl e um token bearer adequado em TRANSLOADIT_TOKEN. Se você precisar de um token, expanda a configuração abaixo.
Precisa de um token bearer?
Em um shell confiável no lado do servidor com curl e jq, defina TRANSLOADIT_KEY e TRANSLOADIT_SECRET com sua Auth Key e seu Auth Secret. Mantenha ambas as credenciais e o token resultante em segredo; nunca execute esta configuração em código de navegador.
Primeiro, crie um token com os escopos exigidos por este endpoint. Sua Auth Key já precisa conceder esses escopos.
if ! TOKEN_RESPONSE="$(curl --fail-with-body -sS \
--request POST \
--url 'https://api2.transloadit.com/token' \
--user "${TRANSLOADIT_KEY:?Set TRANSLOADIT_KEY}:${TRANSLOADIT_SECRET:?Set TRANSLOADIT_SECRET}" \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'aud=api2' \
--data-urlencode 'scope=billing:read')"; then
printf '%s\n' "$TOKEN_RESPONSE" >&2
exit 1
fi
TRANSLOADIT_TOKEN="$(printf '%s' "$TOKEN_RESPONSE" |
jq -er '.access_token | strings | select(length > 0)')" || exit 1
Mantenha este shell aberto e execute a requisição abaixo. Reutilize o token enquanto ele continuar válido.
curl --fail-with-body -sS --request GET --get \
--url "https://api2.transloadit.com/bill/${BILL_YEAR_MONTH:?Set BILL_YEAR_MONTH}" \
--header "Authorization: Bearer ${TRANSLOADIT_TOKEN:?Set TRANSLOADIT_TOKEN}" \
--data-urlencode 'params={}'
Autenticação
Este endpoint aceita params assinados ou um token bearer. Consulte Autenticação para instruções de configuração.
Escopo necessário para a Auth Key ou o token bearer: billing:read.
Requisições assinadas exigem tanto uma signature quanto um timestamp params.auth.expires no futuro. Tokens Bearer não exigem nenhum dos dois.
Parâmetros de caminho
billYearMonth(segmento de caminho), obrigatório. padrão:^[0-9]{4}-(?:0[1-9]|1[0-2])$
Parâmetros de consulta
params(string JSON). Um objeto codificado em JSON cujas chaves suportadas estão listadas abaixo.signature(string). Obrigatório para requisições assinadas. Omita este campo ao usar um bearer token.
Chaves suportadas dentro do campo params assinado
Os campos de autenticação desta lista se aplicam a requisições assinadas. Com um bearer token, você pode omitir params.auth e o campo signature separado. Compare os parâmetros de requisição específicos de autenticação abaixo.
Esquema JSON completo
params: Somente os campos listados para este objeto são aceitos.
| Campo | Tipo e descrição |
|---|---|
params.obrigatório para requisições assinadas; opcional com um bearer token | Contém a chave de API da Transloadit e os metadados de autenticação por assinatura para uma requisição de faturamento.
|
params.obrigatório | stringTimestamp de expiração no formato ISO 8601 situado no futuro. Obrigatório quando uma requisição é assinada ou exige autenticação por assinatura; requisições autenticadas por bearer podem omiti-lo. |
params.obrigatório | stringChave de API da Transloadit usada para autenticar as requisições |
params. | string | integerValor único e aleatório incluído nos parâmetros da requisição assinada para tornar cada assinatura única e evitar a reutilização acidental de assinaturas. |
params. | string | integerValor único e aleatório incluído nos parâmetros da requisição assinada para tornar cada assinatura única e evitar a reutilização acidental de assinaturas. |
Parâmetros de requisição por método de autenticação
Com parâmetros assinados
Inclua sua Auth Key como params.auth.key. Ao assinar a requisição, inclua um timestamp futuro em params.auth.expires e envie a assinatura no campo separado signature. As definições de campos abaixo usam caminhos dentro de params.
Esquema JSON completo
params: Somente os campos listados para este objeto são aceitos.
Usa as definições de campo acima: params.auth, params.nonce
Com um token bearer
Envie o token bearer no cabeçalho Authorization. Você pode omitir params.auth e o campo signature separado. Os demais parâmetros obrigatórios continuam se aplicando. As definições de campos abaixo usam caminhos dentro de params.
Esquema JSON completo
params: Somente os campos listados para este objeto são aceitos.
Usa as definições de campo acima: params.nonce
| Campo | Tipo e descrição |
|---|---|
params. | Contém a chave de API da Transloadit e os metadados de autenticação por assinatura para uma requisição de faturamento.
|
params. | stringTimestamp de expiração no formato ISO 8601 situado no futuro. Obrigatório quando uma requisição é assinada ou exige autenticação por assinatura; requisições autenticadas por bearer podem omiti-lo. |
params. | stringChave de API da Transloadit usada para autenticar as requisições |
params. | string | integerValor único e aleatório incluído nos parâmetros da requisição assinada para tornar cada assinatura única e evitar a reutilização acidental de assinaturas. |
Acesso à cobrança após o cancelamento
Workspaces cancelados não podem criar novos bearer tokens. Para obter as faturas deles, use uma requisição assinada com uma Auth Key ativa já existente e o respectivo Auth Secret, em vez da configuração de token descrita acima. A chave ainda precisa conceder o escopo listado para este endpoint.
O SDK Node.js assina as requisições de cobrança diretamente; ele não chama /token. Em um projeto
Node.js confiável no lado do servidor, instale-o com yarn add @transloadit/node. Defina
TRANSLOADIT_KEY, TRANSLOADIT_SECRET e BILL_YEAR_MONTH (por exemplo, 2026-08) no ambiente.
Mantenha o secret no seu backend.
Este exemplo de SDK usa sha384, o padrão para chaves de API recém-criadas. Se a sua chave usar
outro algoritmo de assinatura, siga a Signature Authentication
com esse algoritmo configurado.
Salve o conteúdo a seguir como bill.mjs e execute node bill.mjs:
import { Transloadit } from '@transloadit/node'
const { TRANSLOADIT_KEY, TRANSLOADIT_SECRET, BILL_YEAR_MONTH } = process.env
if (!TRANSLOADIT_KEY || !TRANSLOADIT_SECRET || !BILL_YEAR_MONTH) {
throw new Error('Set TRANSLOADIT_KEY, TRANSLOADIT_SECRET, and BILL_YEAR_MONTH')
}
const transloadit = new Transloadit({
authKey: TRANSLOADIT_KEY,
authSecret: TRANSLOADIT_SECRET,
})
const bill = await transloadit.getBill(BILL_YEAR_MONTH)
if (bill.ok !== 'BILL_FOUND') throw new Error('No bill was returned')
console.log(JSON.stringify(bill, null, 2))
Resposta
Veja um exemplo de corpo de resposta:
{
"additional_gb": 0,
"additional_gb_fee": 0,
"address_1": "Jimbostreet 19",
"address_2": "",
"bill_limit": 0,
"city": "Berlin",
"company": "Jimbo Jones GmbH",
"country": "Germany",
"created": "2014-07-01T06:58:32.000Z",
"credit": 0,
"email": "testuser@example.org",
"invoice_id": "0d04b65924da41d4b68c80f776d196d5",
"is_prorated": false,
"month": "2014-06",
"ok": "BILL_FOUND",
"plan": {
"gb_included": 35,
"gb_limit": null,
"has_lifetime_limit": false,
"id": "3599821193a1f77baafb98e5f8fb17a6",
"price_per_gb": 2.85,
"price_per_month": 99
},
"reverse_charge_vat": false,
"reward_discount": 1.98,
"reward_discount_percent": 2,
"robots": {
"/assemblies": {
"factor": 0,
"freeGb": 0,
"gb": 0,
"gbFactorApplied": 0,
"rawGb": 0
},
"/s3/store": {
"factor": 10,
"freeGb": 0.57,
"gb": 0.6,
"gbFactorApplied": 1.17,
"rawGb": 11.75
},
"/video/encode": {
"factor": 1,
"freeGb": 0,
"gb": 21.05,
"gbFactorApplied": 21.05,
"rawGb": 21.05
},
"/video/thumbs": {
"factor": 10,
"freeGb": 0,
"gb": 0.34,
"gbFactorApplied": 0.34,
"rawGb": 3.42
}
},
"signup_discount": 0,
"signup_discount_percent": 0,
"state": null,
"sub_total": 99,
"to": "Test User",
"total": 115.45,
"used_gb": 21.99,
"vat": 18.43,
"vat_id": "",
"vat_rate": 0.19,
"zip": "10117"
}sucesso 2xx
Corpo da resposta JSON. application/json text/plain; charset=utf-8
Esquema do corpo da resposta
Esquema JSON completo
Qualquer um dos esquemas a seguir pode ser aplicado:
Variante 1
A resposta contém apenas os campos listados para este objeto.
| Campo | Tipo e descrição |
|---|---|
additional_gb | number (mínimo: 0) |
additional_gb_fee | number |
address_1 | null | string |
address_2 | null | string |
bill_limit | number |
city | null | string |
company | null | string |
country | null | string |
country_id | null | string |
coupon_discount | number | string | null
|
coupon_discount_percent | number | string | null
|
createdobrigatório | string | null (comprimento mínimo: 1) |
creditobrigatório | number | string | null
|
currency | null | string |
email | null | string |
final_sub_total | number |
invoice_idobrigatório | null |
is_proratedobrigatório | boolean |
monthobrigatório | stringPadrão de validação (expressão regular)^[0-9]{4}-(?:0[1-9]|1[0-2])$ |
okobrigatório | string (sempre: "BILL_FOUND") |
planobrigatório |
|
plan.obrigatório | number | string
|
plan.obrigatório | number | string | null
|
plan.obrigatório | boolean | 0 | 1 | "0" | "1" | nullQualquer um dos esquemas a seguir pode ser aplicado: boolean | 0 | 1 | "0" | "1"boolean | 0 | 1 | "0" | "1"nullnull |
plan.obrigatório | null | string |
plan.obrigatório | number | string
|
plan.obrigatório | number | string
|
po_number | null | string |
reverse_charge_vat | boolean |
reward_discount | number | string | null
|
reward_discount_percent | number | string | null
|
robotsobrigatório | objectEsquema de propriedade adicionalobject (propriedades obrigatórias: gb)Detalhes adicionais do esquema estão disponíveis no JSON Schema completo. |
signup_discount | number | string | null
|
signup_discount_percent | number | string | null
|
state | null | string |
sub_totalobrigatório | number |
tiers | qualquer valor |
to | null | string |
to_contact_email_address | null | string |
totalobrigatório | number |
used_gb | number (mínimo: 0) |
vat | number |
vat_id | null | string |
vat_rate | number |
zip | null | string |
Variante 2
A resposta contém apenas os campos listados para este objeto.
| Campo | Tipo e descrição |
|---|---|
additional_gb | number (mínimo: 0) |
additional_gb_fee | number |
address_1 | null | string |
address_2 | null | string |
bill_limit | number |
city | null | string |
company | null | string |
country | null | string |
country_id | null | string |
coupon_discount | number | string | null
|
coupon_discount_percent | number | string | null
|
createdobrigatório | string | null (comprimento mínimo: 1) |
creditobrigatório | number | string | null
|
currency | null | string |
custom_expenses | qualquer valor |
email | null | string |
final_sub_total | number |
invoice_idobrigatório | string | number |
is_proratedobrigatório | boolean |
monthobrigatório | stringPadrão de validação (expressão regular)^[0-9]{4}-(?:0[1-9]|1[0-2])$ |
okobrigatório | string (sempre: "BILL_FOUND") |
planobrigatório |
|
plan.obrigatório | number | string
|
plan.obrigatório | number | string | null
|
plan.obrigatório | boolean | 0 | 1 | "0" | "1" | nullQualquer um dos esquemas a seguir pode ser aplicado: boolean | 0 | 1 | "0" | "1"boolean | 0 | 1 | "0" | "1"nullnull |
plan.obrigatório | null | string |
plan.obrigatório | number | string
|
plan.obrigatório | number | string
|
po_number | null | string |
reverse_charge_vat | boolean |
reward_discount | number | string | null
|
reward_discount_percent | number | string | null
|
robotsobrigatório | string | number | boolean | null | Array<qualquer valor> | objectQualquer um dos esquemas a seguir pode ser aplicado: stringstringnumbernumberbooleanbooleannullnullArray<qualquer valor>Array<qualquer valor>Esquema do item do arrayqualquer valorobjectobjectEsquema de propriedade adicionalqualquer valor |
signup_discount | number | string | null
|
signup_discount_percent | number | string | null
|
state | null | string |
sub_totalobrigatório | number |
tiers | qualquer valor |
to | null | string |
to_contact_email_address | null | string |
totalobrigatório | number |
used_gb | number (mínimo: 0) |
vat | number |
vat_id | null | string |
vat_rate | number |
zip | null | string |
Resposta de erro
Corpo da resposta JSON. application/json text/plain; charset=utf-8
Esquema do corpo da resposta
Esquema JSON completo
A resposta pode conter campos adicionais.
| Campo | Tipo e descrição |
|---|---|
assembly_id | string |
error | string (comprimento mínimo: 1) |
http_code | number | string
|
message | stringExplicação do erro legível por humanos. A redação pode variar; use o código |
reason | null | string | number | boolean | Array<qualquer valor> | objectQualquer um dos esquemas a seguir pode ser aplicado: nullnullstringstringnumbernumberbooleanbooleanArray<qualquer valor>Array<qualquer valor>Esquema do item do arrayqualquer valorobjectobjectEsquema de propriedade adicionalqualquer valor |
HTTP 400
Corpo da resposta JSON. application/json text/plain; charset=utf-8
Esquema do corpo da resposta
Esquema JSON completo
Erros nomeados e o formato geral de erro
error: "SIGNATURE_REUSE_DETECTED"
A solicitação foi negada por motivos de segurança. Se você acha que isso é um erro, entre em contato com o suporte.
A resposta pode conter campos adicionais.
Formato geral de erro
O invoice_id é null para o mês atual.