---
title: Arcadia API Integration on Truto
slug: arcadia
category: Default
canonical: "https://truto.one/integrations/detail/arcadia/"
---

# Arcadia API Integration on Truto



**Category:** Default  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 114 tools for Arcadia that AI agents can call directly.

- **create_a_arcadia_oauth_2_token** — Create an Arcadia access token using client credentials. Returns: access_token, token_type, expires_in. Tokens are valid for one hour. Required: client_id, client_secret, grant_type (must be "client_credentials").
- **list_all_arcadia_accounts_details** — List detailed accounts in the Arcadia system. Returns per-account fields including id, accountNumber, status, statusDetail, provider, createdAt, lastModifiedAt, meterCount, serviceTypes, gapSummary, and more. Supports optional search and globalSearch query filters for narrowing results.
- **create_a_arcadia_accounts_download** — Initiate an account statements download in arcadia as step 1 of a 2-step process. Prepares a CSV file containing high-level summary information for accounts, statements, and associated metadata, then returns a URL to retrieve the generated file via a subsequent GET request. Returns: url.
- **list_all_arcadia_details** — Retrieve a detailed account record from arcadia by account ID. Returns the detailed account object with account-specific fields; consult the arcadia API documentation for the full field-level breakdown. Required: account_id.
- **arcadia_details_list_2** — Retrieve a detailed statement record from arcadia by statement ID. Returns the detailed statement object with statement-specific fields; consult the arcadia API documentation for the full field-level breakdown. Required: statement_id.
- **arcadia_details_list_3** — Retrieve a specific detailed version of an arcadia statement. Returns the detailed statement version object with statement-specific fields; consult the arcadia API documentation for the full field-level breakdown. Required: statement_id, version_id.
- **list_all_arcadia_payments** — List payments for an arcadia account. A payment is a transaction made by the account holder that decreases the account balance. Returns: id, amount, currency, paymentDate, createdAt. Required: account_id.
- **list_all_arcadia_plug_credentials** — List all Arcadia plug credentials in the system. Returns: credentialId, status, isActive, isAccessible, isCustomerActionRequired, username, provider, createdAt, lastModifiedAt, totalAccounts, accountIds, siteIds. Supports field-level filtering via search and full-text filtering via globalSearch.
- **create_a_arcadia_plug_credential** — Create a new Arcadia plug credential for a utility provider. Returns: credentialId, status, isActive, isAccessible, username, provider, createdAt, accountIds, totalAccounts. Required: providerId, username, password.
- **get_single_arcadia_plug_credential_by_id** — Retrieve a single Arcadia plug credential by id. Returns: credentialId, status, isActive, isAccessible, isCustomerActionRequired, username, provider, createdAt, lastModifiedAt, accountIds, siteIds, totalAccounts. Required: id.
- **update_a_arcadia_plug_credential_by_id** — Update an existing Arcadia plug credential by id. Returns: credentialId, status, isActive, username, provider, createdAt, lastModifiedAt, accountIds, totalAccounts. Required: id. At least one body field must be provided.
- **arcadia_plug_credentials_list_events** — List the event history for an Arcadia plug credential, such as when it was created and by whom. Returns: eventType, fieldName, createdAt. Required: credential_id.
- **create_a_arcadia_credentials_encoded_connect_url** — Generate an encoded Arcadia Connect submission URL that prevents parameter tampering and can be shared with users to track credential submissions. Returns: url. Optionally supply correlationId to tag credentials submitted through the link and isCreatorAttributed to attribute the link creator as createdBy on those credentials. Generated URLs expire after 30 days.
- **list_all_arcadia_counts** — Get the count of associated account, meter, and statement resources obtained by a specific credential in arcadia. Returns: accounts, meters, statements. Required: credential_id.
- **arcadia_counts_list_2** — Get the count of associated account, meter, and statement resources obtained by a specific file in arcadia. Returns: accounts, meters, statements. Required: file_id.
- **update_a_arcadia_disable_resource_by_id** — Disable an Arcadia credential along with its associated accounts. The credential must have no running jobs before it can be disabled. Returns: id, attributes. Required: credential_id.
- **create_a_arcadia_new_statement** — Generate a new statement for a sandbox credential in arcadia. Triggers statement generation for the specified credential; applicable only in sandbox mode. Returns a 202 Accepted response with no body on success. Required: credential_id.
- **update_a_arcadia_one_time_passcode_by_id** — Submit a one-time passcode for an arcadia credential's current MFA verification job after selecting a multi-factor authentication method. Returns: id, attributes (credential fields per arcadia's PublicCredentialResource schema). Required: credential_id, oneTimePasscode.
- **list_all_arcadia_passwords** — Retrieve sensitive credential passwords for a given credential in arcadia. Returns the credential secrets object including id, password, and credential_id for the specified credential. Required: credential_id.
- **create_a_arcadia_refresh** — Initiate an MFA session refresh for an Arcadia credential. Starts a background job that logs in to the credential so its MFA session can be refreshed; only supported for Providers that Arcadia has MFA support for. Returns an empty 202 Accepted response on success. Required: credential_id.
- **list_all_arcadia_refresh_urls** — Generate an Arcadia Connect URL that allows a user to refresh their multi-factor authentication (MFA) session for a specified credential. The generated URL is valid for 72 hours. Returns: url. Required: credential_id.
- **delete_a_arcadia_resource_by_id** — Delete a Credential in Arcadia along with its associated Accounts, Meters, and Statements resources; this action is permanent and cannot be recovered. Returns the deletion log including id, which can be used to poll the deletion status. Required: credential_id.
- **arcadia_resources_delete_2** — Delete a File in Arcadia along with its associated Accounts, Meters, and Statements resources; this action is permanent and cannot be recovered. Returns the deletion log including id, which can be used to poll the deletion status. Required: file_id.
- **list_all_arcadia_update_urls** — Generate a Connect URL in Arcadia that allows a user to update their password for a specified credential. Returns: url (the generated Connect URL, valid for 72 hours). Required: credential_id.
- **update_a_arcadia_verification_method_by_id** — Submit the MFA verification method for a credential in arcadia, selecting how multi-factor authentication should be completed for the credential's current job. Returns the updated credential resource including id. Required: credential_id.
- **get_single_arcadia_plug_deletion_log_by_id** — Get a deletion log entry in arcadia by id, returning the details of a specific deletion request after it has been performed. The full response shape is defined by arcadia's PublicDeletionLogResource schema; consult the upstream arcadia docs for the complete field-level breakdown. Required: id.
- **list_all_arcadia_plug_discovered_statements** — List discovered statements in Arcadia. Returns: id, statementId, status, statementDate, periodStartDate, periodEndDate, accountIds, credentialIds, and provider details. Supports filtering via search or globalSearch.
- **get_single_arcadia_plug_discovered_statement_by_id** — Retrieve a single discovered statement from Arcadia by id. Returns: id, statementId, status, statementDate, periodStartDate, periodEndDate, accountIds, credentialIds, invoiceNumber, hasValidAccountStatus, dataIngestionMethod, and provider details. Required: id.
- **list_all_arcadia_sources** — Download the source file for a discovered statement in arcadia. Returns a binary PDF file stream whose content is the raw source document. Required: discovered_statement_id.
- **arcadia_sources_list_2** — Stream a prepared download in arcadia as the second step of a 2-step process; returns accounts, meters, statements, or associated metadata as CSV or JSON when ready. Required: download_request_webhook_id (formed by appending the token from the first-step prepare-download response to the downloadId without any space).
- **arcadia_sources_list_3** — Download the source PDF for a specific file in arcadia. Returns a binary file stream containing the raw source document. Required: file_id.
- **arcadia_sources_list_4** — Download the source file for a specific statement in arcadia; the file is typically a structured PDF or a PDF rendering of a portion of the utility website. Returns a binary PDF file stream. Required: statement_id.
- **list_all_arcadia_versions** — List all versions of a specific Discovered Statement in arcadia. Returns a paged collection of discovered statement versions; each record includes id. Required: discovered_statement_id.
- **arcadia_versions_list_2** — Retrieve a specific version of a Discovered Statement in arcadia. Returns: id. Required: discovered_statement_id, discovered_statement_version_id.
- **arcadia_versions_list_3** — List all versions of a specific Statement in arcadia. Returns a paged collection of statement version summaries; each record includes id. Required: statement_id.
- **get_single_arcadia_version_by_id** — Retrieve a specific version of a Statement in arcadia. Returns: id. Required: statement_id, id.
- **create_a_arcadia_downloads_csv** — Create a CSV download request in arcadia that generates a report for a specified entity type (Account and Statement Gap, Credential, File, Meter, Site, or Statement). Returns the download request resource including id, status, entityType, and downloadMethod. When downloadMethod is IN_BROWSER, use the id from the response to poll the Get DownloadRequest endpoint to retrieve the file. Required: entityType.
- **get_single_arcadia_plug_download_by_id** — Get a specific download request in arcadia by its downloadRequestWebhookId. Returns the download request object including id. Required: id (constructed by appending the authentication token from the initial step to the downloadId with no space in between).
- **list_all_arcadia_plug_expected_accounts** — List expected accounts in Arcadia. Returns: id, expectedAccountNumber, normalizedExpectedAccountNumber, providerId, providerName. Optionally filter results using search (by expectedAccountNumber, normalizedExpectedAccountNumber, providerId, or providerName) or globalSearch.
- **create_a_arcadia_plug_expected_account** — Create a new expected account in Arcadia. Returns: id, expectedAccountNumber, normalizedExpectedAccountNumber, providerId, providerName. Required: expectedAccountNumber, providerId.
- **list_all_arcadia_plug_files** — List utility statement PDF files in Arcadia that have been uploaded for OCR processing. Returns: fileId, fileName, status, statusDetails, createdAt, organizationId, transferMethod, correlationId, accountNumbers, statementId, discoveredStatementId, provider. Filter with `search` (supports accountNumbers, correlationId, status, and more) or `globalSearch` query parameters.
- **create_a_arcadia_plug_file** — Upload one or more utility statement PDF files to Arcadia for OCR processing. Returns: fileId, fileName, status, createdAt, organizationId, transferMethod, correlationId, accountNumbers. Required: files (multipart/form-data). Maximum 75 files per upload; combined size must be under 1 GB; each file must contain a single statement.
- **get_single_arcadia_plug_file_by_id** — Retrieve the details of a specific Arcadia file by id. Returns: fileId, fileName, status, statusDetails, createdAt, organizationId, correlationId, transferMethod, accountNumbers, normalizedAccountNumbers, statementId, discoveredStatementId, provider. Required: id.
- **update_a_arcadia_plug_file_by_id** — Update an Arcadia file by id. Currently only the correlationId field can be updated. Returns: fileId, fileName, status, statusDetails, createdAt, organizationId, correlationId, transferMethod, accountNumbers, statementId, discoveredStatementId, provider. Required: id.
- **arcadia_plug_files_list_events** — List the event history for an Arcadia file, such as when it was created and by whom. Returns: eventType, fieldName, createdAt for each event. Supports filtering via `search` (searchable fields: createdAt, eventType, fieldName). Required: file_id.
- **get_single_arcadia_intervals_meter_by_id** — Get utility-provided electric interval readings for a specific meter in Arcadia. Returns time-series energy data for granular analysis (solar/storage modelling, Demand Response validation) covering up to 1 year of historical data. Returns: meterId, intervals. Required: id. Optionally filter the range with startAt and endAt; each window spans at most 1 year.
- **list_all_arcadia_plug_meters** — List Arcadia meters retrieved from utility providers using submitted credentials. Returns: id, meterNumber, status, serviceType, providerId, siteId, accountId, createdAt. Use `search` to filter by over 50 fields including accountNumber, siteId, serviceType, and more.
- **create_a_arcadia_plug_meter** — Create an Arcadia meter for providers supporting intervals third-party portals for indirect account access. The end user receives an email to approve provider access before Arcadia can read data. Returns: id, meterNumber, status, serviceType, providerId, siteId, accountId.
- **get_single_arcadia_plug_meter_by_id** — Retrieve a specific Arcadia meter by id. Returns the meter record including id, meterNumber, status, serviceType, providerId, siteId, accountId, serviceAddress, and more. If the associated account is not activated, limited data is returned. Required: id.
- **update_a_arcadia_plug_meter_by_id** — Fully replace an Arcadia meter's fields using PUT; all fields must be provided for a complete update. Supports up to 10 custom data fields (customData1–customData10) for tying meters back to records in your own system. Returns: id, meterNumber, status, serviceType, siteId, customData1. Required: id.
- **arcadia_plug_meters_update_2** — Partially update an Arcadia meter by id using PATCH. Supports up to 10 custom data fields (customData1–customData10) for tying meters back to records in your own system. Returns: id, meterNumber, status, serviceType, siteId, customData1. Required: id.
- **arcadia_plug_meters_list_events** — List the event history for an Arcadia meter, showing when changes occurred and who triggered them. Returns: createdAt, eventType, fieldName. Required: meter_id.
- **arcadia_plug_meters_partial_update** — Partially update an Arcadia meter by id using PATCH. Supports up to 10 custom data fields (customData1–customData10) for tying meters back to records in your own system. Returns: id, meterNumber, status, serviceType, siteId, customData1. Required: id.
- **create_a_arcadia_downloads_interval** — Prepare a meter intervals CSV download in arcadia. Initiates the first step of a 2-step download process: the response provides a url that can be used with a subsequent GET request to stream the generated CSV file. Returns: url. Required: meter_ids. Maximum 500 meter IDs per request.
- **arcadia_downloads_intervals_create_2** — Prepare a site meter intervals CSV download in arcadia grouped by site. Initiates the first step of a 2-step download process: the response provides a url that can be used with a subsequent GET request to stream the generated CSV file. Returns: url. Required: site_ids. Maximum 500 meters per request.
- **create_a_arcadia_downloads_usage** — Prepare an arcadia meter usage CSV download by submitting up to 500 meter IDs. This first step accepts the meter IDs and returns a URL to use in a subsequent GET request to stream the generated CSV file. Returns: url. Required: meter_ids. Max 500 meter IDs per request.
- **arcadia_downloads_usages_create_2** — Prepare an arcadia sites usage CSV download by submitting up to 500 site IDs. This first step accepts the site IDs and returns a URL to use in a subsequent GET request to stream the generated CSV file. Returns: url. Required: site_ids. Max 500 site IDs per request.
- **get_single_arcadia_normalized_intervals_meter_by_id** — Get normalized 15-minute interval data for a specific meter in Arcadia. Returns the interval data object for the meter, including meterId, startAt, endAt, and intervals (array of normalized 15-minute energy readings). Required: id. The API returns up to 1 year of data per request; use startAt and endAt to scope the range.
- **list_all_arcadia_plug_organizations** — Retrieve the Arcadia organization details. Returns: name, accountCustomData, meterCustomData (the organization name and all account- and meter-level custom data field names configured for your org).
- **update_a_arcadia_plug_organization_by_id** — Set organization custom data field names in Arcadia via a full PUT replacement — all fields must be provided to ensure a complete update. Returns: name, accountCustomData, meterCustomData. Supports up to 25 account-level and 10 meter-level custom data fields.
- **arcadia_plug_organizations_update_2** — Update organization custom data field names in Arcadia. Returns: name, accountCustomData, meterCustomData. Supports up to 25 account-level and 10 meter-level custom data fields.
- **arcadia_plug_organizations_partial_update** — Partially update organization custom data field names in Arcadia. Returns: name, accountCustomData, meterCustomData. Supports up to 25 account-level and 10 meter-level custom data fields.
- **list_all_arcadia_organization_events** — List organization events in arcadia, returning the history of changes made to your organization's custom data fields. Returns: createdAt, createdBy, eventType, fieldName, newValue, oldValue. Supports filtering via search or globalSearch, and sorting by any event field.
- **list_all_arcadia_plug_sites** — List all Arcadia sites available in your organization. Returns site records including id, siteName, city, state, postalCode, createdAt, accountIds, and meterIds, along with building and HVAC metadata. Optionally narrow results using search or globalSearch query parameters.
- **create_a_arcadia_plug_site** — Create a new Arcadia site for grouping credentials, accounts, meters, and statements by location or logical grouping. Returns the created site object including id, siteName, city, state, postalCode, createdAt, accountIds, meterIds, and building/HVAC metadata.
- **get_single_arcadia_plug_site_by_id** — Retrieve a single Arcadia site by id. Returns the full site object including id, siteName, city, state, postalCode, streetLine1, createdAt, accountIds, meterIds, and building/HVAC metadata. Required: id.
- **update_a_arcadia_plug_site_by_id** — Fully update an Arcadia site by id using PUT. All fields must be provided to ensure a complete replacement of the existing resource. Returns the updated site object including id, siteName, city, state, postalCode, createdAt, accountIds, meterIds, and building/HVAC metadata. Required: id.
- **arcadia_plug_sites_update_2** — Partially update an Arcadia site by id using PATCH; only the provided fields are modified. Returns the updated site object including id, siteName, city, state, postalCode, createdAt, accountIds, meterIds, and building/HVAC metadata. Required: id.
- **delete_a_arcadia_plug_site_by_id** — Delete an Arcadia site by id. Does not delete related entities, but removes their references to the deleted site (e.g. assigned meters become unassigned). Returns a deletion log object with id that can be used to poll deletion status via the deletion log endpoint. Required: id.
- **arcadia_plug_sites_list_events** — List the event history for a specific Arcadia site, such as when the site was created or modified. Returns event records including eventType, fieldName, and createdAt. Optionally filter by createdAt, eventType, or fieldName using the search parameter. Required: site_id.
- **arcadia_plug_sites_partial_update** — Partially update an Arcadia site by id using PATCH; only the provided fields are modified. Returns the updated site object including id, siteName, city, state, postalCode, createdAt, accountIds, meterIds, and building/HVAC metadata. Required: id.
- **update_a_arcadia_meter_by_id** — Add meters to an Arcadia site by associating a non-empty list of meter IDs with the specified site. Returns a paged list of meter objects including id. Required: site_id, meterIds.
- **delete_a_arcadia_meter_by_id** — Remove meters from an Arcadia site by disassociating a non-empty list of meter IDs; the meters themselves are not deleted, only the site association is removed. Returns an empty 200 response on success. Required: site_id, meterIds.
- **list_all_arcadia_plug_statements** — List statements in Arcadia. Returns: id, accountIds, amountDue, statementDate, periodStartDate, periodEndDate, totalCharges, outstandingBalance, type, versionId, and isLatestVersion. Does not include line item charges or usages. Supports optional search and globalSearch query parameters.
- **get_single_arcadia_plug_statement_by_id** — Retrieve a single Arcadia statement by id. Returns: id, accountIds, amountDue, statementDate, periodStartDate, periodEndDate, totalCharges, outstandingBalance, type, versionId, isLatestVersion, providerId, dueDate, and more. Required: id.
- **list_all_arcadia_statements_details** — List detailed statements in the Arcadia system. Returns: id, statementDate, periodStartDate, periodEndDate, totalCharges, amountDue, outstandingBalance, dueDate, invoiceNumber, type, providerId, versionId, isLatestVersion, hasValidAccountStatus, createdAt, lastModifiedAt, and related account, meter, and site identifiers. Supports field-level filtering via search and globalSearch.
- **create_a_arcadia_statements_download** — Initiate a statement CSV download in arcadia as the first step of a two-step process — submits statement IDs to prepare the file and returns a URL for use in the subsequent download step. Returns: url. Maximum of 500 statement IDs per request; make multiple requests to download more.
- **list_all_arcadia_webhooks** — List all webhooks in Arcadia. Returns: id, eventType, status, webhookUrl, createdAt, lastAttemptedSendAt, nextScheduledSendAt, numberOfAttempts, resource, message, createdBy, and lastModifiedBy. Webhooks are automatically deleted 30 days after their last send attempt (RTCV and MFA webhooks are deleted sooner). Supports filtering with the search query parameter.
- **get_single_arcadia_webhook_by_id** — Retrieve a single Arcadia webhook by id. Returns: id, eventType, status, webhookUrl, message, resource, numberOfAttempts, createdAt, lastAttemptedSendAt, nextScheduledSendAt, createdBy, and lastModifiedBy. Required: id.
- **create_a_arcadia_resend** — Resend a webhook in arcadia by asynchronously rescheduling it to be sent to the current webhook URL configured for your organization. Returns the webhook object including id and url. Required: webhook_id.
- **list_all_arcadia_plug_providers** — List all Providers available in the Arcadia system. Returns: id, name, country, region, website, isHistorySupported, isMultiFactorAuthenticationSupported, isInstantIntervalsSupported, and nested intervals, statements, and multiFactorAuthentication support objects. Optionally filter results using search or globalSearch.
- **get_single_arcadia_plug_provider_by_id** — Retrieve a single Arcadia Provider by id. Returns: id, name, country, region, website, isHistorySupported, isMultiFactorAuthenticationSupported, isInstantIntervalsSupported, and nested intervals, statements, and multiFactorAuthentication support objects. Required: id.
- **list_all_arcadia_account_details** — List details for a specific account in arcadia. Returns: accountId, isStatementsProductActive. Required: account_id.
- **list_all_arcadia_account_payments** — List payments associated with a specific arcadia account. Returns payment records including id. Required: account_id.
- **list_all_arcadia_credential_counts** — List counts for a specific Arcadia credential, returning aggregated account totals associated with it. Returns: credential_id, accounts, active_accounts. Required: credential_id.
- **update_a_arcadia_credential_disable_resource_by_id** — Disable resources associated with a specific Arcadia credential. Returns an empty 204 response on success. Required: credential_id.
- **create_a_arcadia_credential_new_statement** — Create a new statement request for a credential in Arcadia, triggering retrieval of updated utility statements for that credential. Returns: type, payload (containing utilityCredentialId on submission or status on completion). Required: credential_id.
- **update_a_arcadia_credential_one_time_passcode_by_id** — Update the one-time passcode associated with a specific Arcadia credential. Required: credential_id. Returns an empty 204 response on success.
- **list_all_arcadia_credential_passwords** — List passwords associated with a given Arcadia credential. Returns id and attributes for each password record. Required: credential_id.
- **create_a_arcadia_credential_refresh** — Refresh an Arcadia credential by credential ID, triggering re-validation or re-fetching of utility account data. Returns an empty 204 response on success. Required: credential_id.
- **list_all_arcadia_credential_refresh_urls** — Get the refresh Connect URL for an existing Arcadia credential, enabling re-authentication or re-linking of the credential via the Connect flow. Returns: url. Required: credential_id.
- **delete_a_arcadia_credential_resource_by_id** — Delete resources associated with a credential in Arcadia. Returns an empty 204 response on success. Required: credential_id.
- **list_all_arcadia_credential_update_urls** — List the update URL for a specific arcadia credential. Returns: url. Required: credential_id.
- **update_a_arcadia_credential_verification_method_by_id** — Update the verification method for an Arcadia credential identified by credential_id. Returns: type, payload (containing utilityCredentialId on submission, or status of LOGIN_SUCCESS or PENDING on completion). Required: credential_id.
- **list_all_arcadia_discovered_statement_sources** — List source records associated with a discovered statement in Arcadia. Returns source objects including id and provider-specific attributes for the given statement. Required: discovered_statement_id.
- **list_all_arcadia_discovered_statement_versions** — List all versions of a discovered statement in Arcadia. Returns: id, discovered_statement_id, version. Required: discovered_statement_id.
- **get_single_arcadia_discovered_statement_version_by_id** — Get a single version of a discovered statement in Arcadia by id. Returns: id, discovered_statement_id, version. Required: discovered_statement_id, id.
- **list_all_arcadia_download_sources** — Poll for the prepared CSV download source for an Arcadia download request. Returns a streamable CSV file when the download is ready (HTTP 200), or a 202 response while the file is still being prepared — continue polling until a 200 is received. Required: download_request_webhook_id.
- **create_a_arcadia_download_csv** — Create a CSV download request for meter-level usage data across a selection of sites in Arcadia. Returns: url (extract the id segment from the url and pass it to the Stream Download endpoint to poll for or retrieve the completed file). Required: meterIds. Maximum 500 meterIds per request; submit multiple requests for larger datasets.
- **list_all_arcadia_file_counts** — List count statistics for a specific file in arcadia, summarizing the bulk file processing results. Returns: total, errors, warnings. Required: file_id.
- **delete_a_arcadia_file_resource_by_id** — Delete resources associated with a specific file in arcadia. Returns an empty 204 response on success. Required: file_id.
- **list_all_arcadia_file_sources** — List source records associated with a file in arcadia. Returns the source record object with content-specific fields whose shape depends on the file type. Required: file_id.
- **create_a_arcadia_meter_downloads_interval** — Create a download request for meter-level interval usage data in Arcadia. Returns: url (the polling URL used to stream the resulting CSV via the Stream Download endpoint). Required: meterIds. Maximum of 500 meterIds per request; submit multiple requests for larger datasets.
- **create_a_arcadia_meter_downloads_usage** — Create a meter-level usage data download request in Arcadia for a set of meters. Returns: url (the download request URL from which you extract the ID to poll the Stream Download endpoint until the CSV is ready). Required: meterIds. Maximum of 500 meter IDs per request; make multiple requests for larger sets.
- **create_a_arcadia_site_downloads_interval** — Create a download request for site meter usage data intervals in Arcadia. Returns: url (a link to the generated download resource, whose embedded ID can be used with the Stream Download endpoint to poll for readiness). Required: meterIds. Maximum 500 meter IDs per request; submit multiple requests for larger datasets.
- **create_a_arcadia_site_downloads_usage** — Create a site-level usage download request in Arcadia to prepare a CSV file of meter usages across one or more sites. Returns: url (extract the ID segment from this URL to use with the Stream Download endpoint for polling; the file will also be emailed when ready). Required: siteIds.
- **update_a_arcadia_site_meter_by_id** — Update meters associated with a specific site in arcadia. Required: site_id.
- **delete_a_arcadia_site_meter_by_id** — Delete meters associated with a specific site in arcadia. Returns an empty 204 response on success. Required: site_id.
- **list_all_arcadia_statement_details** — List detail line items for an Arcadia statement. Returns: id. Required: statement_id.
- **list_all_arcadia_statement_sources** — List source records associated with a specific statement in Arcadia. Returns: id, statement_id. Required: statement_id.
- **list_all_arcadia_statement_version_details** — List detail records for a specific version of an Arcadia statement. Returns: id. Required: statement_id, version_id.
- **list_all_arcadia_statement_versions** — List all versions of a statement in Arcadia. Returns: id, statement_id. Required: statement_id.
- **get_single_arcadia_statement_version_by_id** — Get a specific version of a statement in Arcadia by id. Returns: id, statement_id. Required: statement_id, id.
- **create_a_arcadia_webhook_resend** — Trigger a resend of a webhook event in Arcadia for the specified webhook. Returns an empty 204 response on success. Required: webhook_id.

