Platform Documentation

/

Integrations

Integrations connect NEQTO.ai to external APIs and brokers. NEQTO.ai opens the connection using the service URL and credentials you provide. A pull integration brings data into NEQTO.ai, while a push integration sends data out. Custom integrations support TLS-secured HTTPS, WSS, and MQTTS connections.

Integration or Device Endpoint? Use a Device Endpoint when your hardware or software connects to NEQTO.ai. Use an Integration when NEQTO.ai must connect to the external service. Data pulled through an Integration can be mapped to Devices and Attributes, then used in dashboards, alerts, and analytics.
Diagram: NEQTO.ai connects out to your external service using your credentials. On a schedule the integration pulls a JSON payload in; from a pulled sample the AI proposes fields which you confirm to create a device labeled Integration, whose readings feed dashboards and alerts. In the other direction the integration pushes JSON payloads out to the service.
NEQTO.ai connects to the external service, pulls or pushes JSON, and maps pulled readings to devices after you confirm a sample.

Where to find integrations

Open Integrations from the account navigation or from an application’s sidebar. The default application shows every integration in the account. A non-default application shows only the integrations linked to it. You also need the appropriate View Integrations permission for that account or application.

The Integrations screen showing a table of integrations with name, protocol, direction, status, and an Actions column.
The Integrations screen lists every connector with its protocol, direction, and status.

Create a custom integration

A Custom integration is the one you configure yourself. Its wizard walks five screens: Type, Protocol, Credentials, Settings, and Verify.

  • 1
    Open Integrations and select the + (Add Integration) button. On the Type screen, choose Custom to enter your own service URL and credentials. For a service listed on its own card, use the instructions under Prebuilt connectors instead. With Custom you own the provider’s contract, so if their API changes the integration is yours to adjust.

    A ? sits beside the choices that need explaining: each connector card, each protocol, Direction, Authentication method and Name. Select it for a short explanation of what the option does and when to pick it.

    Wizard step 1 (Type), headed Choose an integration type, with a five-step indicator reading Type, Protocol, Credentials, Settings, Verify. A Describe the service you would like to integrate field sits above it. Three cards are stacked: ENERGY STAR Portfolio Manager, Weather, and Custom. Each carries a question-mark button, and Custom is selected with a check mark.
    Step 1, Type: choose the integration type.
  • 2
    On the Protocol screen, choose the TLS transport. Match it to what the provider documents:
    • MQTTS holds a connection open and exchanges messages on topics, which suits a broker or gateway that streams continuously. Choose it when the other service speaks MQTT.
    • HTTPS makes one request per exchange. It is the simplest to configure and to debug, and it is what most provider APIs offer. Choose it for a REST or webhook API.
    • WSS keeps one connection open and carries messages in both directions. Choose it when the provider documents a WebSocket endpoint.
    Wizard step 2 (Protocol), headed Choose a protocol with the line Integrations use TLS-secured transports only. Three cards list MQTTS, HTTPS and WSS, each with a question-mark button, and none is selected yet.
    Step 2, Protocol: pick how NEQTO.ai connects.
  • 3
    On the Credentials screen, set the direction (Pull, Push, or Pull & Push), enter the pull and/or push URL, optionally add custom headers, then pick an authentication method and enter its credentials. Pull and Push use separate URLs when you choose both directions. See the table below for the fields required by each authentication method.

    Pull means NEQTO.ai calls your service and asks for data: on a schedule when the integration has a pull interval, and whenever you pull a sample. A Custom integration starts without an interval; set one in its Edit settings to pull on a schedule. See Custom pull schedules below. Push means NEQTO.ai sends data out to your service. Both need an endpoint NEQTO.ai can reach on the public internet. The authentication method is how NEQTO.ai proves who it is to that service, so the provider decides which one to use: check their API documentation. A wrong choice fails at the connection test rather than silently.

    Wizard step 3 (Credentials), headed Connection and credentials. Direction is set to Pull, a Pull URL field holds an example HTTPS address, an optional Headers (JSON) field is empty, the authentication method is API key, and the API key field below it is masked. Direction and Authentication method each carry a question-mark button.
    Step 3, Credentials: direction, endpoints, and authentication. Saved credentials are encrypted and are not displayed again.
  • 4
    On the Settings screen, give the integration a name and an optional description, then choose Create. Integration names must be unique within the account, and the name identifies this connection in the list, in alerts, and wherever its devices appear, so one that says which system and which site it serves saves guessing later. It can be changed at any time.

    The integration starts in Draft status: you can pull a manual sample while it is a draft, but scheduled pulls and pushes do not run until you turn it on.

    Wizard step 4 (Settings), headed Name your integration, with the five-step indicator showing Verify still ahead. Name reads Rooftop Solar Feed and carries a question-mark button; Description reads Inverter readings from the rooftop array and has none. A note says the connection is tested and the integration activated on the next step, Verify, that Verify explains how to finish from the integrations list when the authentication method needs approval at the provider, and that a pull integration's sync interval is set after creation with Edit settings on its row. The buttons are Back, Cancel and Create.
    Step 4, Settings: name and describe the integration.
  • 5
    The wizard moves to Verify. See Verify: test and activate.

Draft an integration with AI

The wizard opens with a field reading Describe the service you would like to integrate. Describe the service you want to connect and the assistant fills the screens it can work out, leaving you to check them and continue. Fields it inferred are marked, and anything you typed yourself is kept. See the Ask AI guide for how drafting behaves everywhere it appears.

