Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate and retrieve usage reports for billing, analytics, and reconciliation. This skill provides Java SDK examples.
.claude/skills/team-telnyx-telnyx-account-reports-java/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 148% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 254% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 258% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 483% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 895% | 0% |
<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->
text<!-- Maven --> <dependency> <groupId>com.telnyx.sdk</groupId> <artifactId>telnyx</artifactId> <version>6.89.0</version> </dependency> // Gradle implementation("com.telnyx.sdk:telnyx:6.89.0")
javaimport com.telnyx.sdk.client.TelnyxClient; import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient; TelnyxClient client = TelnyxOkHttpClient.fromEnv();
All examples below assume client is already initialized as shown above.
All API calls can fail with network errors, rate limits (429), validation errors (422), or authentication errors (401). Always handle errors in production code:
javaimport com.telnyx.sdk.errors.TelnyxServiceException; try { var result = client.messages().send(params); } catch (TelnyxServiceException e) { System.err.println("API error " + e.statusCode() + ": " + e.getMessage()); if (e.statusCode() == 422) { System.err.println("Validation error — check required fields and formats"); } else if (e.statusCode() == 429) { // Rate limited — wait and retry with exponential backoff Thread.sleep(1000); } }
Common error codes: 401 invalid API key, 403 insufficient permissions, 404 resource not found, 422 validation error (check field formats), 429 rate limited (retry with exponential backoff).
.autoPager() for automatic iteration: for (var item : page.autoPager()) { ... }. For manual control, use .hasNextPage() and .nextPage().Filters call events by given filter parameters. Events are ordered by occurred_at. If filter for leg_id or application_session_id is not present, it only filters events from the last 24 hours.
GET /call_events
javaimport com.telnyx.sdk.models.callevents.CallEventListPage; import com.telnyx.sdk.models.callevents.CallEventListParams; CallEventListPage page = client.callEvents().list();
Returns: call_leg_id (string), call_session_id (string), event_timestamp (string), metadata (object), name (string), record_type (enum: call_event), type (enum: command, webhook)
POST /ledger_billing_group_reports
Optional: month (integer), year (integer)
javaimport com.telnyx.sdk.models.ledgerbillinggroupreports.LedgerBillingGroupReportCreateParams; import com.telnyx.sdk.models.ledgerbillinggroupreports.LedgerBillingGroupReportCreateResponse; LedgerBillingGroupReportCreateResponse ledgerBillingGroupReport = client.ledgerBillingGroupReports().create();
Returns: created_at (date-time), id (uuid), organization_id (uuid), record_type (enum: ledger_billing_group_report), report_url (uri), status (enum: pending, complete, failed, deleted), updated_at (date-time)
GET /ledger_billing_group_reports/{id}
javaimport com.telnyx.sdk.models.ledgerbillinggroupreports.LedgerBillingGroupReportRetrieveParams; import com.telnyx.sdk.models.ledgerbillinggroupreports.LedgerBillingGroupReportRetrieveResponse; LedgerBillingGroupReportRetrieveResponse ledgerBillingGroupReport = client.ledgerBillingGroupReports().retrieve("f5586561-8ff0-4291-a0ac-84fe544797bd");
Returns: created_at (date-time), id (uuid), organization_id (uuid), record_type (enum: ledger_billing_group_report), report_url (uri), status (enum: pending, complete, failed, deleted), updated_at (date-time)
Retrieves all MDR detailed report requests for the authenticated user
GET /legacy/reporting/batch_detail_records/messaging
javaimport com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.messaging.MessagingListParams; import com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.messaging.MessagingListResponse; MessagingListResponse messagings = client.legacy().reporting().batchDetailRecords().messaging().list();
Returns: connections (arrayinteger]), created_at (date-time), directions (arraystring]), end_date (date-time), filters (arrayobject]), id (uuid), profiles (arraystring]), record_type (string), record_types (arraystring]), report_name (string), report_url (string), start_date (date-time), status (enum: PENDING, COMPLETE, FAILED, EXPIRED), updated_at (date-time)
Creates a new MDR detailed report request with the specified filters
POST /legacy/reporting/batch_detail_records/messaging — Required: start_time, end_time
Optional: connections (arrayinteger]), directions (arrayinteger]), filters (arrayobject]), include_message_body (boolean), managed_accounts (arraystring]), profiles (arraystring]), record_types (arrayinteger]), report_name (string), select_all_managed_accounts (boolean), timezone (string)
javaimport com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.messaging.MessagingCreateParams; import com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.messaging.MessagingCreateResponse; import java.time.OffsetDateTime; MessagingCreateParams params = MessagingCreateParams.builder() .endTime(OffsetDateTime.parse("2024-02-12T23:59:59Z")) .startTime(OffsetDateTime.parse("2024-02-01T00:00:00Z")) .build(); MessagingCreateResponse messaging = client.legacy().reporting().batchDetailRecords().messaging().create(params);
Returns: connections (arrayinteger]), created_at (date-time), directions (arraystring]), end_date (date-time), filters (arrayobject]), id (uuid), profiles (arraystring]), record_type (string), record_types (arraystring]), report_name (string), report_url (string), start_date (date-time), status (enum: PENDING, COMPLETE, FAILED, EXPIRED), updated_at (date-time)
Retrieves a specific MDR detailed report request by ID
GET /legacy/reporting/batch_detail_records/messaging/{id}
javaimport com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.messaging.MessagingRetrieveParams; import com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.messaging.MessagingRetrieveResponse; MessagingRetrieveResponse messaging = client.legacy().reporting().batchDetailRecords().messaging().retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: connections (arrayinteger]), created_at (date-time), directions (arraystring]), end_date (date-time), filters (arrayobject]), id (uuid), profiles (arraystring]), record_type (string), record_types (arraystring]), report_name (string), report_url (string), start_date (date-time), status (enum: PENDING, COMPLETE, FAILED, EXPIRED), updated_at (date-time)
Deletes a specific MDR detailed report request by ID
DELETE /legacy/reporting/batch_detail_records/messaging/{id}
javaimport com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.messaging.MessagingDeleteParams; import com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.messaging.MessagingDeleteResponse; MessagingDeleteResponse messaging = client.legacy().reporting().batchDetailRecords().messaging().delete("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: connections (arrayinteger]), created_at (date-time), directions (arraystring]), end_date (date-time), filters (arrayobject]), id (uuid), profiles (arraystring]), record_type (string), record_types (arraystring]), report_name (string), report_url (string), start_date (date-time), status (enum: PENDING, COMPLETE, FAILED, EXPIRED), updated_at (date-time)
Retrieves all CDR report requests for the authenticated user
GET /legacy/reporting/batch_detail_records/voice
javaimport com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.voice.VoiceListParams; import com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.voice.VoiceListResponse; VoiceListResponse voices = client.legacy().reporting().batchDetailRecords().voice().list();
Returns: call_types (arrayinteger]), connections (arrayinteger]), created_at (string), end_time (string), filters (arrayobject]), id (string), managed_accounts (arraystring]), record_type (string), record_types (arrayinteger]), report_name (string), report_url (string), retry (int32), source (string), start_time (string), status (int32), timezone (string), updated_at (string)
Creates a new CDR report request with the specified filters
POST /legacy/reporting/batch_detail_records/voice — Required: start_time, end_time
Optional: call_types (arrayinteger]), connections (arrayinteger]), fields (arraystring]), filters (arrayobject]), include_all_metadata (boolean), managed_accounts (arraystring]), record_types (arrayinteger]), report_name (string), select_all_managed_accounts (boolean), source (string), timezone (string)
javaimport com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.voice.VoiceCreateParams; import com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.voice.VoiceCreateResponse; import java.time.OffsetDateTime; VoiceCreateParams params = VoiceCreateParams.builder() .endTime(OffsetDateTime.parse("2024-02-12T23:59:59Z")) .startTime(OffsetDateTime.parse("2024-02-01T00:00:00Z")) .build(); VoiceCreateResponse voice = client.legacy().reporting().batchDetailRecords().voice().create(params);
Returns: call_types (arrayinteger]), connections (arrayinteger]), created_at (string), end_time (string), filters (arrayobject]), id (string), managed_accounts (arraystring]), record_type (string), record_types (arrayinteger]), report_name (string), report_url (string), retry (int32), source (string), start_time (string), status (int32), timezone (string), updated_at (string)
Retrieves all available fields that can be used in CDR reports
GET /legacy/reporting/batch_detail_records/voice/fields
javaimport com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.voice.VoiceRetrieveFieldsParams; import com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.voice.VoiceRetrieveFieldsResponse; VoiceRetrieveFieldsResponse response = client.legacy().reporting().batchDetailRecords().voice().retrieveFields();
Returns: Billing (arraystring]), Interaction Data (arraystring]), Number Information (arraystring]), Telephony Data (arraystring])
Retrieves a specific CDR report request by ID
GET /legacy/reporting/batch_detail_records/voice/{id}
javaimport com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.voice.VoiceRetrieveParams; import com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.voice.VoiceRetrieveResponse; VoiceRetrieveResponse voice = client.legacy().reporting().batchDetailRecords().voice().retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: call_types (arrayinteger]), connections (arrayinteger]), created_at (string), end_time (string), filters (arrayobject]), id (string), managed_accounts (arraystring]), record_type (string), record_types (arrayinteger]), report_name (string), report_url (string), retry (int32), source (string), start_time (string), status (int32), timezone (string), updated_at (string)
Deletes a specific CDR report request by ID
DELETE /legacy/reporting/batch_detail_records/voice/{id}
javaimport com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.voice.VoiceDeleteParams; import com.telnyx.sdk.models.legacy.reporting.batchdetailrecords.voice.VoiceDeleteResponse; VoiceDeleteResponse voice = client.legacy().reporting().batchDetailRecords().voice().delete("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: call_types (arrayinteger]), connections (arrayinteger]), created_at (string), end_time (string), filters (arrayobject]), id (string), managed_accounts (arraystring]), record_type (string), record_types (arrayinteger]), report_name (string), report_url (string), retry (int32), source (string), start_time (string), status (int32), timezone (string), updated_at (string)
Fetch all previous requests for MDR usage reports.
GET /legacy/reporting/usage_reports/messaging
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.messaging.MessagingListPage; import com.telnyx.sdk.models.legacy.reporting.usagereports.messaging.MessagingListParams; MessagingListPage page = client.legacy().reporting().usageReports().messaging().list();
Returns: aggregation_type (int32), connections (arraystring]), created_at (date-time), end_time (date-time), id (uuid), profiles (arraystring]), record_type (string), report_url (string), result (object), start_time (date-time), status (int32), updated_at (date-time)
Creates a new legacy usage V2 MDR report request with the specified filters
POST /legacy/reporting/usage_reports/messaging
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.messaging.MessagingCreateParams; import com.telnyx.sdk.models.legacy.reporting.usagereports.messaging.MessagingCreateResponse; MessagingCreateParams params = MessagingCreateParams.builder() .aggregationType(0) .build(); MessagingCreateResponse messaging = client.legacy().reporting().usageReports().messaging().create(params);
Returns: aggregation_type (int32), connections (arraystring]), created_at (date-time), end_time (date-time), id (uuid), profiles (arraystring]), record_type (string), report_url (string), result (object), start_time (date-time), status (int32), updated_at (date-time)
Fetch single MDR usage report by id.
GET /legacy/reporting/usage_reports/messaging/{id}
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.messaging.MessagingRetrieveParams; import com.telnyx.sdk.models.legacy.reporting.usagereports.messaging.MessagingRetrieveResponse; MessagingRetrieveResponse messaging = client.legacy().reporting().usageReports().messaging().retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: aggregation_type (int32), connections (arraystring]), created_at (date-time), end_time (date-time), id (uuid), profiles (arraystring]), record_type (string), report_url (string), result (object), start_time (date-time), status (int32), updated_at (date-time)
Deletes a specific V2 legacy usage MDR report request by ID
DELETE /legacy/reporting/usage_reports/messaging/{id}
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.messaging.MessagingDeleteParams; import com.telnyx.sdk.models.legacy.reporting.usagereports.messaging.MessagingDeleteResponse; MessagingDeleteResponse messaging = client.legacy().reporting().usageReports().messaging().delete("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: aggregation_type (int32), connections (arraystring]), created_at (date-time), end_time (date-time), id (uuid), profiles (arraystring]), record_type (string), report_url (string), result (object), start_time (date-time), status (int32), updated_at (date-time)
Retrieve a paginated list of telco data usage reports
GET /legacy/reporting/usage_reports/number_lookup
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.numberlookup.NumberLookupListParams; import com.telnyx.sdk.models.legacy.reporting.usagereports.numberlookup.NumberLookupListResponse; NumberLookupListResponse numberLookups = client.legacy().reporting().usageReports().numberLookup().list();
Returns: aggregation_type (string), created_at (date-time), end_date (date), id (uuid), managed_accounts (arraystring]), record_type (string), report_url (string), result (arrayobject]), start_date (date), status (string), updated_at (date-time)
Submit a new telco data usage report
POST /legacy/reporting/usage_reports/number_lookup
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.numberlookup.NumberLookupCreateParams; import com.telnyx.sdk.models.legacy.reporting.usagereports.numberlookup.NumberLookupCreateResponse; NumberLookupCreateResponse numberLookup = client.legacy().reporting().usageReports().numberLookup().create();
Returns: aggregation_type (string), created_at (date-time), end_date (date), id (uuid), managed_accounts (arraystring]), record_type (string), report_url (string), result (arrayobject]), start_date (date), status (string), updated_at (date-time)
Retrieve a specific telco data usage report by its ID
GET /legacy/reporting/usage_reports/number_lookup/{id}
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.numberlookup.NumberLookupRetrieveParams; import com.telnyx.sdk.models.legacy.reporting.usagereports.numberlookup.NumberLookupRetrieveResponse; NumberLookupRetrieveResponse numberLookup = client.legacy().reporting().usageReports().numberLookup().retrieve("550e8400-e29b-41d4-a716-446655440000");
Returns: aggregation_type (string), created_at (date-time), end_date (date), id (uuid), managed_accounts (arraystring]), record_type (string), report_url (string), result (arrayobject]), start_date (date), status (string), updated_at (date-time)
Delete a specific telco data usage report by its ID
DELETE /legacy/reporting/usage_reports/number_lookup/{id}
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.numberlookup.NumberLookupDeleteParams; client.legacy().reporting().usageReports().numberLookup().delete("550e8400-e29b-41d4-a716-446655440000");
Fetch all previous requests for cdr usage reports.
GET /legacy/reporting/usage_reports/voice
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.voice.VoiceListPage; import com.telnyx.sdk.models.legacy.reporting.usagereports.voice.VoiceListParams; VoiceListPage page = client.legacy().reporting().usageReports().voice().list();
Returns: aggregation_type (int32), connections (arraystring]), created_at (date-time), end_time (date-time), id (uuid), product_breakdown (int32), record_type (string), report_url (string), result (object), start_time (date-time), status (int32), updated_at (date-time)
Creates a new legacy usage V2 CDR report request with the specified filters
POST /legacy/reporting/usage_reports/voice
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.voice.VoiceCreateParams; import com.telnyx.sdk.models.legacy.reporting.usagereports.voice.VoiceCreateResponse; import java.time.OffsetDateTime; VoiceCreateParams params = VoiceCreateParams.builder() .endTime(OffsetDateTime.parse("2024-02-01T00:00:00Z")) .startTime(OffsetDateTime.parse("2024-02-01T00:00:00Z")) .build(); VoiceCreateResponse voice = client.legacy().reporting().usageReports().voice().create(params);
Returns: aggregation_type (int32), connections (arraystring]), created_at (date-time), end_time (date-time), id (uuid), product_breakdown (int32), record_type (string), report_url (string), result (object), start_time (date-time), status (int32), updated_at (date-time)
Fetch single cdr usage report by id.
GET /legacy/reporting/usage_reports/voice/{id}
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.voice.VoiceRetrieveParams; import com.telnyx.sdk.models.legacy.reporting.usagereports.voice.VoiceRetrieveResponse; VoiceRetrieveResponse voice = client.legacy().reporting().usageReports().voice().retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: aggregation_type (int32), connections (arraystring]), created_at (date-time), end_time (date-time), id (uuid), product_breakdown (int32), record_type (string), report_url (string), result (object), start_time (date-time), status (int32), updated_at (date-time)
Deletes a specific V2 legacy usage CDR report request by ID
DELETE /legacy/reporting/usage_reports/voice/{id}
javaimport com.telnyx.sdk.models.legacy.reporting.usagereports.voice.VoiceDeleteParams; import com.telnyx.sdk.models.legacy.reporting.usagereports.voice.VoiceDeleteResponse; VoiceDeleteResponse voice = client.legacy().reporting().usageReports().voice().delete("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: aggregation_type (int32), connections (arraystring]), created_at (date-time), end_time (date-time), id (uuid), product_breakdown (int32), record_type (string), report_url (string), result (object), start_time (date-time), status (int32), updated_at (date-time)
GET /phone_numbers/csv_downloads
javaimport com.telnyx.sdk.models.phonenumbers.csvdownloads.CsvDownloadListPage; import com.telnyx.sdk.models.phonenumbers.csvdownloads.CsvDownloadListParams; CsvDownloadListPage page = client.phoneNumbers().csvDownloads().list();
Returns: id (string), record_type (string), status (enum: pending, complete, failed, expired), url (string)
POST /phone_numbers/csv_downloads
javaimport com.telnyx.sdk.models.phonenumbers.csvdownloads.CsvDownloadCreateParams; import com.telnyx.sdk.models.phonenumbers.csvdownloads.CsvDownloadCreateResponse; CsvDownloadCreateResponse csvDownload = client.phoneNumbers().csvDownloads().create();
Returns: id (string), record_type (string), status (enum: pending, complete, failed, expired), url (string)
GET /phone_numbers/csv_downloads/{id}
javaimport com.telnyx.sdk.models.phonenumbers.csvdownloads.CsvDownloadRetrieveParams; import com.telnyx.sdk.models.phonenumbers.csvdownloads.CsvDownloadRetrieveResponse; CsvDownloadRetrieveResponse csvDownload = client.phoneNumbers().csvDownloads().retrieve("550e8400-e29b-41d4-a716-446655440000");
Returns: id (string), record_type (string), status (enum: pending, complete, failed, expired), url (string)
Generate and fetch voice usage report synchronously. This endpoint will both generate and fetch the voice report over a specified time period. No polling is necessary but the response may take up to a couple of minutes.
GET /reports/cdr_usage_reports/sync
javaimport com.telnyx.sdk.models.reports.cdrusagereports.CdrUsageReportFetchSyncParams; import com.telnyx.sdk.models.reports.cdrusagereports.CdrUsageReportFetchSyncResponse; CdrUsageReportFetchSyncParams params = CdrUsageReportFetchSyncParams.builder() .aggregationType(CdrUsageReportFetchSyncParams.AggregationType.NO_AGGREGATION) .productBreakdown(CdrUsageReportFetchSyncParams.ProductBreakdown.NO_BREAKDOWN) .build(); CdrUsageReportFetchSyncResponse response = client.reports().cdrUsageReports().fetchSync(params);
Returns: aggregation_type (enum: NO_AGGREGATION, CONNECTION, TAG, BILLING_GROUP), connections (arrayinteger]), created_at (date-time), end_time (date-time), id (uuid), product_breakdown (enum: NO_BREAKDOWN, DID_VS_TOLL_FREE, COUNTRY, DID_VS_TOLL_FREE_PER_COUNTRY), record_type (string), report_url (string), result (object), start_time (date-time), status (enum: PENDING, COMPLETE, FAILED, EXPIRED), updated_at (date-time)
Fetch all messaging usage reports. Usage reports are aggregated messaging data for specified time period and breakdown
GET /reports/mdr_usage_reports
javaimport com.telnyx.sdk.models.reports.mdrusagereports.MdrUsageReportListPage; import com.telnyx.sdk.models.reports.mdrusagereports.MdrUsageReportListParams; MdrUsageReportListPage page = client.reports().mdrUsageReports().list();
Returns: aggregation_type (enum: NO_AGGREGATION, PROFILE, TAGS), connections (arrayinteger]), created_at (date-time), end_date (date-time), id (uuid), profiles (string), record_type (string), report_url (string), result (arrayobject]), start_date (date-time), status (enum: PENDING, COMPLETE, FAILED, EXPIRED), updated_at (date-time)
Submit request for new new messaging usage report. This endpoint will pull and aggregate messaging data in specified time period.
POST /reports/mdr_usage_reports
javaimport com.telnyx.sdk.models.reports.mdrusagereports.MdrUsageReportCreateParams; import com.telnyx.sdk.models.reports.mdrusagereports.MdrUsageReportCreateResponse; import java.time.OffsetDateTime; MdrUsageReportCreateParams params = MdrUsageReportCreateParams.builder() .aggregationType(MdrUsageReportCreateParams.AggregationType.NO_AGGREGATION) .endDate(OffsetDateTime.parse("2020-07-01T00:00:00-06:00")) .startDate(OffsetDateTime.parse("2020-07-01T00:00:00-06:00")) .build(); MdrUsageReportCreateResponse mdrUsageReport = client.reports().mdrUsageReports().create(params);
Returns: aggregation_type (enum: NO_AGGREGATION, PROFILE, TAGS), connections (arrayinteger]), created_at (date-time), end_date (date-time), id (uuid), profiles (string), record_type (string), report_url (string), result (arrayobject]), start_date (date-time), status (enum: PENDING, COMPLETE, FAILED, EXPIRED), updated_at (date-time)
Generate and fetch messaging usage report synchronously. This endpoint will both generate and fetch the messaging report over a specified time period. No polling is necessary but the response may take up to a couple of minutes.
GET /reports/mdr_usage_reports/sync
javaimport com.telnyx.sdk.models.reports.mdrusagereports.MdrUsageReportFetchSyncParams; import com.telnyx.sdk.models.reports.mdrusagereports.MdrUsageReportFetchSyncResponse; MdrUsageReportFetchSyncParams params = MdrUsageReportFetchSyncParams.builder() .aggregationType(MdrUsageReportFetchSyncParams.AggregationType.PROFILE) .build(); MdrUsageReportFetchSyncResponse response = client.reports().mdrUsageReports().fetchSync(params);
Returns: aggregation_type (enum: NO_AGGREGATION, PROFILE, TAGS), connections (arrayinteger]), created_at (date-time), end_date (date-time), id (uuid), profiles (string), record_type (string), report_url (string), result (arrayobject]), start_date (date-time), status (enum: PENDING, COMPLETE, FAILED, EXPIRED), updated_at (date-time)
Fetch a single messaging usage report by id
GET /reports/mdr_usage_reports/{id}
javaimport com.telnyx.sdk.models.reports.mdrusagereports.MdrUsageReportRetrieveParams; import com.telnyx.sdk.models.reports.mdrusagereports.MdrUsageReportRetrieveResponse; MdrUsageReportRetrieveResponse mdrUsageReport = client.reports().mdrUsageReports().retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: aggregation_type (enum: NO_AGGREGATION, PROFILE, TAGS), connections (arrayinteger]), created_at (date-time), end_date (date-time), id (uuid), profiles (string), record_type (string), report_url (string), result (arrayobject]), start_date (date-time), status (enum: PENDING, COMPLETE, FAILED, EXPIRED), updated_at (date-time)
Delete messaging usage report by id
DELETE /reports/mdr_usage_reports/{id}
javaimport com.telnyx.sdk.models.reports.mdrusagereports.MdrUsageReportDeleteParams; import com.telnyx.sdk.models.reports.mdrusagereports.MdrUsageReportDeleteResponse; MdrUsageReportDeleteResponse mdrUsageReport = client.reports().mdrUsageReports().delete("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: aggregation_type (enum: NO_AGGREGATION, PROFILE, TAGS), connections (arrayinteger]), created_at (date-time), end_date (date-time), id (uuid), profiles (string), record_type (string), report_url (string), result (arrayobject]), start_date (date-time), status (enum: PENDING, COMPLETE, FAILED, EXPIRED), updated_at (date-time)
GET /reports/mdrs
javaimport com.telnyx.sdk.models.reports.ReportListMdrsParams; import com.telnyx.sdk.models.reports.ReportListMdrsResponse; ReportListMdrsResponse response = client.reports().listMdrs();
Returns: cld (string), cli (string), cost (string), created_at (date-time), currency (enum: AUD, CAD, EUR, GBP, USD), direction (string), id (string), message_type (enum: SMS, MMS), parts (number), profile_name (string), rate (string), record_type (string), status (enum: GW_TIMEOUT, DELIVERED, DLR_UNCONFIRMED, DLR_TIMEOUT, RECEIVED, GW_REJECT, FAILED)
Fetch all Wdr records
GET /reports/wdrs
javaimport com.telnyx.sdk.models.reports.ReportListWdrsPage; import com.telnyx.sdk.models.reports.ReportListWdrsParams; ReportListWdrsPage page = client.reports().listWdrs();
Returns: cost (object), created_at (date-time), downlink_data (object), duration_seconds (number), id (string), imsi (string), mcc (string), mnc (string), phone_number (string), rate (object), record_type (string), sim_card_id (string), sim_group_id (string), sim_group_name (string), uplink_data (object)
Returns all available record types and supported query parameters for session analysis.
GET /session_analysis/metadata
javaimport com.telnyx.sdk.models.sessionanalysis.metadata.MetadataRetrieveParams; import com.telnyx.sdk.models.sessionanalysis.metadata.MetadataRetrieveResponse; MetadataRetrieveResponse metadata = client.sessionAnalysis().metadata().retrieve();
Returns: meta (object), query_parameters (object), record_types (arrayobject])
Returns detailed metadata for a specific record type, including relationships and examples.
GET /session_analysis/metadata/{record_type}
javaimport com.telnyx.sdk.models.sessionanalysis.metadata.MetadataRetrieveRecordTypeParams; import com.telnyx.sdk.models.sessionanalysis.metadata.MetadataRetrieveRecordTypeResponse; MetadataRetrieveRecordTypeResponse response = client.sessionAnalysis().metadata().retrieveRecordType("record_type");
Returns: aliases (arraystring]), child_relationships (arrayobject]), event (string), examples (object), meta (object), parent_relationships (arrayobject]), product (string), record_type (string)
Retrieves a full session analysis tree for a given event, including costs, child events, and product linkages.
GET /session_analysis/{record_type}/{event_id}
javaimport com.telnyx.sdk.models.sessionanalysis.SessionAnalysisRetrieveParams; import com.telnyx.sdk.models.sessionanalysis.SessionAnalysisRetrieveResponse; SessionAnalysisRetrieveParams params = SessionAnalysisRetrieveParams.builder() .recordType("record_type") .eventId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .build(); SessionAnalysisRetrieveResponse sessionAnalysis = client.sessionAnalysis().retrieve(params);
Returns: cost (object), meta (object), root (object), session_id (string)
Get Telnyx usage data by product, broken out by the specified dimensions
GET /usage_reports
javaimport com.telnyx.sdk.models.usagereports.UsageReportListPage; import com.telnyx.sdk.models.usagereports.UsageReportListParams; UsageReportListParams params = UsageReportListParams.builder() .addDimension("string") .addMetric("string") .product("wireless") .build(); UsageReportListPage page = client.usageReports().list(params);
Returns: data (arrayobject]), meta (object)
Get the Usage Reports options for querying usage, including the products available and their respective metrics and dimensions
GET /usage_reports/options
javaimport com.telnyx.sdk.models.usagereports.UsageReportGetOptionsParams; import com.telnyx.sdk.models.usagereports.UsageReportGetOptionsResponse; UsageReportGetOptionsResponse response = client.usageReports().getOptions();
Returns: product (string), product_dimensions (arraystring]), product_metrics (arraystring]), record_types (arrayobject])
Returns the WDR Reports that match the given parameters.
GET /wireless/detail_records_reports
javaimport com.telnyx.sdk.models.wireless.detailrecordsreports.DetailRecordsReportListParams; import com.telnyx.sdk.models.wireless.detailrecordsreports.DetailRecordsReportListResponse; DetailRecordsReportListResponse detailRecordsReports = client.wireless().detailRecordsReports().list();
Returns: created_at (string), end_time (string), id (uuid), record_type (string), report_url (string), start_time (string), status (enum: pending, complete, failed, deleted), updated_at (string)
Asynchronously create a report containing Wireless Detail Records (WDRs) for the SIM cards that consumed wireless data in the given time period.
POST /wireless/detail_records_reports
Optional: end_time (string), start_time (string)
javaimport com.telnyx.sdk.models.wireless.detailrecordsreports.DetailRecordsReportCreateParams; import com.telnyx.sdk.models.wireless.detailrecordsreports.DetailRecordsReportCreateResponse; DetailRecordsReportCreateResponse detailRecordsReport = client.wireless().detailRecordsReports().create();
Returns: created_at (string), end_time (string), id (uuid), record_type (string), report_url (string), start_time (string), status (enum: pending, complete, failed, deleted), updated_at (string)
Returns one specific WDR report
GET /wireless/detail_records_reports/{id}
javaimport com.telnyx.sdk.models.wireless.detailrecordsreports.DetailRecordsReportRetrieveParams; import com.telnyx.sdk.models.wireless.detailrecordsreports.DetailRecordsReportRetrieveResponse; DetailRecordsReportRetrieveResponse detailRecordsReport = client.wireless().detailRecordsReports().retrieve("6a09cdc3-8948-47f0-aa62-74ac943d6c58");
Returns: created_at (string), end_time (string), id (uuid), record_type (string), report_url (string), start_time (string), status (enum: pending, complete, failed, deleted), updated_at (string)
Deletes one specific WDR report.
DELETE /wireless/detail_records_reports/{id}
javaimport com.telnyx.sdk.models.wireless.detailrecordsreports.DetailRecordsReportDeleteParams; import com.telnyx.sdk.models.wireless.detailrecordsreports.DetailRecordsReportDeleteResponse; DetailRecordsReportDeleteResponse detailRecordsReport = client.wireless().detailRecordsReports().delete("6a09cdc3-8948-47f0-aa62-74ac943d6c58");
Returns: created_at (string), end_time (string), id (uuid), record_type (string), report_url (string), start_time (string), status (enum: pending, complete, failed, deleted), updated_at (string)
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 27,157 | 5,777 | -79% | 1 | 1 | 0% | 4,859 | 12,027 | +148% | 0 | 0 | — |
case-02 | fail→pass | 17,043 | 8,196 | -52% | 1 | 1 | 0% | 3,594 | 12,713 | +254% | 0 | 0 | — |
case-03 | pass→pass | 20,465 | 6,706 | -67% | 1 | 1 | 0% | 1,874 | 12,292 | +556% | 0 | 0 | — |
case-04 | pass→pass | 14,335 | 6,545 | -54% | 1 | 1 | 0% | 3,064 | 12,161 | +297% | 0 | 0 | — |
case-05 | pass→pass | 12,610 | 8,283 | -34% | 1 | 1 | 0% | 2,748 | 12,631 | +360% | 0 | 0 | — |
case-06 | pass→pass | 23,585 | 10,762 | -54% | 1 | 1 | 0% | 3,538 | 13,096 | +270% | 0 | 0 | — |
case-07 | fail→pass | 19,352 | 6,123 | -68% | 1 | 1 | 0% | 3,358 | 12,025 | +258% | 0 | 0 | — |
case-08 | fail→pass | 14,405 | 4,621 | -68% | 1 | 1 | 0% | 2,003 | 11,678 | +483% | 0 | 0 | — |
case-09 | fail→pass | 7,378 | 2,905 | -61% | 1 | 1 | 0% | 1,138 | 11,321 | +895% | 0 | 0 | — |
case-10 | fail→pass | 13,282 | 3,624 | -73% | 1 | 1 | 0% | 2,249 | 11,517 | +412% | 0 | 0 | — |
case-11 | fail→pass | 14,365 | 3,382 | -76% | 1 | 1 | 0% | 2,619 | 11,516 | +340% | 0 | 0 | — |
case-12 | fail→pass | 10,461 | 3,397 | -68% | 1 | 1 | 0% | 2,112 | 11,528 | +446% | 0 | 0 | — |
case-13 | fail→pass | 17,107 | 3,816 | -78% | 1 | 1 | 0% | 2,844 | 11,498 | +304% | 0 | 0 | — |
case-14 | fail→pass | 12,537 | 4,027 | -68% | 1 | 1 | 0% | 2,653 | 11,687 | +341% | 0 | 0 | — |
case-15 | fail→pass | 12,685 | 4,546 | -64% | 1 | 1 | 0% | 2,195 | 11,571 | +427% | 0 | 0 | — |
case-16 | fail→pass | 17,875 | 4,463 | -75% | 1 | 1 | 0% | 2,453 | 11,669 | +376% | 0 | 0 | — |
case-17 | fail→pass | 15,437 | 4,754 | -69% | 1 | 1 | 0% | 3,100 | 11,745 | +279% | 0 | 0 | — |
case-18 | fail→pass | 13,583 | 3,580 | -74% | 1 | 1 | 0% | 2,387 | 11,519 | +383% | 0 | 0 | — |
case-19 | fail→pass | 14,694 | 4,895 | -67% | 1 | 1 | 0% | 2,533 | 11,759 | +364% | 0 | 0 | — |
case-20 | fail→pass | 18,052 | 3,594 | -80% | 1 | 1 | 0% | 2,533 | 11,452 | +352% | 0 | 0 | — |
case-21 | fail→pass | 20,953 | 5,494 | -74% | 1 | 1 | 0% | 3,082 | 11,944 | +288% | 0 | 0 | — |
case-22 | fail→pass | 20,260 | 4,267 | -79% | 1 | 1 | 0% | 3,307 | 11,618 | +251% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +82 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/22/2026 | +84% |
Other measured skills in the registry, with their headline benchmark lift.