pages. Accounts on credit-based pricing receive credits. See Response and the Pricing Migration Guide to find out which model applies to you.
Authentication
Authenticate with a Bearer token using your PropelAuth API key from Studio API Keys:REDUCTO_API_KEY used for document processing.
Endpoint
Query Parameters
Data retention
The API serves the last 90 days of usage, the same range as the Studio “Last 90 days” view: today plus the 89 days before it. An earlierstartDate returns a 400 error.
Response
Themetric field tells you which unit the data entries carry: pages or credits. Each entry in data represents one day and one group value.
Per-product pricing
Reducto bills these accounts per page. Each entry carriespages. See Usage and Pricing.
product or api_key. Other groupBy values return a 400 error.
Credit-based pricing
Reducto bills these accounts in credits. Each entry carriescredits, the total credits consumed.
groupBy value, including metadata.
API key grouping
WithgroupBy=api_key, group is the key prefix and groupName is the key’s name in Studio. groupName is null for keys that no longer exist.
Examples
Default: last 30 days grouped by product
Custom date range grouped by file type
Available on credit-based pricing. Accounts on per-product pricing group byproduct or api_key.
Filter by specific products
Use repeatable query parameters to filter results. This example groups byfeature, which is available on credit-based pricing:
Grouping by async metadata
Available on credit-based pricing. If you attach metadata to async jobs, you can break usage down by it. Use this to attribute credits to your own end customers without issuing a separate API key per tenant:group is one value of that key. You can also filter to specific values while grouping by something else. This returns per-product usage for a single tenant:
Contact support with the key names you want enabled before using them as a usage dimension. Reducto gates this deliberately: async metadata is free-form and often carries webhook credentials or per-request identifiers, and neither belongs in usage reporting.
- Only async jobs carry metadata. Synchronous requests have no
async.metadata, so their usage appears underunknown. - Reducto groups jobs missing the key under
unknown. That includes jobs you submitted before you started sending the key, so historical totals show a largeunknownbucket. - Keep keys low-cardinality. A key that labels tenants, customers, or departments works. Reducto rejects a key carrying a per-request identifier, such as a document id or a signature, because it produces one group per request.
- Reducto compares values as text and truncates them to 256 characters. You cannot group by a nested object or an array.
creditsstill reconciles. For any singlemetadataKey, the per-group credits plus theunknownbucket equal your total credits for that period.metadataKeyon its own narrows the results. Passing it withoutgroupBy=metadatarestricts the response to jobs that carried that key, so totals cover a subset of your usage.groupBy=file_type&metadataKey=tenant_idreturns the file-type breakdown of jobs that carriedtenant_id, and adds nounknownbucket.
Multi-Organization Access
If your account belongs to multiple organizations, pass theorgId parameter to specify which organization’s usage to retrieve. Without it, the API defaults to the organization associated with your API key.
403 error.
Error Responses
Related
Pricing and Usage
How Reducto prices pages and credits per endpoint.
Account & Settings
Manage API keys, usage alerts, and billing in Studio.