Skip to content

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

NameTypeDefaultMeaning
handleHandleRequiredThe account.
integrationIntegrationRequiredThe Integration credential.

Outputs

FieldTypeWhat null means
handleHandleNever null.
handle.venuestringNever null: where the account lives, by id, such as product-hunt.
handle.namestringNever null: the name the account shows in public, read from the account itself.
handle.integrationIntegrationNever null once connected; in try mode, the Integration it would bind.
handle.sharedbooleanNever 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-Key and input return the first Action, and the same key with other input returns 409. 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.connected with { handle, venue, name, integration }

Performed by

Content lead

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

FactValue
send returnsA pending Action, reason: 'awaitingSource', while the platform reads the account behind the Integration.
Delivered byHandle.connected

Example

Text
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 valueAlways returnsWhat it is for
int_test_revokedRefuses with account-not-connectedThe Integration reads revoked, so the bind refuses before any call leaves the platform.
maxCost: 0.0001Refuses with max-costAny priced call with a maxCost of 0.0001 is refused before it spends: the price is above the cap.
rate-limited.testRefuses with rate-limitedAny call naming this hostname answers 429 with Retry-After, so your retry logic runs.
sources-busy.testRefuses with sources-busyAny call naming this hostname answers 503 as if every route were busy, and nothing is spent.

Used by