Authentication methods

Six methods are available. The choice changes what you enter and how NEQTO.ai sends it, and every secret is encrypted on save and never shown again.

Method What you enter How it is sent
API key Your API key. An X-API-Key header on every request.
Bearer token Your token. An Authorization: Bearer header on every request.
Basic auth Username and password. An Authorization: Basic header on every request.
OAuth2 (client credentials) Client ID, client secret, and the provider’s token URL. NEQTO.ai obtains an access token from the provider automatically and refreshes it as it expires. No sign-in is required.
OAuth2 (authorization code) Client ID, client secret, token URL, and the provider’s authorization URL. After creating the integration, choose Connect on its row and sign in at your provider once. NEQTO.ai then manages and refreshes the tokens automatically.
Mutual TLS (mTLS) In the wizard, a Certificate URL that NEQTO.ai fetches the service’s CA certificate from. After creating the integration, add your client certificate and private key (PEM) through the row’s Edit credentials action, in the Credentials (JSON) field, as clientCertPem and clientKeyPem (optionally caPem, which overrides the fetched CA). The integration cannot connect until these are set. The client certificate authenticates the TLS connection itself.
Credentials are write-only. NEQTO.ai encrypts saved credentials and does not display them again. In Edit credentials, leave the Credentials (JSON) field blank to keep the saved secret, or enter a complete replacement JSON object. Custom headers take precedence over headers generated by the selected authentication method. For example, a custom Authorization header replaces the Bearer or Basic header.

MQTT username for token-based authentication

Over MQTTS, the broker asks for a username when the connection opens. A token can serve as the password, but not the username. So when the protocol is MQTTS and the authentication method is API key, Bearer token, OAuth2 (client credentials) or OAuth2 (authorization code), the Credentials screen adds an MQTT username field. Enter the username the broker expects. The token becomes the password. The field is required, and it appears both in the create wizard and in the row’s Edit credentials action, so you can add one to an existing integration without rebuilding it.

The Credentials step of the Add integration wizard for an MQTTS integration. Direction is Pull, the pull URL is an mqtts:// broker address, the authentication method is API key, and between them an MQTT username field holds the broker username. The API key field below it is masked.
Over MQTTS, a token-based method also asks for the MQTT username the broker expects. The token itself becomes the password.

Basic auth is unaffected: it already collects a username and password, and those are what the broker receives. Mutual TLS (mTLS) authenticates the connection itself and asks for no username.

Private certificate authorities: open Edit credentials and set an HTTPS Certificate URL that returns the CA in PEM format. You can instead put caPem in Credentials (JSON), but that field replaces the complete saved secret. Include the authentication method’s other required fields in the same object. For OAuth2 authorization code, replacing the secret also removes its tokens, so use Connect again afterward. Integrations can reach only publicly resolvable hosts; private and internal network addresses are blocked.

Prebuilt connectors

A prebuilt connector appears on the Type screen as its own card. NEQTO.ai supplies its protocol, request format, and platform credentials. The wizard asks only for the account, authorization, or location that the provider needs.

The prebuilt connectors are ENERGY STAR Portfolio Manager and Weather. Use Custom for other services.

Free and Starter do not include prebuilt connectors such as ENERGY STAR Portfolio Manager and Weather. Custom integrations are available on every plan.

Step 1, Type, of the Add integration dialog, headed Choose an integration type with the line Start from a prebuilt connector or build a custom one. Three cards are stacked: ENERGY STAR Portfolio Manager, described as pulling scores, energy and emissions metrics for properties shared with the platform account; Weather, described as pulling current conditions for a location, with the line Weather data by Open-Meteo.com (CC BY 4.0); and Custom, for connecting to any MQTTS, HTTPS, or WSS endpoint with your own credentials. Cancel and a disabled Next button sit at the bottom.
Prebuilt connectors sit alongside Custom on the first step. A connector the environment cannot serve is not listed.
Note: the number of steps depends on the card you pick. Custom runs Type → Protocol → Credentials → Settings → Verify. ENERGY STAR runs Type → Connect → Settings → Verify, where Connect proves the account is yours instead of collecting a credential. Weather runs Type → Settings → Verify. Every path ends on Verify.

ENERGY STAR Portfolio Manager

This connector pulls annual ENERGY STAR scores, energy, emissions, and water metrics for properties shared from your Portfolio Manager account. NEQTO.ai uses a platform-managed Portfolio Manager account, so you do not enter that account’s username or password in the integration. Setup has three parts: prepare the property in Portfolio Manager, connect your Portfolio Manager account to NEQTO.ai, then share the property with the platform account.

Prepare the property in Portfolio Manager

