quickAdd
# quickAdd
POST
/quick-add
const url = 'http://localhost:8080/api/v1/quick-add';const options = { method: 'POST', headers: { cookie: 'hs_session=<hs_session>', 'Idempotency-Key': 'example', 'Content-Type': 'application/json' }, body: '{"entries":[{"platform":"instagram","handle":"example","platformUserId":"example","profileUrl":"https://example.com","displayName":"example","avatarUrl":"https://example.com","person":{"id":"per_01j9x3k8m2q4r5s6t7v8w9y0z1"},"circleIds":["per_01j9x3k8m2q4r5s6t7v8w9y0z1"]}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://localhost:8080/api/v1/quick-add \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: example' \ --cookie hs_session=<hs_session> \ --data '{ "entries": [ { "platform": "instagram", "handle": "example", "platformUserId": "example", "profileUrl": "https://example.com", "displayName": "example", "avatarUrl": "https://example.com", "person": { "id": "per_01j9x3k8m2q4r5s6t7v8w9y0z1" }, "circleIds": [ "per_01j9x3k8m2q4r5s6t7v8w9y0z1" ] } ] }'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Idempotency-Key
required
string
Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
entries
required
Array<object>
object
platform
required
string
handle
required
string
platformUserId
string
profileUrl
string format: uri
displayName
string
avatarUrl
string format: uri
person
required
One of:
object
id
required
string
object
new
required
object
displayName
required
string
relationLabel
string
kind
string
closeness
1 = closest. Weights the feed and hearth picks.
integer
notes
string
circleIds
Array<string>
Attach to the person created by an earlier entry in this request (index).
object
sameAsEntry
required
integer
circleIds
Array<string>
Responses
Section titled “Responses”People and accounts created or attached. Atomic.
Media typeapplication/json
object
people
required
Array
object
id
required
string
displayName
required
string
relationLabel
string | null
kind
required
string
closeness
required
1 = closest. Weights the feed and hearth picks.
integer
avatar
accounts
required
Array
object
id
required
string
platform
required
string
handle
required
string
displayName
string | null
profileUrl
required
string format: uri
deepLinks
required
Client picks app link on mobile when installed, else web.
object
web
required
string format: uri
ios
string
android
string
copyValue
Value to copy when no link exists (e.g. WeChat ID).
string
hintKey
I18n key with instructions, e.g. “platformWechatOpenHint”.
string
personId
required
string
platformUserId
string | null
avatar
fetchTier
required
string
status
required
string
statusDetailKey
string | null
fetchIntervalS
integer | null
createdAt
required
string format: date-time
circleIds
required
Array<string>
notes
string | null
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
createdPeople
required
integer
createdAccounts
required
integer
skipped
required
Array<object>
object
index
required
integer
code
required
string
existingAccountId
string
Examples
Exampleseed
Derived from fixtures/seed.json.
{ "createdAccounts": 2, "createdPeople": 1, "people": [ { "accounts": [ { "avatar": null, "createdAt": "2026-09-17T09:00:00.000Z", "deepLinks": { "android": "https://x.com/nok_travels", "ios": "https://x.com/nok_travels", "web": "https://x.com/nok_travels" }, "displayName": null, "fetchIntervalS": 10800, "fetchTier": "agent", "handle": "nok_travels", "id": "acc_01j9a1b2c3d4e5f6g7h8j9k00b", "lastSuccessAt": null, "nextFetchAt": null, "personId": "per_01j9a1b2c3d4e5f6g7h8j9k00a", "platform": "x", "platformUserId": null, "profileUrl": "https://x.com/nok_travels", "status": "pending", "statusDetailKey": null }, { "avatar": null, "createdAt": "2026-09-17T09:00:00.000Z", "deepLinks": { "android": "https://bsky.app/profile/nok.bsky.social", "ios": "https://bsky.app/profile/nok.bsky.social", "web": "https://bsky.app/profile/nok.bsky.social" }, "displayName": null, "fetchIntervalS": 3600, "fetchTier": "server", "handle": "nok.bsky.social", "id": "acc_01j9a1b2c3d4e5f6g7h8j9k00c", "lastSuccessAt": null, "nextFetchAt": null, "personId": "per_01j9a1b2c3d4e5f6g7h8j9k00a", "platform": "bluesky", "platformUserId": null, "profileUrl": "https://bsky.app/profile/nok.bsky.social", "status": "pending", "statusDetailKey": null } ], "avatar": null, "circleIds": [ "cir_01j9ebw22bbvzap1dk44j2y9eh" ], "closeness": 2, "createdAt": "2026-10-17T09:00:00.000Z", "deletedAt": null, "displayName": "Nok", "id": "per_01j9a1b2c3d4e5f6g7h8j9k00a", "kind": "friend", "lastVisitedAt": null, "latestMomentAt": null, "notes": null, "relationLabel": null, "snoozedUntil": null, "updatedAt": "2026-10-17T09:00:00.000Z" }, { "accounts": [ { "avatar": null, "createdAt": "2026-09-17T09:00:00.000Z", "deepLinks": { "android": "https://www.instagram.com/_u/lin.cooks/", "ios": "instagram://user?username=lin.cooks", "web": "https://www.instagram.com/lin.cooks/" }, "displayName": null, "fetchIntervalS": 10800, "fetchTier": "agent", "handle": "lin.cooks", "id": "acc_01j9te0skfktnnmw6zvew46azb", "lastSuccessAt": "2026-10-17T08:00:00.000Z", "nextFetchAt": null, "personId": "per_01j9f8r1agkh6g3jp30xcwnytc", "platform": "instagram", "platformUserId": null, "profileUrl": "https://www.instagram.com/lin.cooks/", "status": "ok", "statusDetailKey": null } ], "avatar": null, "circleIds": [ "cir_01j9kaptqa5dcqne4nmnrbp86d" ], "closeness": 2, "createdAt": "2026-09-17T09:00:00.000Z", "deletedAt": null, "displayName": "Lin", "id": "per_01j9f8r1agkh6g3jp30xcwnytc", "kind": "family", "lastVisitedAt": null, "latestMomentAt": "2026-10-17T06:00:00.000Z", "notes": null, "relationLabel": "Cousin", "snoozedUntil": null, "updatedAt": "2026-09-17T09:00:00.000Z" } ], "skipped": [ { "code": "already_exists", "existingAccountId": "acc_01j9te0skfktnnmw6zvew46azb", "index": 1 } ]}Invalid request.
Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
code
required
string
i18nKey
string
detail
string
fields
Array<object>
object
path
required
string
code
required
string
i18nKey
string
Example generated
{ "type": "https://example.com", "title": "example", "status": 1, "code": "example", "i18nKey": "example", "detail": "example", "fields": [ { "path": "example", "code": "example", "i18nKey": "example" } ]}Conflicts with current state.
Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
code
required
string
i18nKey
string
detail
string
fields
Array<object>
object
path
required
string
code
required
string
i18nKey
string
Example generated
{ "type": "https://example.com", "title": "example", "status": 1, "code": "example", "i18nKey": "example", "detail": "example", "fields": [ { "path": "example", "code": "example", "i18nKey": "example" } ]}