Typescript (SDK)
import { Autumn } from 'autumn-js'
const autumn = new Autumn()
const result = await autumn.analytics.query({
sql: "SELECT plan_id, count(*) AS customers FROM subscriptions WHERE status = 'active' GROUP BY 1",
});from autumn_sdk import Autumn
autumn = Autumn(secret_key="am_sk_test...")
res = autumn.analytics.query(
sql="SELECT plan_id, count(*) AS customers FROM subscriptions WHERE status = 'active' GROUP BY 1",
)curl --request POST \
--url https://api.useautumn.com/v1/analytics.query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-api-version: <x-api-version>' \
--data @- <<EOF
{
"sql": "SELECT plan_id, count(*) AS customers FROM subscriptions WHERE status = 'active' GROUP BY 1"
}
EOF{"type":"columns","columns":[{"name":"plan_id","type":"VARCHAR"},{"name":"customers","type":"BIGINT"}]}
{"type":"row","values":["pro","42"]}
{"type":"row","values":["starter","17"]}
{"type":"end","rows":2,"truncated":false,"stopped_by":null}
{"type":"columns","columns":[{"name":"plan_id","type":"VARCHAR"},{"name":"customers","type":"BIGINT"}]}
{"type":"row","values":["pro","42"]}
{"type":"error","code":"statement_timeout","message":"Query exceeded the 30s compute limit for your plan and was cancelled. Narrow it (filter by date or customer, select fewer columns, or add LIMIT) or contact support@useautumn.com to raise your compute limit.","details":{"limit_ms":30000}}
Analytics
Query data in SQL
Run a read-only SQL query over your Autumn data. Streams the result as newline-delimited JSON; see the SQL guide.
POST
/
v1
/
analytics.query
Typescript (SDK)
import { Autumn } from 'autumn-js'
const autumn = new Autumn()
const result = await autumn.analytics.query({
sql: "SELECT plan_id, count(*) AS customers FROM subscriptions WHERE status = 'active' GROUP BY 1",
});from autumn_sdk import Autumn
autumn = Autumn(secret_key="am_sk_test...")
res = autumn.analytics.query(
sql="SELECT plan_id, count(*) AS customers FROM subscriptions WHERE status = 'active' GROUP BY 1",
)curl --request POST \
--url https://api.useautumn.com/v1/analytics.query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-api-version: <x-api-version>' \
--data @- <<EOF
{
"sql": "SELECT plan_id, count(*) AS customers FROM subscriptions WHERE status = 'active' GROUP BY 1"
}
EOF{"type":"columns","columns":[{"name":"plan_id","type":"VARCHAR"},{"name":"customers","type":"BIGINT"}]}
{"type":"row","values":["pro","42"]}
{"type":"row","values":["starter","17"]}
{"type":"end","rows":2,"truncated":false,"stopped_by":null}
{"type":"columns","columns":[{"name":"plan_id","type":"VARCHAR"},{"name":"customers","type":"BIGINT"}]}
{"type":"row","values":["pro","42"]}
{"type":"error","code":"statement_timeout","message":"Query exceeded the 30s compute limit for your plan and was cancelled. Narrow it (filter by date or customer, select fewer columns, or add LIMIT) or contact support@useautumn.com to raise your compute limit.","details":{"limit_ms":30000}}
Body Parameters
{"type":"columns","columns":[{"name":"plan_id","type":"VARCHAR"},{"name":"customers","type":"BIGINT"}]}
{"type":"row","values":["pro","42"]}
{"type":"row","values":["starter","17"]}
{"type":"end","rows":2,"truncated":false,"stopped_by":null}
{"type":"columns","columns":[{"name":"plan_id","type":"VARCHAR"},{"name":"customers","type":"BIGINT"}]}
{"type":"row","values":["pro","42"]}
{"type":"error","code":"statement_timeout","message":"Query exceeded the 30s compute limit for your plan and was cancelled. Narrow it (filter by date or customer, select fewer columns, or add LIMIT) or contact support@useautumn.com to raise your compute limit.","details":{"limit_ms":30000}}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Body
application/json
Read-only DuckDB SQL over your Autumn data (customers, subscriptions, balances, etc...). Runs against your org and environment only.
Required string length:
1 - 100000Response
200 - application/x-ndjson
A newline-delimited JSON stream. Each line is an AnalyticsQueryLine: columns first, then one row line per result row, then an end or error line.
The response is of type file.