NEQTO.ai reads the metrics Portfolio Manager has already calculated. Portfolio Manager only calculates them for a property that has a meter with 12 full calendar months of bills, ending with the most recently completed month. A property without that data connects and shares normally but produces no values, so finish this part first.

  • 1
    Sign in to Portfolio Manager. On MyPortfolio, choose Add a Property.
    The MyPortfolio tab in Portfolio Manager for an account with no properties yet. A Properties (0) panel holds the Add a Property button, highlighted. A Manage Portfolio panel below lists links for uploading properties from a spreadsheet, downloading the portfolio, setting a baseline, adding sample properties, and deleting properties. On the right, a panel explains that the account has no properties and offers Set up your first property and Add up to five sample properties.
    If you already benchmark your buildings in Portfolio Manager, skip to the connection part. Any existing property with 12 months of data works as is.
  • 2
    Pick the property type, the number of buildings, and whether the building is existing or still under construction, then choose Get Started. On Basic Property Information, enter the name, address, year built, Gross Floor Area, and the percentage of floor space that is occupied.
    The Set Up a Property: Basic Property Information page in Portfolio Manager. The About Your Property panel shows a filled form: Name, Country set to United States, Street Address, City, State set to Massachusetts, Postal Code, Year Built, and Gross Floor Area with a Sq. Ft. unit selector and a Temporary Value checkbox. A Tip panel on the right notes that the property name does not have to be unique.
    Gross floor area and occupancy are required. The ENERGY STAR score also depends on them, so use real figures.
  • 3
    On How is it used?, fill in the property use details for the building type and choose Add Property. Fields marked with a star feed the 1 to 100 ENERGY STAR score. Use a default is acceptable for values you do not know.
    The Property Use Detail table for an office in Portfolio Manager, with the Value column highlighted. Rows read Gross Floor Area 50,000 Sq. Ft., Weekly Operating Hours 60, Number of Workers on Main Shift 200, Number of Computers 220, and Percent That Can Be Cooled and Percent That Can Be Heated set to 50 % or more with Use a default ticked. Each row has a Current As Of date and a Temporary Value checkbox. A note below says this use detail is used to calculate the 1-100 ENERGY STAR Score, and the Add Property button is highlighted.
    Without these details Portfolio Manager still reports energy and emissions metrics, but not the score.
  • 4
    Open the property’s Energy tab and choose Add energy use information. Tick each energy source the building uses and how many meters it has, then choose Get Started. For each meter set the Units and the Date Meter became Active, then Create Meters. Confirm that the meters account for the property’s total energy use.
    The Get Started Setting Up Meters page in Portfolio Manager for a property. Under Sources of Your Property's Energy, Electric is ticked with purchased from the grid ticked beneath it and How Many Meters set to 1. The remaining sources such as Natural Gas, Propane, Fuel Oil, Diesel, District Steam, District Hot Water, and District Chilled Water are unticked. Side panels explain how to track energy, that onsite solar or wind still needs a grid meter, and how to automate meter entries.
    One meter per energy source is enough. Portfolio Manager combines them into the site and source totals.
  • 5
    On Manage Bills, add one entry per month for at least the last 12 full calendar months and choose Save Bills. Each entry runs from the first to the last day of a month, and the newest entry ends on the last day of the previous month. Bills that run mid-month to mid-month need 13 entries to cover 12 full months.
    The Monthly Entries table on the Manage Bills page in Portfolio Manager, with Display Years set to Show All Years. Twelve rows list consecutive calendar months, each with a Start Date on the first of the month, an End Date on the last day of the month, a Usage value in kWh, and a Total Cost in dollars. The Estimation, Demand, and Demand Cost columns are empty.
    Portfolio Manager marks a metric as not available until every meter covers the full period. The property’s Summary tab shows the values once they exist.
Evaluating the connector? Portfolio Manager offers Add up to five sample properties on the MyPortfolio tab. Sample properties come with meter data already entered, so they produce metrics straight away.

Connect your Portfolio Manager account

  • 1
    In NEQTO.ai, on the Type screen, choose ENERGY STAR Portfolio Manager. The Connect step displays a one-use connection code and its expiration time.
  • 2
    Follow the link to your own Portfolio Manager account. Open Contacts, choose Add New Contacts/Connections, search for the platform account named in the wizard, and select Connect. Paste the code into the Neqto Connection Code field and send the request. The wizard detects and accepts the connection automatically. If the code expires, generate a new one.
    Step 2, Connect, of the Add integration dialog, headed Connect your ENERGY STAR account. A read-only Your connection code box holds the one-time code with a Copy button beside it, and the line Expires, with a date and time, Each code can be used once, sits below. A numbered list of four instructions follows: sign in to your own Portfolio Manager account with a link reading open ENERGY STAR Portfolio Manager; open Contacts, choose Add New Contacts/Connections, search for the platform account name, and click Connect; paste the code into the Neqto Connection Code field on the connection request form; and send the connection request, verification is automatic from here. Below the list a spinner reads Waiting for your connection request, followed by a Generate a new code button.
    The wizard waits on this step and moves on by itself once Portfolio Manager sends the request. Nothing needs to be pasted back into NEQTO.ai.
    The Add Contact page in Portfolio Manager. A panel headed Connect with an Existing User for Sharing offers Name, Organization, Username and Email search fields, with the platform account's username typed into the Username field, and Search and Cancel controls beneath. A side panel headed Connecting with Other Users explains that you search for a contact, send a Connection Request, and they join your Contacts once they accept.
    Search by Username. The platform account name is shown in the NEQTO.ai wizard, on the Connect step.
    The Portfolio Manager search results page. A single result row shows the platform account with a Connect button beside it. On the left, a Your Search Criteria panel repeats the Name, Organization, Username and Email Address fields with the username still filled in.
    One result, with Connect beside it. Choosing it opens the connection request form.
    The connection request form in Portfolio Manager, headed Send a Connection Request to the platform account to Begin Exchanging Data. A short paragraph explains that the account requires the following information in order to exchange data with your properties. Below it a required Neqto Connection Code field sits beside the text Example: NQ-7F3K-9QD2, with the note Paste the connection code shown in the NEQTO.ai integration wizard.; 6 - 32 Characters. A Terms of Use row reads None Provided, and Send Connection Request and Cancel controls sit at the bottom.
    The code goes in the Neqto Connection Code field on the Portfolio Manager request form, not anywhere in NEQTO.ai.
  • 3
    If your organization has already verified a Portfolio Manager account, the Connect step lists it instead of issuing a code. Select the account whose properties you want, or choose Connect another account. A Portfolio Manager account can belong to only one NEQTO.ai organization.
    The Connect step of the Add integration dialog once an account is verified. A Verified accounts section notes that these are ENERGY STAR accounts the organization has already verified and invites you to pick one or connect another. One account is listed with its radio button selected, and a Connect another account button sits below. Back, Cancel and Next run along the bottom.
    Once an account is verified, the Connect step lists it instead of issuing a new code.
  • 4
    The Settings step opens with the verified account shown as a read-only line. Until that account has shared a property, the Properties section shows a waiting notice instead of a list. Leave the wizard open and share the property in Portfolio Manager, as described next.
    Step 3, Settings, of the Add integration dialog, with Type and Connect showing green check marks. Empty Name and Description fields sit at the top, then Connected ENERGY STAR account showing the verified account and its id. Under Properties, a notice reads that this account has not shared any properties with the platform yet, asks the property owner to share their property with the platform ENERGY STAR account, and notes the share is accepted automatically and data starts on the next sync. Back, Cancel and a disabled Create button run along the bottom.
    Connecting proves the account is yours. It does not, by itself, give NEQTO.ai access to any property.

