Handle .connect
Tie your LinkedIn, X or Product Hunt account to the Integration it posts through.
- Action class
- None
- Approval
- Runs on its own
- Emits
Handle.connected- Price
- Free
POST https: //api.sb/ {your-domain}/ handles/ connect
Ties your account on a site, such as your LinkedIn or X handle, to the Integration it posts through. The hub’s definition of Handle.connect.
Inputs
| Name | Type | Default | Meaning |
|---|---|---|---|
handle | Handle | Required | The account. |
integration | Integration | Required | The Integration credential. |
Outputs
| Field | Type | What null means |
|---|---|---|
handle | Handle | Never null. |
handle.venue | string | Never null: where the account lives, by id, such as product-hunt. |
handle.name | string | Never null: the name the account shows in public, read from the account itself. |
handle.integration | Integration | Never null once connected; in try mode, the Integration it would bind. |
handle.shared | boolean | Never null: true only for a Studio account sibling startups share. |
Effects
- Action class
None: no approval rule names it, so it runs within its seat’s Permissions and Limits
- Modes
try: Reads who the Integration signs in as and returns your account bound to it; nothing is bound.send: Returns a pending Action while the platform confirms the Integration signs in as your account.do: Waits for that confirmation and returns the bound account.
- Idempotency
Only with a key: the same
Idempotency-Keyand input return the first Action, and the same key with other input returns409. Binding an account to the Integration it already holds returns your account unchanged.- Saved or shared
The account records its Integration, so every Post it publishes counts its reach and replies toward it.
- Emits
Handle.connectedwith{ handle,venue, name, integration } - Performed by
- Price
Free on your own account: the platform charges nothing for the call.
On each Venue
None.
What try does
None.
Refuses when
This call has no refusals of its own. Every call through an account can also meet the shared account refusals: grant-missing, needs-reauth, account-not-connected, over-mandate, quota-reached, venue-rejected.
When it waits
| Fact | Value |
|---|---|
send returns | A pending Action, reason:, while the platform reads the account behind the Integration. |
| Delivered by | Handle.connected |
Example
Make my Product Hunt maker account the Handle the launch posts from.To retry, send the same Idempotency-Key: the retry returns the first answer for $0. A new key reads again.
Test values
A sk_test_ key answers these the same way every time, at $0 (every test value).
| Test value | Always returns | What it is for |
|---|---|---|
int_test_revoked | Refuses with account-not-connected | The Integration reads revoked, so the bind refuses before any call leaves the platform. |
maxCost: | Refuses with max-cost | Any priced call with a maxCost of 0.0001 is refused before it spends: the price is above the cap. |
rate-limited.test | Refuses with rate-limited | Any call naming this hostname answers 429 with Retry-After, so your retry logic runs. |
sources-busy.test | Refuses with sources-busy | Any call naming this hostname answers 503 as if every route were busy, and nothing is spent. |
Used by
- Jobs: Publish and post