Skip to content

Authentication

Create named API keys in Settings > Connections > API keys. Select only the scopes required by the integration. The raw key is displayed once, so store it in a secret manager when it is created.

Use the key as a bearer token:

Terminal window
curl https://portal.heyx.app/public-api/publicapi.v1.Workspace/Me \
-H "Authorization: Bearer <your-workspace-api-key>" \
-H "Content-Type: application/json" \
-d '{}'

You can also send X-API-Key, but Authorization: Bearer is preferred.

Scopes have the same exact meaning for public Connect endpoints and Workspace MCP tools. Operations that list more than one scope require all of them.

ScopeOperations
me:readMe
portfolio:readGetPortfolio
portfolio:createCreatePortfolio
portfolio_datafield:writePatchPortfolioDataFields
portfolio_file:createCreate and complete document or photo uploads
portfolio_file:readList and download-link document or photo records; also required when creating a comment with attachments
portfolio_comment:createCreatePortfolioComment
portfolio_event:createCreatePortfolioEvent
datafield:readListDataFields
correspondence:createAddCorrespondenceMessage
advanced_task:readListAdvancedTaskInstances
advanced_task:updateUpdateAdvancedTaskInstance
problem:readListProblems
problem:createCreateProblem
problem:updateUpdateProblem
work_order:readListWorkOrders
work_order:createCreateWorkOrder
work_order:updateUpdateWorkOrder
catalog:readListProducts, ListDiscounts
quote:readGetQuote, ListQuotes
quote:createCreateQuote
quote:confirmConfirmQuote
order:readGetOrder, ListOrders
payment:readGetPayment, ListPayments
payment:createCreatePayment
payment:updateRecordManualPayment
invoice:createCreateInvoice
appointment:createCreateAppointment
action_request:createCreateManualActionRequest
member:readListMembers
member_roles:updateReplaceMemberRoles
role:readListRoles
team:readListTeams
team:createCreateTeam
member:inviteEmailMemberInvitation
member_invite_link:createCreateInviteLink

API keys are creator-bound. Requests use the creating account’s current workspace membership, resource authorization, and delegation rights in addition to the key scopes. A scope cannot grant access the creator does not have.

Create separate named keys for separate clients or duties so each can be expired, restricted, or revoked independently.

API keys can be restricted to specific IP addresses or CIDR ranges. If a key has no allowed CIDRs, it can be used from any IP.

If HeyX cannot start processing a request within 30 seconds, it returns a retryable timeout response. If processing has already started but the HTTP request times out, the operation may still continue in the background. Never assume a timeout cancelled a mutation, and do not blindly retry non-idempotent operations.