Share the property with the platform account

Each property you want to sync is shared from inside Portfolio Manager at the Exchange Data permission level. Read-only access is enough: NEQTO.ai only reads metrics and never writes to your property or meters.

  • 1
    In Portfolio Manager, open the Sharing tab and choose Share with your Utility or Service Provider for exchanging data. Do not use Share (or Edit Access to) a Property, which is for sharing with other Portfolio Manager users.
  • 2
    Under Select Web Services Provider, choose the platform account. Only connected contacts appear in that list, so finish the connection first. Under Select Properties, tick the properties to sync and apply the selection.
  • 3
    Under Choose Permissions, select Bulk Sharing, then Exchange Data Read Only Access, and choose Authorize Exchange.
    The Share Properties for Exchanging Data page in Portfolio Manager. Step 1, Select Web Services Provider, shows the platform account chosen in the contacts dropdown. Step 2, Select Properties, shows a Select Properties button and Selected Properties: 1. Step 3, Choose Permissions, has Bulk Sharing (Simple Option) selected with Exchange Data Read Only Access chosen among Exchange Data Full Access, Exchange Data Custom Access, and Remove Access. A Personalized Sharing (Custom Orders) option sits below, and the Authorize Exchange button is at the bottom.
    Bulk Sharing applies the same permission to every selected property and its meters in one step.
  • 4
    NEQTO.ai accepts the share automatically, usually within seconds. Portfolio Manager records it on the Sharing tab as accepted by the platform.
    The Sharing tab in Portfolio Manager after the share. My Shared Properties shows a count of 1 above the Share (or Edit Access to) a Property, Share with your Utility or Service Provider for exchanging data, and Download Sharing Report buttons. Sharing Notifications lists the property and its electric meter, each recorded as a share accepted by the platform account because it was accepted automatically by the platform.
    Both the property and its meters show as accepted. Nothing else is needed on the Portfolio Manager side.
Why this matters: an integration with no shared property is not broken. It stays in a waiting state and starts pulling as soon as the first share arrives, so the share can be done before or after the integration is created.

Finish the integration in NEQTO.ai

  • 1
    Back in the wizard, step Back and Next to refresh the Settings step. The shared property now appears under Properties. Name the integration and tick the properties to sync. Leaving every property unchecked includes every property this account shares now or later. You can select up to 200 specific properties instead.
  • 2
    Choose at least one metric, select US customary (EPA) or Metric units, and set the sync interval in whole minutes. The default is 1,440 minutes. Your plan may require a longer interval. Each reported value keeps the unit supplied by ENERGY STAR. Choose Create.
    Step 3, Settings, of the Add integration dialog, with Type and Connect showing green check marks. Connected ENERGY STAR account shows the verified account and its id. Under Properties, with the hint that leaving every box unchecked includes all of them now and in the future, one property is listed and ticked. Metrics follows, noted as pulled once per sync for each property as an annual value for the trailing 12 months, with eight ticked checkboxes in two columns: ENERGY STAR score and Site EUI, Source EUI and Site energy total, Source energy total and Total GHG emissions, GHG emissions intensity and Water use total. A Units heading is visible at the lower edge, and Back, Cancel and Create buttons run along the bottom.
    Metrics, units, and cadence are chosen once for the integration and apply to every property it syncs.
  • 3
    The integration appears in the list as a draft. Turn on its Status switch, then from its actions menu choose Create device(s) from sample and Pull sample. NEQTO.ai proposes one device per property, named after the property, with a field for each metric Portfolio Manager reports and the unit it reports it in. Review the proposal and choose Create device.
    The Create device(s) from sample dialog with a Pull new sample button at the top. A proposal card shows Device name filled with the property name and a table of six fields, all ticked: siteIntensity in kBtu/ft² with sample value 35.6, sourceIntensity in kBtu/ft² with 99.7, siteTotal in kBtu with 1781064, sourceTotal in kBtu, totalLocationBasedGHGEmissions in Metric Tons with 128.61, and totalLocationBasedGHGEmissionsIntensity in kgCO2e/ft² with 2.57. A Raw sample toggle sits below the table and a Cancel button at the bottom.
    Only metrics with a value are proposed. Here the score and water use are absent because Portfolio Manager had not calculated them yet.
  • 4
    The first successful pull changes Pending activation to Active, and the device count shows one device per property. From here the devices behave like any other: dashboards, alerts, and exports all work, and each scheduled sync refreshes the values.
    The Integrations list in NEQTO.ai with one row. The row reads the integration name, type Prebuilt, direction Pull, a Status switch turned on with the label Active, one device, the application it belongs to, and an actions menu.
    Active with one device. The next scheduled sync pulls the latest annual values.

