curl --request GET \
--url https://api.photon.codes/v1/projects/{projectId}/billing \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.photon.codes/v1/projects/{projectId}/billing"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.photon.codes/v1/projects/{projectId}/billing', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.photon.codes/v1/projects/{projectId}/billing",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.photon.codes/v1/projects/{projectId}/billing"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.photon.codes/v1/projects/{projectId}/billing")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.photon.codes/v1/projects/{projectId}/billing")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"entitlementsVersion": 4503599627370495,
"subscriptions": [
{
"baseAmountCents": 4503599627370495,
"cancelsAt": "<string>",
"category": "<string>",
"currency": "<string>",
"currentPeriodEnd": "<string>",
"entitlements": [
{
"featureKey": "<string>",
"value": "<string>"
}
],
"fixedCharges": [
{
"chargeModel": "graduated",
"displayName": "<string>",
"fixedChargeCode": "<string>",
"payInAdvance": true,
"pricing": {
"amount": "<string>",
"tiers": [
{
"flatAmount": "<string>",
"fromUnit": 4503599627370495,
"perUnitAmount": "<string>",
"toUnit": 4503599627370495
}
]
},
"prorated": true,
"quantity": 4503599627370495
}
],
"minimumCommitment": {
"amountCents": 4503599627370495,
"displayName": "<string>"
},
"planCode": "<string>",
"planName": "<string>",
"status": "active",
"tierDisplayName": "<string>",
"categoryDisplayName": "<string>"
}
],
"usage": [
{
"amountCents": 0,
"category": "<string>",
"currency": "<string>",
"displayName": "<string>",
"metricCode": "<string>",
"units": 0,
"categoryDisplayName": "<string>"
}
]
}{
"code": "INVALID_ARGUMENT",
"status": 400,
"title": "Invalid Argument",
"type": "https://photon.codes/docs/problems/invalid-argument"
}{
"code": "NOT_AUTHENTICATED",
"status": 401,
"title": "Not Authenticated",
"type": "https://photon.codes/docs/problems/not-authenticated"
}{
"code": "FORBIDDEN",
"status": 403,
"title": "Forbidden",
"type": "https://photon.codes/docs/problems/forbidden"
}{
"code": "FAILED_PRECONDITION",
"status": 409,
"title": "Failed Precondition",
"type": "https://photon.codes/docs/problems/failed-precondition"
}{
"code": "VALIDATION_FAILED",
"issues": [
{
"code": "invalid_type",
"location": "json",
"message": "Expected a string.",
"path": "/name"
}
],
"status": 422,
"title": "Request Validation Failed",
"type": "https://photon.codes/docs/problems/validation-failed"
}{
"code": "INTERNAL_ERROR",
"status": 500,
"title": "Internal Server Error",
"type": "https://photon.codes/docs/problems/internal-error"
}{
"code": "UPSTREAM_FAILURE",
"status": 502,
"title": "Upstream Service Failure",
"type": "https://photon.codes/docs/problems/upstream-failure"
}{
"code": "UPSTREAM_UNAVAILABLE",
"status": 503,
"title": "Upstream Service Unavailable",
"type": "https://photon.codes/docs/problems/upstream-unavailable"
}{
"code": "REQUEST_TIMEOUT",
"status": 504,
"title": "Request Timeout",
"type": "https://photon.codes/docs/problems/request-timeout"
}Get project billing overview
Returns the selected project’s plan information, entitlements and current billing-period usage. This operation reads project billing state; it does not change plans or the payer’s payment method. Organization-level plans are available through the organization billing overview.
curl --request GET \
--url https://api.photon.codes/v1/projects/{projectId}/billing \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.photon.codes/v1/projects/{projectId}/billing"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.photon.codes/v1/projects/{projectId}/billing', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.photon.codes/v1/projects/{projectId}/billing",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.photon.codes/v1/projects/{projectId}/billing"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.photon.codes/v1/projects/{projectId}/billing")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.photon.codes/v1/projects/{projectId}/billing")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"entitlementsVersion": 4503599627370495,
"subscriptions": [
{
"baseAmountCents": 4503599627370495,
"cancelsAt": "<string>",
"category": "<string>",
"currency": "<string>",
"currentPeriodEnd": "<string>",
"entitlements": [
{
"featureKey": "<string>",
"value": "<string>"
}
],
"fixedCharges": [
{
"chargeModel": "graduated",
"displayName": "<string>",
"fixedChargeCode": "<string>",
"payInAdvance": true,
"pricing": {
"amount": "<string>",
"tiers": [
{
"flatAmount": "<string>",
"fromUnit": 4503599627370495,
"perUnitAmount": "<string>",
"toUnit": 4503599627370495
}
]
},
"prorated": true,
"quantity": 4503599627370495
}
],
"minimumCommitment": {
"amountCents": 4503599627370495,
"displayName": "<string>"
},
"planCode": "<string>",
"planName": "<string>",
"status": "active",
"tierDisplayName": "<string>",
"categoryDisplayName": "<string>"
}
],
"usage": [
{
"amountCents": 0,
"category": "<string>",
"currency": "<string>",
"displayName": "<string>",
"metricCode": "<string>",
"units": 0,
"categoryDisplayName": "<string>"
}
]
}{
"code": "INVALID_ARGUMENT",
"status": 400,
"title": "Invalid Argument",
"type": "https://photon.codes/docs/problems/invalid-argument"
}{
"code": "NOT_AUTHENTICATED",
"status": 401,
"title": "Not Authenticated",
"type": "https://photon.codes/docs/problems/not-authenticated"
}{
"code": "FORBIDDEN",
"status": 403,
"title": "Forbidden",
"type": "https://photon.codes/docs/problems/forbidden"
}{
"code": "FAILED_PRECONDITION",
"status": 409,
"title": "Failed Precondition",
"type": "https://photon.codes/docs/problems/failed-precondition"
}{
"code": "VALIDATION_FAILED",
"issues": [
{
"code": "invalid_type",
"location": "json",
"message": "Expected a string.",
"path": "/name"
}
],
"status": 422,
"title": "Request Validation Failed",
"type": "https://photon.codes/docs/problems/validation-failed"
}{
"code": "INTERNAL_ERROR",
"status": 500,
"title": "Internal Server Error",
"type": "https://photon.codes/docs/problems/internal-error"
}{
"code": "UPSTREAM_FAILURE",
"status": 502,
"title": "Upstream Service Failure",
"type": "https://photon.codes/docs/problems/upstream-failure"
}{
"code": "UPSTREAM_UNAVAILABLE",
"status": 503,
"title": "Upstream Service Unavailable",
"type": "https://photon.codes/docs/problems/upstream-unavailable"
}{
"code": "REQUEST_TIMEOUT",
"status": 504,
"title": "Request Timeout",
"type": "https://photon.codes/docs/problems/request-timeout"
}Authorizations
Account Service Key, prefixed with pho_ask_, sent as Authorization: Bearer <key>. Acts on behalf of its owning account, subject to the permissions and credential restrictions of each operation. Account access tokens and OAuth grants also use the Bearer header. In organizations that require SSO, Account Service Keys are not accepted for managing the organization's SSO settings, deleting the organization, or checking whether it can be deleted.
Path Parameters
The project being billed.
Response
Plan, entitlements, and current-period usage.
Bumps on every entitlement change in any category.
0 <= x <= 9007199254740991One entry per category that currently holds a subscription. Empty means none do — cancelled, or never opened.
Show child attributes
Show child attributes
Current-period metered usage, priced.
Show child attributes
Show child attributes
Was this page helpful?