## How it works

1. **Link your customer's Arcadia account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Arcadia.** The Proxy API is a 1-to-1 mapping of the Arcadia API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Automate Scope 2 Carbon Accounting Data Collection** — ESG and carbon accounting platforms can let customers connect their utility accounts once and automatically sync 12+ months of kWh consumption and billing data. This eliminates manual PDF bill uploads and gives auditors primary-source data for emissions calculations.
- **Enable Portfolio-Wide Energy Monitoring for PropTech** — Building management and CRE platforms can map customer real estate portfolios to Arcadia Sites and Meters, then pull 15-minute interval data nightly to detect anomalies, optimize HVAC, and benchmark energy spend across hundreds of locations.
- **Power Solar & Storage ROI Modeling** — Solar design and renewable procurement SaaS can request a prospect's historical interval data the moment they authenticate, then model payback periods against tariffs and weather patterns — turning a 2-week proposal process into minutes.
- **Automate Utility Bill AP and Invoice Auditing** — Utility bill management platforms can ingest parsed statement line items and raw PDF source files directly, automating accounts payable workflows and flagging billing errors across multi-site enterprise customers without manual data entry.
- **Offer Self-Serve Utility Account Linking** — Any SaaS dealing with energy data can embed a hosted Arcadia Connect URL so end users can securely link utility accounts, handle MFA, and refresh credentials — without the SaaS ever touching raw utility logins.