The connector can pull these eight metrics:

  • ENERGY STAR score
  • Site and source energy use intensity (EUI)
  • Site energy total and source energy total
  • Total location-based greenhouse gas emissions and emissions intensity
  • Water use total
Metric period: each sync requests one annual value per selected metric for the trailing 12 months, ending with the latest complete UTC month. A metric with no value is left out of the sample rather than recorded as zero. If the sample reports that the source has not reported values yet, check that the property’s meters have bills through the end of the previous month, then choose Pull new sample.

Weather

The Weather connector pulls current conditions for one location on a schedule and creates a device for them. Weather readings can then be used beside your own data in dashboards, alerts, and analytics.

  • 1
    On the Type screen, choose Weather. The wizard goes straight to Settings. There is no protocol to pick and no credential to supply.
  • 2
    Name the integration, then set the location. Latitude runs from −90 to 90 and Longitude from −180 to 180. Location name is optional and is only a label. Conditions are fetched by coordinates, so the name never changes what is observed.
  • 3
    Set the Sync interval in minutes, then choose Test. It fetches the current conditions for those coordinates and lists them, so you can confirm you have the right place before saving. Match the interval to how often the source actually updates: polling faster than the provider publishes gains nothing, and your plan sets the shortest interval allowed. If the prefilled value is shorter than your plan permits, creating the integration fails with The pull interval is shorter than your plan allows. Raise the number and try again.
    The Settings step for a Weather integration. Name reads New York Weather. Under Location are Latitude 40.7128 and Longitude -74.0060, an optional location name of New York, NY, and a sync interval of 180 minutes. Below a Test button a preview lists the eight fetched variables with their values and units, and a note says that creating the integration also creates its weather device and that the connection is tested and the integration activated on the next step, Verify, to start scheduled updates.
    Weather’s Settings step. Test fetches the current conditions for those coordinates before you save.
  • 4
    Choose Create. Along with the integration, NEQTO.ai creates its weather device, with the standard weather attributes already mapped.
  • 5
    The wizard moves to Verify, where you can test the connection and turn the integration on. You can also close the wizard and turn it on from its row later — scheduled updates do not start while the integration is a draft.
The Attributes tab of the device a Weather integration created, headed Attributes (8). The rows are temperature_2m in degrees Celsius, relative_humidity_2m as a percentage, apparent_temperature in degrees Celsius, precipitation in millimetres, wind_speed_10m in kilometres per hour, wind_direction_10m in degrees, surface_pressure in hectopascals, and cloud_cover as a percentage.
The weather device and its eight attributes. Units arrive from the provider with each reading, so they are not something you configure.

Every scheduled sync brings in the same eight variables:

  • Temperature and apparent temperature (what it feels like)
  • Relative humidity
  • Precipitation
  • Wind speed and wind direction
  • Surface pressure
  • Cloud cover
No provider account is required. NEQTO.ai manages the weather-service connection, so there is no account to create and no key to enter. The connector card credits Open-Meteo under its CC BY 4.0 license.

If the automatic device setup does not complete, the integration is still created. Open its actions menu and choose Create device(s) from sample to finish the job by hand.

Pull data and create devices

For a Custom pull integration, Create device(s) from sample makes an immediate request to the external service. HTTPS uses GET. WSS waits for the first message after the connection opens. MQTTS subscribes to the topic in the URL path, or to all topics when the URL has no path. In every case, the first payload must be a single JSON object no larger than 1 MB.

From a sample to a device

  • 1
    Open the integration’s actions menu, choose Create device(s) from sample, then choose Pull sample. For a Custom integration, the AI inspects the JSON structure and proposes fields. Prebuilt connectors use their known provider fields instead.
  • 2
    Review the proposed device name and fields. You can include or exclude fields, rename them, and correct their units. Changes are saved with the proposal, so you can close the dialog and return later. Select the trash button to reject a proposal without creating a device.
  • 3
    Select Create device for each proposal you want. NEQTO.ai creates the device and its selected Attributes, and links it to the same applications as the integration. Devices created this way are labeled Integration in Devices & Data.
Pulling a new sample replaces pending work. If proposals already exist, Pull new sample discards those proposals and any edits, then builds a fresh set. Devices you already confirmed are not deleted.

