Connectors
The Connectors API manages your company's external connectors — Gmail, Outlook, HubSpot, QuickBooks, Acumatica, and more — through a single set of endpoints. Instead of a separate path per integration, you select the connector type in the request body and the platform routes the call to the matching connector utility. Beyond listing and inspection, you can delete, share, and transfer connectors, obtain OAuth authorization URLs to connect or reconnect accounts, create direct-credential connectors, and call family-specific connector actions.
All endpoints are POST requests under the base path https://api.autessa.com/autessa_poweruser/connectors and authenticate with a poweruser key in the Authorization header, formatted as pwrusr:{key_id}:{secret}.
Connector types
Every request selects a connector type with the connectorType field. The value is one of the enum names below, which also determine how the underlying connector authenticates with the external service:
connectorType | Auth type |
|---|---|
QUICKBOOKS | OAUTH |
GMAIL | OAUTH |
GOOGLE_CALENDAR | OAUTH |
GOOGLE_ANALYTICS | OAUTH |
BOX | OAUTH |
LINKEDIN | OAUTH |
TWITTER | OAUTH |
FACEBOOK | OAUTH |
INSTAGRAM | OAUTH |
REDDIT | OAUTH |
THREADS | OAUTH |
ZENDESK | OAUTH |
YOUTUBE | OAUTH |
TIKTOK | OAUTH |
ACUMATICA | OAUTH |
HUBSPOT | OAUTH |
ZOHO_CRM | OAUTH |
OUTLOOK | OAUTH |
OUTLOOK_CALENDAR | OAUTH |
NOTION | OAUTH |
MAILCHIMP | OAUTH_NO_REFRESH |
GHOST | API_KEY |
BEEHIIV | API_KEY |
BLUESKY | USERNAME_PASSWORD |
MEETING_BOT | OAUTH |
AUTESSA_PAYMENTS | OAUTH_NO_REFRESH |
Auth types: OAUTH is standard OAuth2 with access and refresh tokens, OAUTH_NO_REFRESH is OAuth with an access token only (e.g. Mailchimp), API_KEY is a single API key (e.g. Ghost), and USERNAME_PASSWORD is a handle plus app password that authenticates at runtime (e.g. Bluesky).
A connector type is served here as soon as its utility registers with the platform's connector registry. MEETING_BOT and AUTESSA_PAYMENTS do not yet have a registered utility: /all and /get requests for those two types currently fail with a server error, and every other endpoint returns a 422 with errors: ["Connector type MEETING_BOT is not supported via the poweruser API"].
Capabilities by connector family
Every registered connector type supports /all and /get. The management, OAuth, and direct-credential endpoints are opt-in per family:
connectorType | /delete | /share | /get-sharing-details | /transfer-ownership | /connect-url, /reconnect-url | /create | /test-connection |
|---|---|---|---|---|---|---|---|
QUICKBOOKS | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
GMAIL | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
GOOGLE_CALENDAR | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
GOOGLE_ANALYTICS | ✓ | ✓ | — | — | ✓ | — | — |
BOX | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
LINKEDIN | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
TWITTER | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
FACEBOOK | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
INSTAGRAM | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
REDDIT | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
THREADS | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
ZENDESK | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
YOUTUBE | ✓ | — | — | — | ✓ | — | — |
TIKTOK | ✓ | — | — | — | ✓ | — | — |
ACUMATICA | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
HUBSPOT | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
ZOHO_CRM | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
OUTLOOK | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
OUTLOOK_CALENDAR | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
NOTION | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
MAILCHIMP | ✓ | ✓ | ✓ | ✓ | ✓ | — | — |
GHOST | ✓ | ✓ | ✓ | ✓ | — | ✓ | ✓ |
BEEHIIV | ✓ | — | — | — | — | ✓ | ✓ |
BLUESKY | ✓ | ✓ | ✓ | ✓ | — | ✓ | — |
Calling an operation a family does not support returns HTTP 422 with an explanatory message in the body:
{
"errors": [
"Operation 'share' is not supported for connector type TIKTOK."
]
}
Updating an existing connector's configuration (rename, activate/deactivate, rotate an API key) is not available through the Poweruser API — update payloads differ per family, so connector updates remain UI-only in the builder.
List Connectors POST/all
Lists all active connectors of the given type in your company that the calling user can see. Connectors the caller has no access level on are filtered out of the result.
Request Body
- Name
connectorType- Type
- string
- Description
The connector type to list, e.g.
GMAIL. One of the enum values in Connector types. Omitting it returnserrors: ["connectorType is required"].
- Name
connectorId- Type
- string
- Description
Ignored by this endpoint. Only used by
/get.
Response
- Name
connectors- Type
- array<object>
- Description
The visible connectors of the requested type. Each element is a connector object (see below).
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred. Absent on success.
Connector object
Every connector type shares this common set of fields:
- Name
connectorId- Type
- string
- Description
Unique ID of the connector.
- Name
companyId- Type
- string
- Description
The company the connector belongs to.
- Name
ownerId- Type
- string
- Description
The user who owns the connector.
- Name
connectorName- Type
- string
- Description
Display name of the connector.
- Name
ownerType- Type
- string
- Description
The owner type of the connector.
- Name
sharingLevel- Type
- string
- Description
How the connector is shared:
PRIVATE,SPECIFIC_MEMBER, orCOMPANY.
- Name
companyPermissionLevel- Type
- string
- Description
The access level granted company-wide when shared at the
COMPANYlevel:READ,WRITE,PUBLISH, orADMIN.
- Name
isActive- Type
- boolean
- Description
Whether the connector is active.
- Name
createdAt- Type
- string
- Description
When the connector was created (ISO-8601, e.g.
2026-05-04T18:22:10).
- Name
updatedAt- Type
- string
- Description
When the connector was last updated (ISO-8601).
- Name
usersWithAccess- Type
- array<object>
- Description
Users the connector is shared with. Each entry has
userEmail(string),userId(string), andaccessLevel(string).
- Name
currentUserAccessLevel- Type
- string
- Description
The calling user's effective access level on the connector:
READ,WRITE,PUBLISH, orADMIN.
On top of these, each connector type adds its own fields. For example, GMAIL connectors include the connected gmailAccountEmail and the availableLabels on the mailbox, while ACUMATICA connectors include the instance hostUrl, databaseIdentifier, accountEmail, accountName, and tokenExpiresAt.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/connectors/all \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorType": "GMAIL"
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/connectors/all',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': process.env.POWERUSER_KEY
},
body: JSON.stringify({
connectorType: 'GMAIL'
})
}
);
const data = await response.json();
console.log(data.connectors);
import os
import requests
response = requests.post(
"https://api.autessa.com/autessa_poweruser/connectors/all",
headers={"Authorization": os.environ["POWERUSER_KEY"]},
json={"connectorType": "GMAIL"},
)
data = response.json()
print(data["connectors"])
{
"connectors": [
{
"connectorId": "V1StGXR8Z5",
"companyId": "kTn4vB2p9Q",
"ownerId": "aB3xQ9LmZ2",
"connectorName": "Support Inbox",
"ownerType": "USER",
"gmailAccountEmail": "support@example.com",
"sharingLevel": "COMPANY",
"companyPermissionLevel": "READ",
"isActive": true,
"createdAt": "2026-05-04T18:22:10",
"updatedAt": "2026-06-12T09:41:23",
"usersWithAccess": [
{
"userEmail": "ops@example.com",
"userId": "pQ7wY4RdX1",
"accessLevel": "WRITE"
}
],
"currentUserAccessLevel": "ADMIN",
"availableLabels": [
{
"labelId": "Label_12",
"labelName": "Tickets",
"labelType": "user",
"isEnabled": true,
"currentUserAccessLevel": "ADMIN",
"sharingLevel": "COMPANY",
"companyPermissionLevel": "READ"
}
]
}
]
}
Get Connector POST/get
Fetches a single connector by ID. The connector must belong to your company and the calling user must have at least READ access to it; otherwise the response carries an error instead of the connector.
Request Body
- Name
connectorType- Type
- string
- Description
The connector's type, e.g.
ACUMATICA. One of the enum values in Connector types. Omitting it returnserrors: ["connectorType is required"].
- Name
connectorId- Type
- string
- Description
The ID of the connector to fetch. Omitting it returns
errors: ["connectorId is required"].
Response
- Name
connector- Type
- object
- Description
The connector object — the same shape as the elements of
connectorsin List Connectors: the common fields (connectorId,companyId,ownerId,connectorName,ownerType,sharingLevel,companyPermissionLevel,isActive,createdAt,updatedAt,usersWithAccess,currentUserAccessLevel) plus the type-specific fields for the requestedconnectorType.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred (e.g.
"Connector not found"). Absent on success.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/connectors/get \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorType": "ACUMATICA",
"connectorId": "mN8cE5TvW3"
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/connectors/get',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': process.env.POWERUSER_KEY
},
body: JSON.stringify({
connectorType: 'ACUMATICA',
connectorId: 'mN8cE5TvW3'
})
}
);
const data = await response.json();
console.log(data.connector);
import os
import requests
response = requests.post(
"https://api.autessa.com/autessa_poweruser/connectors/get",
headers={"Authorization": os.environ["POWERUSER_KEY"]},
json={
"connectorType": "ACUMATICA",
"connectorId": "mN8cE5TvW3",
},
)
data = response.json()
print(data["connector"])
{
"connector": {
"connectorId": "mN8cE5TvW3",
"companyId": "kTn4vB2p9Q",
"ownerId": "aB3xQ9LmZ2",
"connectorName": "Production ERP",
"ownerType": "USER",
"hostUrl": "https://erp.example.com",
"databaseIdentifier": "CompanyDB",
"accountEmail": "erp-admin@example.com",
"accountName": "ERP Admin",
"sharingLevel": "SPECIFIC_MEMBER",
"companyPermissionLevel": "READ",
"isActive": true,
"tokenExpiresAt": "2026-07-01T12:00:00",
"createdAt": "2026-04-18T14:03:55",
"updatedAt": "2026-06-28T08:17:42",
"usersWithAccess": [
{
"userEmail": "finance@example.com",
"userId": "pQ7wY4RdX1",
"accessLevel": "READ"
}
],
"currentUserAccessLevel": "WRITE"
}
}
Delete Connector POST/delete
Permanently deletes a connector. Supported by every registered connector family. Deletion is enforced server-side: deleting a connector you don't own returns a permission error such as "Access denied: Only the owner can delete this connector".
Request Body
- Name
connectorType- Type
- string
- Description
The connector's type. Omitting it returns a
422witherrors: ["connectorType is required"].
- Name
connectorId- Type
- string
- Description
The connector to delete. Omitting it returns a
422witherrors: ["connectorId is required"].
Response
- Name
message- Type
- string
- Description
Confirmation message, e.g.
"Connector deleted successfully".GOOGLE_ANALYTICSreturns a booleandeletedandACUMATICAa booleansuccessinstead ofmessage.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/connectors/delete \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorType": "GMAIL",
"connectorId": "V1StGXR8Z5"
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/connectors/delete',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': process.env.POWERUSER_KEY
},
body: JSON.stringify({
connectorType: 'GMAIL',
connectorId: 'V1StGXR8Z5'
})
}
);
const data = await response.json();
import os
import requests
response = requests.post(
"https://api.autessa.com/autessa_poweruser/connectors/delete",
headers={"Authorization": os.environ["POWERUSER_KEY"]},
json={
"connectorType": "GMAIL",
"connectorId": "V1StGXR8Z5",
},
)
data = response.json()
{
"message": "Connector deleted successfully"
}
Share Connector POST/share
Sets the connector's sharing level and per-user grants in one call. Requires ADMIN access on the connector. Not supported for BEEHIIV, TIKTOK, and YOUTUBE (returns a 422 — see Capabilities by connector family).
Request Body
- Name
connectorType- Type
- string
- Description
The connector's type.
- Name
connectorId- Type
- string
- Description
The connector to share.
- Name
level- Type
- string
- Description
Sharing level:
PRIVATE,SPECIFIC_MEMBER, orCOMPANY.
- Name
accessLevel- Type
- string
- Description
When
levelisCOMPANY, the access level every company member gets:READ,WRITE,PUBLISH, orADMIN.
- Name
usersToAdd- Type
- array<object>
- Description
Users to grant access. Each entry:
userEmailoruserId(string), plusaccessLevel.
- Name
usersToRemove- Type
- array<object>
- Description
Users whose access to revoke, same entry shape.
Response
- Name
level- Type
- string
- Description
The resulting sharing level.
- Name
accessLevel- Type
- string
- Description
The resulting company-wide access level, when shared with the company.
- Name
usersWithAccess- Type
- array<object>
- Description
The resulting per-user grants (
userEmail,userId,accessLevel).
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
GOOGLE_ANALYTICS and ACUMATICA return the updated connector object instead of the level/accessLevel/usersWithAccess triple.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/connectors/share \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorType": "GMAIL",
"connectorId": "V1StGXR8Z5",
"level": "SPECIFIC_MEMBER",
"usersToAdd": [
{ "userEmail": "ops@example.com", "accessLevel": "WRITE" }
],
"usersToRemove": []
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/connectors/share',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': process.env.POWERUSER_KEY
},
body: JSON.stringify({
connectorType: 'GMAIL',
connectorId: 'V1StGXR8Z5',
level: 'SPECIFIC_MEMBER',
usersToAdd: [
{ userEmail: 'ops@example.com', accessLevel: 'WRITE' }
],
usersToRemove: []
})
}
);
const data = await response.json();
import os
import requests
response = requests.post(
"https://api.autessa.com/autessa_poweruser/connectors/share",
headers={"Authorization": os.environ["POWERUSER_KEY"]},
json={
"connectorType": "GMAIL",
"connectorId": "V1StGXR8Z5",
"level": "SPECIFIC_MEMBER",
"usersToAdd": [
{"userEmail": "ops@example.com", "accessLevel": "WRITE"}
],
"usersToRemove": [],
},
)
data = response.json()
{
"level": "SPECIFIC_MEMBER",
"usersWithAccess": [
{
"userEmail": "ops@example.com",
"userId": "pQ7wY4RdX1",
"accessLevel": "WRITE"
}
]
}
Get Sharing Details POST/get-sharing-details
Returns the connector's current sharing configuration and the calling user's own access level. Not supported for BEEHIIV, GOOGLE_ANALYTICS, TIKTOK, and YOUTUBE (returns a 422).
Request Body
- Name
connectorType- Type
- string
- Description
The connector's type.
- Name
connectorId- Type
- string
- Description
The connector to inspect.
Response
- Name
sharingLevel- Type
- string
- Description
PRIVATE,SPECIFIC_MEMBER, orCOMPANY.
- Name
companyPermissionLevel- Type
- string
- Description
Access level granted company-wide, when
sharingLevelisCOMPANY.
- Name
sharedWith- Type
- array<object>
- Description
Per-user grants:
userEmail,userId,accessLevel.
- Name
userAccessLevel- Type
- string
- Description
The calling user's effective access level.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/connectors/get-sharing-details \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorType": "GMAIL",
"connectorId": "V1StGXR8Z5"
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/connectors/get-sharing-details',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': process.env.POWERUSER_KEY
},
body: JSON.stringify({
connectorType: 'GMAIL',
connectorId: 'V1StGXR8Z5'
})
}
);
const data = await response.json();
import os
import requests
response = requests.post(
"https://api.autessa.com/autessa_poweruser/connectors/get-sharing-details",
headers={"Authorization": os.environ["POWERUSER_KEY"]},
json={
"connectorType": "GMAIL",
"connectorId": "V1StGXR8Z5",
},
)
data = response.json()
{
"sharingLevel": "COMPANY",
"companyPermissionLevel": "READ",
"sharedWith": [],
"userAccessLevel": "ADMIN"
}
Transfer Ownership POST/transfer-ownership
Transfers the connector to another member of the company. Only the current owner may call this, and the new owner must be a member of the company who already has some access to the connector (share it with them first). Not supported for BEEHIIV, GOOGLE_ANALYTICS, TIKTOK, and YOUTUBE (returns a 422).
Request Body
- Name
connectorType- Type
- string
- Description
The connector's type.
- Name
connectorId- Type
- string
- Description
The connector to transfer.
- Name
newOwnerId- Type
- string
- Description
User ID of the new owner. Omitting it returns a
422witherrors: ["newOwnerId is required"]. A user outside the company returns"New owner does not exist", and one without access returns"New owner does not have access to connector yet.".
Response
- Name
message- Type
- string
- Description
Confirmation message.
- Name
newOwnerId- Type
- string
- Description
The user who now owns the connector.
ACUMATICAreturns the updatedconnectorobject instead ofmessage/newOwnerId.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/connectors/transfer-ownership \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorType": "GMAIL",
"connectorId": "V1StGXR8Z5",
"newOwnerId": "uB7nT2wQ9k"
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/connectors/transfer-ownership',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': process.env.POWERUSER_KEY
},
body: JSON.stringify({
connectorType: 'GMAIL',
connectorId: 'V1StGXR8Z5',
newOwnerId: 'uB7nT2wQ9k'
})
}
);
const data = await response.json();
import os
import requests
response = requests.post(
"https://api.autessa.com/autessa_poweruser/connectors/transfer-ownership",
headers={"Authorization": os.environ["POWERUSER_KEY"]},
json={
"connectorType": "GMAIL",
"connectorId": "V1StGXR8Z5",
"newOwnerId": "uB7nT2wQ9k",
},
)
data = response.json()
{
"message": "Ownership transferred successfully",
"newOwnerId": "uB7nT2wQ9k"
}
Get Connect URL POST/connect-url
Returns the external provider's authorization URL to connect a new OAuth connector. Only the URL discovery happens through the API — the OAuth dance itself stays in the browser:
- Call
/connect-urlwith theconnectorType(and any family-specific fields below). - Open the returned
authorizationUrlin a browser — typically by sending it to the user whose account should be connected. - The user signs in and grants consent. The provider redirects to Autessa's OAuth callback, which stores the tokens server-side — there is nothing further for you to call.
- Poll
/allfor the connector type until the new connector appears withisActive: true.
The OAuth state embeds the poweruser key's linked user and company, so the resulting connector is owned by the key's linked user.
Supported by every OAuth family. The direct-credential families (BEEHIIV, GHOST, BLUESKY) return a 422 — use /create for those instead.
Request Body
- Name
connectorType- Type
- string
- Description
The connector type to connect, e.g.
GMAIL.
- Name
connectorName- Type
- string
- Description
Display name for the new connector. Applies to all families.
- Name
subdomain- Type
- string
- Description
ZENDESKonly (required) — the Zendesk subdomain to authorize against.
- Name
hostUrl- Type
- string
- Description
ACUMATICAonly — the Acumatica instance URL.
- Name
databaseIdentifier- Type
- string
- Description
ACUMATICAonly — the tenant/database identifier.
- Name
clientId- Type
- string
- Description
ACUMATICAonly — the OAuth client ID of the connected application registered on the instance.
- Name
clientSecret- Type
- string
- Description
ACUMATICAonly — the OAuth client secret of the connected application.
- Name
loginMethod- Type
- string
- Description
INSTAGRAMonly —FACEBOOK_LOGIN(default) orINSTAGRAM_LOGIN.
Response
- Name
authorizationUrl- Type
- string
- Description
The provider authorization URL to open in a browser.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/connectors/connect-url \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorType": "GMAIL",
"connectorName": "Support Inbox"
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/connectors/connect-url',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': process.env.POWERUSER_KEY
},
body: JSON.stringify({
connectorType: 'GMAIL',
connectorName: 'Support Inbox'
})
}
);
const { authorizationUrl } = await response.json();
// Send authorizationUrl to the user, then poll /all
// until the new connector appears with isActive: true.
import os
import requests
response = requests.post(
"https://api.autessa.com/autessa_poweruser/connectors/connect-url",
headers={"Authorization": os.environ["POWERUSER_KEY"]},
json={
"connectorType": "GMAIL",
"connectorName": "Support Inbox",
},
)
authorization_url = response.json()["authorizationUrl"]
# Send authorization_url to the user, then poll /all
# until the new connector appears with isActive: true.
{
"authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth?client_id=...&state=..."
}
Get Reconnect URL POST/reconnect-url
Returns the provider authorization URL to re-authenticate an existing OAuth connector — for example after the user revoked access, the refresh token expired, or QuickBooks access was revoked with /quickbooks/revoke-access. The flow is the same as /connect-url: open the URL in a browser, let the user re-consent, and the callback completes server-side. Afterwards poll /get with the same connectorId until the connector reports isActive: true.
Supported by every OAuth family; direct-credential families return a 422.
Request Body
- Name
connectorType- Type
- string
- Description
The connector's type.
- Name
connectorId- Type
- string
- Description
The existing connector to re-authenticate. Omitting it returns a
422witherrors: ["connectorId is required"].
Response
- Name
authorizationUrl- Type
- string
- Description
The provider authorization URL to open in a browser.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/connectors/reconnect-url \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorType": "QUICKBOOKS",
"connectorId": "mN8cE5TvW3"
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/connectors/reconnect-url',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': process.env.POWERUSER_KEY
},
body: JSON.stringify({
connectorType: 'QUICKBOOKS',
connectorId: 'mN8cE5TvW3'
})
}
);
const { authorizationUrl } = await response.json();
import os
import requests
response = requests.post(
"https://api.autessa.com/autessa_poweruser/connectors/reconnect-url",
headers={"Authorization": os.environ["POWERUSER_KEY"]},
json={
"connectorType": "QUICKBOOKS",
"connectorId": "mN8cE5TvW3",
},
)
authorization_url = response.json()["authorizationUrl"]
{
"authorizationUrl": "https://appcenter.intuit.com/connect/oauth2?client_id=...&state=..."
}
Create Connector POST/create
Creates a connector directly from credentials — no OAuth dance. Only the direct-credential families support this endpoint; OAuth families return a 422 such as "Operation 'create' is not supported for connector type GMAIL." (use /connect-url for those). Credentials are validated against the external service before the connector is saved — for example, BEEHIIV tests the API key and fetches its publications first.
Per family:
BEEHIIV—connectorName+apiKey.GHOST—connectorName+adminApiKey+apiUrl.BLUESKY—connectorName+handle+appPassword.
Request Body
- Name
connectorType- Type
- string
- Description
BEEHIIV,GHOST, orBLUESKY.
- Name
connectorName- Type
- string
- Description
Display name for the new connector.
- Name
apiKey- Type
- string
- Description
BEEHIIV— the Beehiiv API key.
- Name
adminApiKey- Type
- string
- Description
GHOST— the Ghost Admin API key.
- Name
apiUrl- Type
- string
- Description
GHOST— the Ghost site's API URL.
- Name
handle- Type
- string
- Description
BLUESKY— the Bluesky handle.
- Name
appPassword- Type
- string
- Description
BLUESKY— a Bluesky app password (not the account password).
Response
- Name
connector- Type
- object
- Description
The newly created connector object, in the family's shape (see Connector object).
- Name
message- Type
- string
- Description
Confirmation message.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred (e.g. invalid credentials).
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/connectors/create \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorType": "BEEHIIV",
"connectorName": "Company Newsletter",
"apiKey": "'"$BEEHIIV_API_KEY"'"
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/connectors/create',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': process.env.POWERUSER_KEY
},
body: JSON.stringify({
connectorType: 'BEEHIIV',
connectorName: 'Company Newsletter',
apiKey: process.env.BEEHIIV_API_KEY
})
}
);
const { connector } = await response.json();
import os
import requests
response = requests.post(
"https://api.autessa.com/autessa_poweruser/connectors/create",
headers={"Authorization": os.environ["POWERUSER_KEY"]},
json={
"connectorType": "BEEHIIV",
"connectorName": "Company Newsletter",
"apiKey": os.environ["BEEHIIV_API_KEY"],
},
)
connector = response.json()["connector"]
{
"connector": {
"connectorId": "kZ3mQ9pW2x",
"companyId": "kTn4vB2p9Q",
"ownerId": "aB3xQ9LmZ2",
"connectorName": "Company Newsletter",
"ownerType": "USER",
"publications": [
{
"id": "pub_00000000-0000-0000-0000-000000000000",
"name": "Weekly Digest"
}
],
"sharingLevel": "PRIVATE",
"isActive": true,
"createdAt": "2026-07-01T10:15:00",
"updatedAt": "2026-07-01T10:15:00",
"currentUserAccessLevel": "ADMIN"
},
"message": "Beehiiv connector created successfully"
}
Test Connection POST/test-connection
Tests connectivity with the external service for the direct-credential families. What is tested depends on the family:
BEEHIIV— validates a pre-createapiKeyand returns the publications it can access, so you can test before calling/create.GHOST— tests an existing connector identified byconnectorId.BLUESKY— not supported (422); credentials are validated at create time instead.
OAuth families return a 422 unsupported-operation error.
Request Body
- Name
connectorType- Type
- string
- Description
BEEHIIVorGHOST.
- Name
apiKey- Type
- string
- Description
BEEHIIV— the API key to validate.
- Name
connectorId- Type
- string
- Description
GHOST— the existing connector to test.
Response
- Name
connectionSuccessful- Type
- boolean
- Description
Whether the connection test passed.
- Name
message- Type
- string
- Description
Human-readable result, e.g.
"Connection successful. Found 2 publication(s).".
- Name
publications- Type
- array<object>
- Description
BEEHIIVonly — the publications visible to the API key. Each entry hasidandname.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/connectors/test-connection \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorType": "BEEHIIV",
"apiKey": "'"$BEEHIIV_API_KEY"'"
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/connectors/test-connection',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': process.env.POWERUSER_KEY
},
body: JSON.stringify({
connectorType: 'BEEHIIV',
apiKey: process.env.BEEHIIV_API_KEY
})
}
);
const data = await response.json();
import os
import requests
response = requests.post(
"https://api.autessa.com/autessa_poweruser/connectors/test-connection",
headers={"Authorization": os.environ["POWERUSER_KEY"]},
json={
"connectorType": "BEEHIIV",
"apiKey": os.environ["BEEHIIV_API_KEY"],
},
)
data = response.json()
{
"connectionSuccessful": true,
"message": "Connection successful. Found 2 publication(s).",
"publications": [
{
"id": "pub_00000000-0000-0000-0000-000000000000",
"name": "Weekly Digest"
},
{
"id": "pub_11111111-1111-1111-1111-111111111111",
"name": "Product Updates"
}
]
}
Connector actions
Beyond the uniform surface above, some families expose family-specific actions under https://api.autessa.com/autessa_poweruser/connectors/{family}/.... These are the same operations the builder UI uses, with the same request and response shapes. All are POST requests with a JSON body and the same poweruser authentication; the connectorId must reference a connector of the matching family. No connectorType field is needed — the family is in the path.
Families without an action listed here (LinkedIn, Twitter, HubSpot, and so on) have no family-specific actions; they are fully covered by the endpoints above.
View available Gmail labels POST/gmail/view-available-labels
Lists the labels on the connected Gmail mailbox and whether each one is enabled for use on the platform. Requires at least READ access to the connector.
Request Body
- Name
connectorId- Type
- string
- Description
The Gmail connector to inspect.
Response
- Name
labels- Type
- array<object>
- Description
The mailbox's labels. Each entry has
labelId,labelName,labelType(systemoruser),isEnabled,currentUserAccessLevel,sharingLevel, andcompanyPermissionLevel.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/gmail/view-available-labels \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "connectorId": "V1StGXR8Z5" }'
{
"labels": [
{
"labelId": "Label_12",
"labelName": "Tickets",
"labelType": "user",
"isEnabled": true,
"currentUserAccessLevel": "ADMIN",
"sharingLevel": "COMPANY",
"companyPermissionLevel": "READ"
}
]
}
Update available Gmail labels POST/gmail/update-available-labels
Enables or disables mailbox labels for use on the platform. Requires ADMIN access to the connector.
Request Body
- Name
connectorId- Type
- string
- Description
The Gmail connector to update.
- Name
labelsToEnable- Type
- array<string>
- Description
Label IDs to enable.
- Name
labelsToDisable- Type
- array<string>
- Description
Label IDs to disable.
Response
- Name
message- Type
- string
- Description
Confirmation message, e.g.
"Label settings updated successfully".
- Name
enabledLabels- Type
- array<object>
- Description
The resulting label list, same entry shape as view-available-labels.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/gmail/update-available-labels \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorId": "V1StGXR8Z5",
"labelsToEnable": ["Label_12"],
"labelsToDisable": ["Label_7"]
}'
{
"message": "Label settings updated successfully",
"enabledLabels": [
{
"labelId": "Label_12",
"labelName": "Tickets",
"labelType": "user",
"isEnabled": true,
"currentUserAccessLevel": "ADMIN",
"sharingLevel": "COMPANY",
"companyPermissionLevel": "READ"
}
]
}
View available Box folders POST/box/view-available-folders
Lists the Box folders known to the connector and whether each one is enabled for use on the platform.
Request Body
- Name
connectorId- Type
- string
- Description
The Box connector to inspect.
Response
- Name
folders- Type
- array<object>
- Description
The known folders. Each entry has
folderId,folderName,folderPath,isEnabled,currentUserAccessLevel,sharingLevel, andcompanyPermissionLevel.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/box/view-available-folders \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "connectorId": "V1StGXR8Z5" }'
{
"folders": [
{
"folderId": "184029571230",
"folderName": "Contracts",
"folderPath": "/Legal/Contracts",
"isEnabled": true,
"currentUserAccessLevel": "ADMIN",
"sharingLevel": "COMPANY",
"companyPermissionLevel": "READ"
}
]
}
Update available Box folders POST/box/update-available-folders
Enables or disables Box folders for use on the platform. Requires ADMIN access to the connector.
Request Body
- Name
connectorId- Type
- string
- Description
The Box connector to update.
- Name
foldersToEnable- Type
- array<string>
- Description
Folder IDs to enable.
- Name
foldersToDisable- Type
- array<string>
- Description
Folder IDs to disable.
Response
- Name
folders- Type
- array<object>
- Description
The resulting folder list, same entry shape as view-available-folders.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/box/update-available-folders \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorId": "V1StGXR8Z5",
"foldersToEnable": ["184029571230"],
"foldersToDisable": []
}'
{
"folders": [
{
"folderId": "184029571230",
"folderName": "Contracts",
"folderPath": "/Legal/Contracts",
"isEnabled": true,
"currentUserAccessLevel": "ADMIN",
"sharingLevel": "COMPANY",
"companyPermissionLevel": "READ"
}
]
}
Sync Box folders POST/box/sync-folders
Refreshes the connector's folder list from Box, adding newly discovered folders. Requires ADMIN access to the connector.
Request Body
- Name
connectorId- Type
- string
- Description
The Box connector to sync.
Response
- Name
message- Type
- string
- Description
Confirmation message.
- Name
foldersAdded- Type
- integer
- Description
How many new folders the sync discovered.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/box/sync-folders \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "connectorId": "V1StGXR8Z5" }'
{
"message": "Folders synced successfully",
"foldersAdded": 3
}
View available Google calendars POST/google-calendar/view-available-calendars
Lists the calendars on the connected Google account and whether each one is enabled for use on the platform.
Request Body
- Name
connectorId- Type
- string
- Description
The Google Calendar connector to inspect.
Response
- Name
calendars- Type
- array<object>
- Description
The account's calendars. Each entry has
calendarId,calendarName,isEnabled,timezone,currentUserAccessLevel,sharingLevel, andcompanyPermissionLevel.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/google-calendar/view-available-calendars \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "connectorId": "V1StGXR8Z5" }'
{
"calendars": [
{
"calendarId": "team@example.com",
"calendarName": "Team Calendar",
"isEnabled": true,
"timezone": "America/Los_Angeles",
"currentUserAccessLevel": "ADMIN",
"sharingLevel": "COMPANY",
"companyPermissionLevel": "READ"
}
]
}
Update available Google calendars POST/google-calendar/update-available-calendars
Enables or disables calendars for use on the platform. Requires ADMIN access to the connector.
Request Body
- Name
connectorId- Type
- string
- Description
The Google Calendar connector to update.
- Name
calendarsToEnable- Type
- array<string>
- Description
Calendar IDs to enable.
- Name
calendarsToDisable- Type
- array<string>
- Description
Calendar IDs to disable.
Response
- Name
message- Type
- string
- Description
Confirmation message.
- Name
enabledCalendars- Type
- array<object>
- Description
The resulting calendar list, same entry shape as view-available-calendars.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/google-calendar/update-available-calendars \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorId": "V1StGXR8Z5",
"calendarsToEnable": ["team@example.com"],
"calendarsToDisable": []
}'
{
"message": "Calendar settings updated successfully",
"enabledCalendars": [
{
"calendarId": "team@example.com",
"calendarName": "Team Calendar",
"isEnabled": true,
"timezone": "America/Los_Angeles",
"currentUserAccessLevel": "ADMIN",
"sharingLevel": "COMPANY",
"companyPermissionLevel": "READ"
}
]
}
Sync Google calendars POST/google-calendar/sync-calendars
Forces a re-sync of the calendar list from Google, bypassing the platform's sync throttling. Requires WRITE, PUBLISH, or ADMIN access to the connector.
Request Body
- Name
connectorId- Type
- string
- Description
The Google Calendar connector to sync.
Response
- Name
message- Type
- string
- Description
Confirmation message.
- Name
syncPerformed- Type
- boolean
- Description
Whether a sync was actually performed.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/google-calendar/sync-calendars \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "connectorId": "V1StGXR8Z5" }'
{
"message": "Calendars synced successfully",
"syncPerformed": true
}
List Outlook folders POST/outlook/list-folders
Lists the mail folders on the connected Outlook mailbox.
Request Body
- Name
connectorId- Type
- string
- Description
The Outlook connector to inspect.
Response
- Name
folders- Type
- array<object>
- Description
The mailbox's folders. Each entry has
folderIdanddisplayName.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/outlook/list-folders \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "connectorId": "V1StGXR8Z5" }'
{
"folders": [
{
"folderId": "AAMkAGI2T...",
"displayName": "Inbox"
},
{
"folderId": "AAMkAGI2U...",
"displayName": "Invoices"
}
]
}
List Outlook calendars POST/outlook-calendar/list-calendars
Lists the calendars on the connected Outlook account.
Request Body
- Name
connectorId- Type
- string
- Description
The Outlook Calendar connector to inspect.
Response
- Name
calendars- Type
- array<object>
- Description
The account's calendars. Each entry has
calendarId,name,isDefaultCalendar, andcanEdit.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/outlook-calendar/list-calendars \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "connectorId": "V1StGXR8Z5" }'
{
"calendars": [
{
"calendarId": "AQMkAGI2T...",
"name": "Calendar",
"isDefaultCalendar": true,
"canEdit": true
}
]
}
List BigQuery projects POST/google-analytics/bigquery/projects
Lists the BigQuery projects visible to the connected Google Analytics account. Requires at least READ access to the connector. Use this with datasets and tables to discover where GA4 exports live.
Request Body
- Name
connectorId- Type
- string
- Description
The Google Analytics connector to query.
Response
- Name
projects- Type
- array<object>
- Description
The visible projects. Each entry has
projectId,friendlyName, andnumericId.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/google-analytics/bigquery/projects \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "connectorId": "V1StGXR8Z5" }'
{
"projects": [
{
"projectId": "acme-analytics",
"friendlyName": "Acme Analytics",
"numericId": "123456789012"
}
]
}
List BigQuery datasets POST/google-analytics/bigquery/datasets
Lists the datasets in a BigQuery project.
Request Body
- Name
connectorId- Type
- string
- Description
The Google Analytics connector to query.
- Name
projectId- Type
- string
- Description
The BigQuery project ID, from projects.
Response
- Name
datasets- Type
- array<object>
- Description
The project's datasets. Each entry has
datasetId,friendlyName, andlocation.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/google-analytics/bigquery/datasets \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorId": "V1StGXR8Z5",
"projectId": "acme-analytics"
}'
{
"datasets": [
{
"datasetId": "analytics_987654321",
"friendlyName": "GA4 Export",
"location": "US"
}
]
}
List BigQuery tables POST/google-analytics/bigquery/tables
Lists the tables in a BigQuery dataset.
Request Body
- Name
connectorId- Type
- string
- Description
The Google Analytics connector to query.
- Name
projectId- Type
- string
- Description
The BigQuery project ID.
- Name
datasetId- Type
- string
- Description
The dataset ID, from datasets.
Response
- Name
tables- Type
- array<object>
- Description
The dataset's tables. Each entry has
tableId,friendlyName, andtype.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/google-analytics/bigquery/tables \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorId": "V1StGXR8Z5",
"projectId": "acme-analytics",
"datasetId": "analytics_987654321"
}'
{
"tables": [
{
"tableId": "events_20260630",
"friendlyName": "events_20260630",
"type": "TABLE"
}
]
}
Look up Notion pages POST/notion/lookup/pages
Searches the connected Notion workspace for pages matching a query. Requires at least READ access to the connector.
Request Body
- Name
connectorId- Type
- string
- Description
The Notion connector to search with.
- Name
query- Type
- string
- Description
Search text. Matches page titles in the workspace.
Response
- Name
pages- Type
- array<object>
- Description
Matching pages. Each entry has
id,title,parentType, andlastEditedTime.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/notion/lookup/pages \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorId": "V1StGXR8Z5",
"query": "onboarding"
}'
{
"pages": [
{
"id": "a1b2c3d4-0000-0000-0000-000000000000",
"title": "Customer Onboarding Checklist",
"parentType": "workspace",
"lastEditedTime": "2026-06-29T14:12:00.000Z"
}
]
}
Look up Notion databases POST/notion/lookup/databases
Searches the connected Notion workspace for databases matching a query.
Request Body
- Name
connectorId- Type
- string
- Description
The Notion connector to search with.
- Name
query- Type
- string
- Description
Search text. Matches database titles in the workspace.
Response
- Name
databases- Type
- array<object>
- Description
Matching databases. Each entry has
id,title, andlastEditedTime.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/notion/lookup/databases \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorId": "V1StGXR8Z5",
"query": "tasks"
}'
{
"databases": [
{
"id": "b2c3d4e5-0000-0000-0000-000000000000",
"title": "Engineering Tasks",
"lastEditedTime": "2026-06-30T09:03:00.000Z"
}
]
}
Look up a Notion database schema POST/notion/lookup/database-schema
Returns the property schema of a Notion database, so you can construct valid property payloads for tools that write to it.
Request Body
- Name
connectorId- Type
- string
- Description
The Notion connector to use.
- Name
databaseId- Type
- string
- Description
The Notion database ID, from lookup/databases.
Response
- Name
databaseId- Type
- string
- Description
The database's ID.
- Name
title- Type
- string
- Description
The database's title.
- Name
properties- Type
- array<object>
- Description
The database's properties. Each entry has
name,type, and — for select-like types — the availableoptions.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/notion/lookup/database-schema \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"connectorId": "V1StGXR8Z5",
"databaseId": "b2c3d4e5-0000-0000-0000-000000000000"
}'
{
"databaseId": "b2c3d4e5-0000-0000-0000-000000000000",
"title": "Engineering Tasks",
"properties": [
{
"name": "Status",
"type": "select",
"options": ["Todo", "In Progress", "Done"]
},
{
"name": "Title",
"type": "title"
}
]
}
List Acumatica API versions POST/acumatica/api-versions
Lists the contract-based REST API versions available on the connected Acumatica instance.
Request Body
- Name
connectorId- Type
- string
- Description
The Acumatica connector to query.
Response
- Name
apiVersions- Type
- array<string>
- Description
The available API version identifiers.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/acumatica/api-versions \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "connectorId": "mN8cE5TvW3" }'
{
"apiVersions": ["24.200.001", "23.200.001"]
}
Revoke QuickBooks access POST/quickbooks/revoke-access
Revokes the connector's OAuth grant with Intuit and clears the stored tokens. The connector record remains, but it cannot reach QuickBooks again until it is re-authenticated via /reconnect-url. Requires ADMIN access to the connector.
Request Body
- Name
connectorId- Type
- string
- Description
The QuickBooks connector whose access to revoke.
Response
- Name
message- Type
- string
- Description
Confirmation message, e.g.
"QuickBooks access revoked successfully".
- Name
connector- Type
- object
- Description
The updated QuickBooks connector object.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/connectors/quickbooks/revoke-access \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "connectorId": "mN8cE5TvW3" }'
{
"message": "QuickBooks access revoked successfully",
"connector": {
"connectorId": "mN8cE5TvW3",
"companyId": "kTn4vB2p9Q",
"ownerId": "aB3xQ9LmZ2",
"connectorName": "Main QuickBooks",
"realmId": "9341453907xxxx",
"qbCompanyName": "Acme Corp",
"accountEmail": "finance@example.com",
"isSandbox": false,
"paymentsEnabled": true,
"isActive": true,
"sharingLevel": "COMPANY",
"companyPermissionLevel": "READ",
"userAccessLevel": "ADMIN",
"isOwner": true,
"createdAt": "2026-03-11T16:40:02",
"updatedAt": "2026-07-01T08:12:45",
"sharedWith": []
}
}
Errors
Failed requests return an errors array of human-readable messages in the response body:
- A missing or invalid poweruser key returns
401 Unauthorized. - The management endpoints (
/delete,/share,/get-sharing-details,/transfer-ownership,/connect-url,/reconnect-url,/create,/test-connection) validate the request with HTTP422: omittingconnectorTypereturnserrors: ["connectorType is required"], omitting a requiredconnectorIdreturnserrors: ["connectorId is required"], and omittingnewOwnerIdon/transfer-ownershipreturnserrors: ["newOwnerId is required"]. On/alland/getthe same missing-field messages are returned without the422status. - Requesting a
connectorTypewith no registered utility (currentlyMEETING_BOTandAUTESSA_PAYMENTS) returns a422witherrors: ["Connector type MEETING_BOT is not supported via the poweruser API"]on the management endpoints, and fails with a server error on/alland/get. - Calling an operation the connector family does not support (see Capabilities by connector family) returns a
422with a message such as"Operation 'share' is not supported for connector type TIKTOK.". - Requesting a connector that doesn't exist in your company returns
errors: ["Connector not found"]. - Operating on a connector without the required access returns a permission error: reads require
READ(e.g."User does not have permission to view this connector."),/share, label/folder/calendar updates,/box/sync-folders, and/quickbooks/revoke-accessrequireADMIN(e.g."User does not have permission to share connector."),/google-calendar/sync-calendarsrequiresWRITEor higher, and/deleteand/transfer-ownershipare restricted to the connector's owner (e.g."Access denied: Only the owner can delete this connector"). /transfer-ownershipalso validates the new owner:"New owner does not exist"if they aren't a member of the company, and"New owner does not have access to connector yet."if the connector hasn't been shared with them.