## What you can build

- **Embedded Utility Account Connect Flow** — Generate a hosted Arcadia Connect URL so end users can select their utility provider, enter credentials, and complete MFA inside your app without you handling raw secrets.
- **Multi-Site Portfolio Mapping** — Programmatically create Arcadia Sites for each customer location and associate utility accounts and meters to mirror your customer's real estate footprint inside your platform.
- **Automated Statement Sync with Source PDFs** — Listen for newly discovered statements and pull both the parsed JSON line items and the original PDF source file to maintain an auditable system of record for every utility bill.
- **Bulk Interval Data Ingestion Pipeline** — Trigger asynchronous interval or usage downloads at the meter or site level, then ingest the resulting CSV streams to power load analysis, anomaly detection, and forecasting.
- **MFA & Credential Refresh Handling** — Programmatically respond to one-time passcode prompts, refresh expired sessions, and update verification methods so utility connections stay live without user intervention.
- **Payment & Balance Visibility Dashboard** — Surface utility account payment history and outstanding balances inside your product so customers can track bill resolution and avoid late fees or service interruptions.

## FAQs

### How do end users authenticate their utility accounts?

Truto exposes Arcadia's hosted Connect flow via `create_a_arcadia_credentials_encoded_connect_url`. You generate a URL, redirect your user, and Arcadia handles provider selection, credential entry, and MFA. Your platform never stores raw utility logins.