A Custom integration without a device identifier creates one device from its sample. When the account’s metadata mapping defines an identifier field, that value becomes the Device’s external ID. Later payloads must carry the same identifier value to reach that Device. NEQTO.ai freezes the identifier path when you confirm the first Device, so changing the account metadata mapping later does not reroute that integration.

Custom pull schedules: a Custom integration created in the wizard starts without a pull interval, so it pulls only when you pull a sample. To pull on a schedule, open the row’s Edit settings and enter a Sync interval (minutes), a whole number from 1 to 525,600. The field is shown once the integration has a pull URL. Your plan sets the shortest interval allowed, and a shorter value is refused with the minimum your plan allows. If your plan runs the integration at a different interval from the one saved, the field says so. Scheduled pulls run only while the integration is on. Prebuilt connectors set their own interval in the wizard or use their documented default, and the Weather and ENERGY STAR intervals can be changed later in Edit settings too.

Push data to an integration

A Custom integration set to Push or Pull & Push sends a JSON payload to your service. The protocol you picked decides what happens on the wire.

A Custom integration with direction Push or Pull & Push can send a JSON payload to the external service. The serialized payload can be up to 64 KiB. NEQTO.ai applies the integration’s saved authentication and custom headers.

Protocol Push behavior
HTTPS Sends a POST request with a JSON body and Content-Type: application/json.
WSS Opens the WebSocket, sends the serialized JSON, then closes the connection.
MQTTS Publishes to the configured topic or the topic in the URL path. The topic must be concrete. Publish wildcards such as # and + are not allowed.

An alert’s Payload push action can target an HTTPS or MQTTS integration that supports push and is Active or Pending activation. To call a webhook when an alert fires, create a Custom HTTPS integration with the webhook URL as its Push URL, then select that integration in the alert’s Payload Push tab and save the alert. This creates the alert target’s Action. Only then can you open that Action’s Dry run dialog, review it, select Approve in the dialog, and return to the list to Enable it. Dry run is the required UI path to Approve; creating the integration alone does not create an Action. The webhook receives a JSON POST when the enabled target’s alert fires. Alert payload push does not support WSS. See the Alerts guide for payload templates, target approval, and destination rules.

Scheduled auto-push: if an auto-push message and interval are present in the integration configuration, NEQTO.ai sends that message on the schedule. Your plan sets the shortest allowed interval. The current add and edit screens do not expose auto-push settings.

Verify: test and activate

Verify is the wizard’s last screen, headed Test and activate. It does three things in order: check the connection, turn the integration on, and watch for the first data.

The mental model: testing and activating are separate actions. A passing test says the service answers. It does not start collecting anything. Until you activate, no data is gathered.

Test the connection

Choose Test connection to run it. A pass reports The connection works, and the button becomes Test again, so you can correct something and retest without leaving the wizard. A failure reports The connection test failed and the reason, such as Authentication rejected by the endpoint.

On a Custom integration this is the same check as Test connection on its row, so see that section for what each outcome means, including the credential probe that follows a successful connection. On a prebuilt connector the test asks the provider for a real sample instead, with no credential probe. That test is only on this screen; the row does not offer it.

The Verify step of the Add integration wizard, step 5 of five. It is headed Test and activate, with the line Check the connection, turn it on, and wait for the first data to arrive. A Test again button sits above a green panel reading The connection works. Below that panel is the line Activation starts collecting data. It is a separate step from the test above, and under it an Activate integration button.
A passing test does not turn the integration on. Activate integration appears underneath it as a separate action.

When the provider must approve access

An integration that uses OAuth2 (authorization code) needs your approval at the provider’s website. Until you approve access, the Verify test reports Provider authorization required, and Activate integration does not appear.

The Verify step of the Add integration wizard after the connection test, with the button now reading Test again. A red box surrounds a panel headed Provider authorization required. It reads: This integration can connect only after you approve its access at the provider. Close this wizard, then choose Connect on the integration's row menu, sign in to the provider, and approve the request. Approving returns you to the integrations list. Choose Test connection on the same row menu, then turn on the switch in the row's Status column to activate the integration. Readings are only stored against a linked device, so finish by choosing Create device(s) from sample on the same row menu to set them up. A Close button sits at the bottom right, and there is no Activate integration button.
Verify explains how to approve access at the provider and activate the integration.

The integration is already saved as a Draft. Finish from the integrations list:

  • 1
    Choose Close to leave the wizard.
  • 2
    Open the integration’s row menu and choose Connect. NEQTO.ai sends you to the provider’s sign-in page.
    The Integrations table with one row, Building Management API, type Custom HTTPS, direction Pull, its Status switch off and labelled Draft. Its actions menu is open, listing Edit settings, Edit credentials, Create device(s) from sample, Test connection, Connect, and Delete. A red box surrounds Connect.
    Connect appears on the row menu of an integration that uses OAuth2 (authorization code).
  • 3
    Sign in and approve the request. The provider returns you to the integrations list.
  • 4
    Choose Test connection on the same row menu, then turn on the switch in the row’s Status column. A pull integration also needs Create device(s) from sample before its readings are stored.

Connect requires the Edit Integrations permission. If your role lacks it, Verify asks you to have someone with that permission finish these steps.

Activate the integration

Activate integration appears only after the test passes, below the line Activation starts collecting data. It is a separate step from the test above. Choosing it asks for confirmation — Yes, activate it or Not yet — so you can check a connection without committing to it.

