Monatsrechnung abrufen
Gibt die Abrechnungsdetails für einen ausgewählten Monat zurück.
https://api2.transloadit.com/ bill/ {billYearMonth}Ruft die Abrechnungsdaten für den angeforderten Monat ab.
Prüfen Sie, ob für die Antwort ok === "BILL_FOUND" gilt, bevor Sie deren Abrechnungsfelder verwenden. Bei einer fehlenden
Rechnung oder einer fehlgeschlagenen Abfrage wird error: "BILL_NOT_FOUND" mit HTTP 200 zurückgegeben. Der HTTP-Status allein
belegt daher nicht, dass eine Rechnung gefunden wurde.
Der Pfadparameter billYearMonth hat das Format YYYY-MM. Um beispielsweise Ihre Rechnung für März
2019 abzurufen, verwenden Sie 2019-03.
Anfragebeispiel
Setzen Sie BILL_YEAR_MONTH auf Ihren Ressourcenwert, ohne ihn prozentzukodieren.
Gekündigte Workspaces können keine neuen Bearer-Token erstellen. Dieser Endpunkt bleibt mit einem vorhandenen aktiven Auth Key verfügbar: Verwenden Sie die Anleitung für signierte Abrechnungsanfragen anstelle der folgenden Token-Einrichtung. Der Auth Key muss die für diesen Endpunkt erforderlichen Scopes gewähren.
Führen Sie diese Anfrage in einer serverseitigen Shell mit curl und einem geeigneten Bearer-Token in TRANSLOADIT_TOKEN aus. Wenn Sie ein Token benötigen, klappen Sie die folgende Einrichtungsanleitung auf.
Benötigen Sie ein Bearer-Token?
Setzen Sie in einer vertrauenswürdigen serverseitigen Shell mit curl und jq die Variablen TRANSLOADIT_KEY und TRANSLOADIT_SECRET auf Ihren Auth Key bzw. Ihr Auth Secret. Halten Sie beide Zugangsdaten und das daraus resultierende Token geheim. Führen Sie diese Einrichtung niemals in Browsercode aus.
Erstellen Sie zunächst ein Token mit den für diesen Endpunkt erforderlichen Scopes. Ihr Auth Key muss diese Scopes bereits gewähren.
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
Lassen Sie diese Shell geöffnet und führen Sie die folgende Anfrage aus. Verwenden Sie das Token wieder, solange es gültig ist.
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={}'
Authentifizierung
Dieser Endpunkt akzeptiert signierte params oder ein Bearer-Token. Anweisungen zur Einrichtung finden Sie unter Authentifizierung.
Erforderlicher Berechtigungsumfang für Auth Key oder Bearer-Token: billing:read.
Signierte Anfragen erfordern sowohl eine signature als auch einen in der Zukunft liegenden Zeitstempel für params.auth.expires. Bearer-Tokens erfordern keines von beiden.
Pfadparameter
billYearMonth(Pfadsegment), erforderlich. Muster:^[0-9]{4}-(?:0[1-9]|1[0-2])$
Query-Parameter
params(JSON-Zeichenfolge). Ein JSON-codiertes Objekt, dessen unterstützte Schlüssel unten aufgeführt sind.signature(Zeichenfolge). Für signierte Anfragen erforderlich. Lassen Sie dieses Feld weg, wenn Sie ein Bearer-Token verwenden.
Unterstützte Schlüssel im signierten Feld params
Die Authentifizierungsfelder in dieser Liste gelten für signierte Anfragen. Mit einem Bearer-Token können Sie params.auth und das separate Feld signature weglassen. Vergleichen Sie unten die Anfrageparameter der einzelnen Authentifizierungsmethoden.
Vollständiges JSON Schema
params: Es werden nur die für dieses Objekt aufgeführten Felder akzeptiert.
| Feld | Typ und Beschreibung |
|---|---|
params.für signierte Anfragen erforderlich; mit einem Bearer-Token optional | Enthält den Transloadit-API-Schlüssel und Metadaten für die Signature Authentication einer Billing-Anfrage.
|
params.erforderlich | stringISO-8601-Ablaufzeitstempel in der Zukunft. Erforderlich, wenn eine Anfrage signiert ist oder Signaturauthentifizierung erfordert; mit Bearer authentifizierte Anfragen können ihn weglassen. |
params.erforderlich | stringTransloadit API-Schlüssel zur Authentifizierung von Anfragen |
params. | string | integerEindeutiger Zufallswert, der in die Parameter signierter Anfragen aufgenommen wird, damit jede Signatur eindeutig ist und nicht versehentlich wiederverwendet werden kann. |
Anfrageparameter nach Authentifizierungsmethode
Mit signierten Parametern
Geben Sie Ihren Auth Key als params.auth.key an. Wenn Sie die Anfrage signieren, geben Sie einen in der Zukunft liegenden Zeitstempel für params.auth.expires an und senden Sie die Signature im separaten Feld signature. Die folgenden Felddefinitionen verwenden Pfade innerhalb von params.
Vollständiges JSON Schema
params: Es werden nur die für dieses Objekt aufgeführten Felder akzeptiert.
Verwendet die oben angegebenen Felddefinitionen: params.auth, params.nonce
Mit einem Bearer-Token
Senden Sie das Bearer-Token im Authorization-Header. Sie können params.auth und das separate Feld signature weglassen. Die übrigen erforderlichen Parameter müssen weiterhin angegeben werden. Die folgenden Felddefinitionen verwenden Pfade innerhalb von params.
Vollständiges JSON Schema
params: Es werden nur die für dieses Objekt aufgeführten Felder akzeptiert.
Verwendet die oben angegebenen Felddefinitionen: params.nonce
| Feld | Typ und Beschreibung |
|---|---|
params. | Enthält den Transloadit-API-Schlüssel und Metadaten für die Signature Authentication einer Billing-Anfrage.
|
params. | stringISO-8601-Ablaufzeitstempel in der Zukunft. Erforderlich, wenn eine Anfrage signiert ist oder Signaturauthentifizierung erfordert; mit Bearer authentifizierte Anfragen können ihn weglassen. |
params. | stringTransloadit API-Schlüssel zur Authentifizierung von Anfragen |
Zugriff auf Rechnungen nach der Kündigung
Gekündigte Workspaces können keine neuen Bearer-Token erstellen. Um ihre Rechnungen abzurufen, verwenden Sie eine signierte Anfrage mit einem vorhandenen aktiven Auth Key und dessen Auth Secret anstelle der oben beschriebenen Token-Einrichtung. Der Auth Key muss weiterhin den für diesen Endpunkt aufgeführten Scope gewähren.
Das Node.js-SDK signiert Rechnungsanfragen direkt; es ruft /token nicht auf. Installieren Sie es in einem vertrauenswürdigen
serverseitigen Node.js-Projekt mit yarn add @transloadit/node. Legen Sie TRANSLOADIT_KEY,
TRANSLOADIT_SECRET und BILL_YEAR_MONTH (zum Beispiel 2026-08) in der Umgebung fest.
Bewahren Sie das Auth Secret in Ihrem Backend auf.
Dieses SDK-Beispiel verwendet sha384, den Standard für neu erstellte API-Schlüssel. Wenn Ihr Schlüssel
einen anderen Signature-Algorithmus verwendet, folgen Sie stattdessen der Anleitung unter Signature Authentication
und verwenden Sie dabei diesen konfigurierten Algorithmus.
Speichern Sie Folgendes als bill.mjs und führen Sie node bill.mjs aus:
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))
Antwort
Hier sehen Sie ein Beispiel für einen Antworttext:
{
"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"
}2xx-Erfolg
JSON-Response-Body. application/json text/plain; charset=utf-8
Schema des Response-Bodys
Vollständiges JSON Schema
Eines der folgenden Schemas kann gelten:
Variante 1
Die Antwort enthält nur die für dieses Objekt aufgeführten Felder.
| Feld | Typ und Beschreibung |
|---|---|
additional_gb | number (Minimum: 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
|
createderforderlich | string | null (minimale Länge: 1) |
crediterforderlich | number | string | null
|
currency | null | string |
email | null | string |
final_sub_total | number |
invoice_iderforderlich | null |
is_proratederforderlich | boolean |
montherforderlich | stringValidierungsmuster (regulärer Ausdruck)^[0-9]{4}-(?:0[1-9]|1[0-2])$ |
okerforderlich | string (immer: "BILL_FOUND") |
planerforderlich |
|
plan.erforderlich | number | string
|
plan.erforderlich | number | string | null
|
plan.erforderlich | boolean | 0 | 1 | "0" | "1" | nullEines der folgenden Schemas kann gelten: boolean | 0 | 1 | "0" | "1"boolean | 0 | 1 | "0" | "1"null |
plan.erforderlich | null | string |
plan.erforderlich | number | string
|
plan.erforderlich | number | string
|
po_number | null | string |
reverse_charge_vat | boolean |
reward_discount | number | string | null
|
reward_discount_percent | number | string | null
|
robotserforderlich | objectSchema für zusätzliche Eigenschaftenobject (erforderliche Eigenschaften: gb)Weitere Schemadetails finden Sie im vollständigen JSON Schema. |
signup_discount | number | string | null
|
signup_discount_percent | number | string | null
|
state | null | string |
sub_totalerforderlich | number |
tiers | beliebiger Wert |
to | null | string |
to_contact_email_address | null | string |
totalerforderlich | number |
used_gb | number (Minimum: 0) |
vat | number |
vat_id | null | string |
vat_rate | number |
zip | null | string |
Variante 2
Die Antwort enthält nur die für dieses Objekt aufgeführten Felder.
| Feld | Typ und Beschreibung |
|---|---|
additional_gb | number (Minimum: 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
|
createderforderlich | string | null (minimale Länge: 1) |
crediterforderlich | number | string | null
|
currency | null | string |
custom_expenses | beliebiger Wert |
email | null | string |
final_sub_total | number |
invoice_iderforderlich | string | number |
is_proratederforderlich | boolean |
montherforderlich | stringValidierungsmuster (regulärer Ausdruck)^[0-9]{4}-(?:0[1-9]|1[0-2])$ |
okerforderlich | string (immer: "BILL_FOUND") |
planerforderlich |
|
plan.erforderlich | number | string
|
plan.erforderlich | number | string | null
|
plan.erforderlich | boolean | 0 | 1 | "0" | "1" | nullEines der folgenden Schemas kann gelten: boolean | 0 | 1 | "0" | "1"boolean | 0 | 1 | "0" | "1"null |
plan.erforderlich | null | string |
plan.erforderlich | number | string
|
plan.erforderlich | number | string
|
po_number | null | string |
reverse_charge_vat | boolean |
reward_discount | number | string | null
|
reward_discount_percent | number | string | null
|
robotserforderlich | string | number | boolean | null | Array<beliebiger Wert> | objectEines der folgenden Schemas kann gelten: stringnumberbooleannullArray<beliebiger Wert>Array<beliebiger Wert>Schema eines Array-Elementsbeliebiger WertobjectobjectSchema für zusätzliche Eigenschaftenbeliebiger Wert |
signup_discount | number | string | null
|
signup_discount_percent | number | string | null
|
state | null | string |
sub_totalerforderlich | number |
tiers | beliebiger Wert |
to | null | string |
to_contact_email_address | null | string |
totalerforderlich | number |
used_gb | number (Minimum: 0) |
vat | number |
vat_id | null | string |
vat_rate | number |
zip | null | string |
Fehlerantwort
JSON-Response-Body. application/json text/plain; charset=utf-8
Schema des Response-Bodys
Vollständiges JSON Schema
Die Antwort kann zusätzliche Felder enthalten.
| Feld | Typ und Beschreibung |
|---|---|
assembly_id | string |
error | string (minimale Länge: 1) |
http_code | number | string
|
message | stringMenschenlesbare Erklärung des Fehlers. Die Formulierung kann variieren; verwenden Sie den Code |
reason | null | string | number | boolean | Array<beliebiger Wert> | objectEines der folgenden Schemas kann gelten: nullstringnumberbooleanArray<beliebiger Wert>Array<beliebiger Wert>Schema eines Array-Elementsbeliebiger WertobjectobjectSchema für zusätzliche Eigenschaftenbeliebiger Wert |
HTTP 400
JSON-Response-Body. application/json text/plain; charset=utf-8
Schema des Response-Bodys
Vollständiges JSON Schema
Benannte Fehler und das allgemeine Fehlerformat
error: "SIGNATURE_REUSE_DETECTED"
Die Anfrage wurde aus Sicherheitsgründen abgelehnt. Wenn Sie glauben, dass dies ein Fehler ist, wenden Sie sich bitte an den Support.
Die Antwort kann zusätzliche Felder enthalten.
Allgemeines Fehlerformat
Die invoice_id ist für den aktuellen Monat null.