### Can the integration handle utility portals that require MFA or OTP codes?

Yes. Endpoints like `update_a_arcadia_one_time_passcode_by_id`, `update_a_arcadia_verification_method_by_id`, and `create_a_arcadia_refresh` let you programmatically respond to OTP prompts and refresh sessions for utilities that force frequent re-authentication.

### How do I pull granular 15-minute interval consumption data?

Use `get_single_arcadia_normalized_intervals_meter_by_id` for direct reads, or for bulk loads trigger `create_a_arcadia_downloads_interval` (or the site/meter-scoped variants) to kick off an async job. You then poll or listen for the resulting CSV/JSON download to ingest.

### Can I retrieve both parsed statement data and the original PDF?

Yes. `list_all_arcadia_plug_statements` and `list_all_arcadia_statements_details` return parsed line-item billing data, while `list_all_arcadia_sources` and related source endpoints provide the raw PDF documents processed by Arcadia's OCR engine.

### How do I keep my internal IDs in sync with Arcadia Sites and Meters?

When creating Sites (`create_a_arcadia_plug_site`), Meters (`create_a_arcadia_plug_meter`), or Files (`create_a_arcadia_plug_file`), you can attach metadata fields to map Arcadia IDs back to your own database records, making bi-directional lookups straightforward.

### How fresh is the data, and how do I know when new statements arrive?

Arcadia syncs data on a recurring cadence per utility. You can use `list_all_arcadia_webhooks` to manage webhook subscriptions and `list_all_arcadia_plug_discovered_statements` to fetch newly discovered bills, eliminating the need for blind polling.

## Related reading

- [Connect Arcadia to Claude: Sync Meter Data and Statements](https://truto.one/blog/connect-arcadia-to-claude-sync-meter-data-and-statements/) — Learn how to connect Arcadia to Claude using a managed MCP server. Sync utility meters, automate statement retrieval, and handle async CSV downloads.
- [Connect Arcadia to ChatGPT: Analyze Utility Bills and Usage](https://truto.one/blog/connect-arcadia-to-chatgpt-analyze-utility-bills-and-usage/) — Learn how to connect Arcadia to ChatGPT using a managed MCP server. Automate utility data extraction, statement processing, and interval usage analysis.
- [Connect Arcadia to AI Agents: Automate Utility Data Pipelines](https://truto.one/blog/connect-arcadia-to-ai-agents-automate-utility-data-pipelines/) — Learn how to connect Arcadia to AI agents using Truto's /tools endpoint. Automate utility data pipelines, meter intervals, and asynchronous downloads natively.