Activating does not by itself make the integration Active. The status shows Pending activation, with a note that the connection is not live yet and is activated once the first exchange with the provider succeeds. If activation itself fails, the screen reports The integration could not be activated. Its status is unchanged. and offers the button again.

The same Verify step after choosing Activate integration. That button has been replaced by two buttons side by side, Yes, activate it and Not yet, still under the line Activation starts collecting data. It is a separate step from the test above. The green panel reading The connection works is unchanged above them.
Activation is confirmed rather than one-click, so you can test a connection and stop there.

Wait for the first data

The screen then watches for readings, showing Waiting for the first data… while it looks, and reports what it finds. None of the states below is an error.

What you see What it means
The device has been created. Waiting for its first reading…, with the device under Devices observed marked no data yet The connector made its device and NEQTO.ai is waiting for a reading. The no data yet label clears once one arrives.
This integration is connected, but no devices are linked to it yet. Expected for any connector that creates no device during setup, which is every one except Weather. Use Create device(s) from sample on its row menu. Pulling a sample does not change the status; it moves to Active on the integration’s first automatic pull. A Custom integration pulls automatically only once it has a Sync interval; see From a sample to a device.
No data has arrived yet. The screen stops watching after about five minutes. The integration keeps running, and readings appear against its devices whenever the source next publishes — normal for a source that publishes infrequently.

When you are working inside an application, once devices exist a What next row offers Create alert and Create dashboard. Outside an application the row does not appear. Each opens that flow with the new devices already selected. The Alerts and Dashboards guides cover what to do there.

Integration status

A new integration starts as Draft. Turning it on changes the status to Pending activation. Its first successful pull or push changes the status to Active. Testing an integration, Custom or prebuilt, never changes its status, and neither does Create device(s) from sample; see Verify: test and activate.

Situation What happens
A scheduled pull or push gets 401, 403, or another non-retryable 4xx response. HTTP 408 and 429 are treated as retryable. The integration changes to Disabled. Fix the credentials, URL, or request expected by the service, then turn it on again.
A scheduled pull is rate-limited (429) The integration stays enabled. NEQTO.ai waits for the service’s Retry-After period when one is provided, or tries again at the next interval. Rate limits do not count toward the five-failure cutoff below.
A scheduled pull gets 408, a 5xx response, or a network error NEQTO.ai tries again at the next interval. Five consecutive scheduled pull failures change the integration to Disabled. A successful scheduled pull clears the failure count.
A scheduled push gets 408, 429, a 5xx response, or a network error The integration stays enabled and the push is tried again at its next interval.
A manual sample pull fails The dialog reports the error, but the failure does not disable the integration.
A prebuilt connector is waiting for authorization or a property share The integration stays enabled and displays the waiting reason. This does not count as a failed pull.

Read the Status column

A status that needs explaining carries an icon next to its switch. Hover it for the sentence. A Disabled row shows the reason NEQTO.ai recorded when it was deactivated, so you know what to check. A Pending activation row explains that it activates on the next successful pull or push.

Two rows of the Integrations table. The first, Facilities API, has its switch off, a red alert icon and the status Disabled, with an open tooltip reading: The external service rejected the push request. The second, Plant Telemetry, has its switch off, an hourglass icon and the status Pending activation.
A deactivated integration names the reason on its row. A pending one explains what it is waiting for.

Test connection

Test connection on a Custom integration’s actions menu opens a connection with the stored credentials but does not pull or push data. Prebuilt connectors do not offer this action because NEQTO.ai manages their endpoints and credentials. For HTTPS, any response other than 401 or 403 passes the reachability test. Even a 404 passes, although it may mean the URL points to the wrong resource. WSS and MQTTS must complete their protocol handshakes. For an integration with both directions, this initial test uses the pull URL.

After a successful connection test, NEQTO.ai probes the configured endpoint or endpoints with a deliberately invalid version of the credential. This checks whether the selected authentication method changes the response. Other controls, such as custom headers or network access rules, may still protect the service. The test has four possible outcomes:

What you see What it means
Connection successful The endpoint answered, accepted your credential, and refused the wrong one. No action is needed.
Connection successful, with The endpoint credential check could not be completed this time The connection works, but the credential check reached no verdict because the endpoint timed out, returned an error, or responded inconclusively. Try again later if you want a verdict.
The endpoint rejected the stored credential The endpoint is reachable but will not accept what is stored. Update the credentials through Edit credentials and test again.
The endpoint accepted an invalid credential The endpoint accepted the deliberately altered credential. The configured authentication method may not be enforced for this endpoint, although another access control may still apply. See the warning below.
A green notification reading Connection successful.
A clean result: the endpoint accepted the stored credential and rejected the altered one.
Treat an accepted invalid credential as a warning. The test could not show that the configured authentication method protects this endpoint. Check the service’s authentication settings, including any custom headers or network rules, before you rely on the connection.
A red notification reading: The endpoint accepted an invalid credential. The connection works, but this endpoint doesn't appear to verify credentials. Its data may be publicly accessible.
The altered credential was accepted. Check whether another access control protects the endpoint or whether it is publicly accessible.

Edit and delete integrations

Both start from a row’s actions menu. Editing credentials replaces only the secrets you type, and deleting is permanent.

Open a row’s actions menu and choose Edit settings to change its name and description. Edit credentials is available for Custom integrations and replaces only the secret values you enter. Prebuilt connectors keep their provider credentials under platform control.

Edit settings shows Direction only when more than one direction is available. Prebuilt connectors always pull. Custom integrations use the URLs set at creation, which you cannot change in the edit screens. An integration created as Pull & Push has both URLs and can switch between all three directions. One created as Pull or Push keeps that direction.

The Edit settings dialog for Plant Telemetry, with Name, Description, Direction, and Sync interval (minutes) fields and Cancel and Save buttons. A red box surrounds the Direction field, which is set to Pull & Push. Its list is open with three choices, Pull, Push, and Pull & Push, and Pull & Push is checked.
An integration created as Pull & Push has both URLs, so it can switch to any of the three directions.
Deleting an integration is permanent. Deletion stops its pull and auto-push schedules, removes its application links, and removes its links to the Devices created from it. Those Devices and their stored readings remain in NEQTO.ai, but the deleted integration can no longer send them new data. Delete the Devices separately if you no longer need them.

Permissions

Task Required permission
Open the list and view saved proposals View Integrations
Create an integration Create Integrations
Edit, connect, test, change status, or pull a sample Edit Integrations
Open the sample action and confirm a proposal as a Device Edit Integrations and Create Devices
Delete an integration Delete Integrations

NEQTO.ai checks account permissions on the account-level page and application permissions inside an application. A missing permission may hide the control or reject the request.

Example: pull from your own service

Use a service you control when testing the Custom pull flow so you can inspect its response and repeat the request.

  • 1
    Expose one HTTPS URL that returns a single JSON object of current readings. A flat response makes the proposed fields easier to review, although nested fields are supported.
    {
      "meter_id": "MTR-114",
      "power_kw": 8.4,
      "energy_kwh": 15230.7,
      "temperature_c": 41.2
    }
  • 2
    Create the integration: type Custom, protocol HTTPS, direction Pull, that URL, and whichever authentication method your service expects. Then run Test connection to check reachability. A conclusive credential result also confirms whether the endpoint accepts the stored credential and rejects the altered one.
  • 3
    Open Create device(s) from sample, pull a sample, and confirm the proposed fields. That creates the device. Later manual samples use the same endpoint. To pull on a schedule, set a Sync interval in the row’s Edit settings, as explained above.
Looking for weather? Use the Weather connector rather than a custom pull. It needs no API key of yours and creates its device for you.

Troubleshooting

Each message below names what NEQTO.ai could not do and what to change before you try again.

Message Meaning
Failed to pull data from the external service The service could not be reached, timed out, or returned an error status. Check the URL and that the service is up, then pull again.
The external service did not return a JSON object The response was not a single JSON object (for example, plain text, HTML, or a bare array). Point the URL at an endpoint that returns a JSON object.
The external service rejected the integration credentials The service answered with an authentication error (401 or 403). Update the credentials in the integration’s settings.
OAuth connection required. Please connect this integration again. The stored OAuth session can no longer be refreshed (for example, access was revoked at the provider). Choose Connect on the integration’s row and sign in again.
Waiting for ENERGY STAR properties to be shared with the platform account The Portfolio Manager account connection is verified, but it has not shared a property yet. Share the property with the platform account. NEQTO.ai accepts the share automatically and tries again on the next sync.
The provider has not published values for this record yet A prebuilt connector found the source record, but it had no usable metric values. Pull a new sample after the provider publishes data.
No object in the sample had a usable device identifier The identifier field configured in the account’s metadata mapping is missing, blank, or not a string, number, or boolean in the sample. Correct the response or the mapping, then pull a new sample.
A device with this identifier already exists for this account Another Device already owns the proposed external ID. Use the existing Device or change the source identifier. A disabled Device still reserves its external ID until it is permanently deleted.
The external service rejected the push request The service answered a push with an error status other than an authentication error. Check the push URL and the payload format the service expects.
The pull interval is shorter than your plan allows / The auto-push interval is shorter than your plan allows Increase the interval, or contact support about faster cadences.
The MQTT push topic must be a concrete topic without # or + wildcards Replace the wildcard with the exact topic the payload should be published to.
Failed to fetch a PEM certificate from certificateUrl The Certificate URL could not be fetched or did not return a PEM certificate. Check the URL, or paste the CA directly as caPem via Edit credentials.

Limits and security

The caps and network rules that apply to every integration.

Item Limit
Connection security TLS only: HTTPS, WSS, and MQTTS. Plain HTTP, WS, and MQTT are not supported.
Reachable hosts Public hosts only. Private and internal network addresses are blocked.
Connection timeout 15 seconds for HTTPS, WSS, and MQTTS connection work.
Custom pull response Up to 1 MB, and the response must be one JSON object.
Push payload Up to 64 KiB after JSON serialization.
Pull and auto-push intervals Minimum intervals depend on your plan.
Integration count No limit unless your plan has a Device limit. The account and its subaccounts can then create up to that many integrations.
Name and description Name: 100 characters and unique within the account. Description: 500 characters.
Proposed fields Up to 50 fields per Device proposal.
ENERGY STAR properties Up to 200 explicit selections. No selection means all shared properties.
Certificate URL HTTPS only, up to 2,048 characters. The PEM fetch times out after 10 seconds and accepts up to 64 KiB.
Custom headers Enter a JSON object. Only string and numeric values are sent as headers.
Saved credentials Encrypted at rest, write-only, and never returned after saving.