| Identities | Create, get, list, update (rename, metadata, contact-rule filter modes mailFilterMode / phoneFilterMode / imessageFilterMode), refresh, delete |
| Channel management | Create mailboxes with identities; provision, assign, and unlink phone numbers |
| Agent self-signup | Static Inkbox.signup / verifySignup / resendSignupVerification / getSignupStatus — claim flow and restrictions |
| Email — send | Text, HTML, CC/BCC, base64 attachments, threaded replies via inReplyToMessageId |
| Email — read | Paginated iterEmails / iterUnreadEmails, filter by direction, fetch full threads oldest-first, mark read |
| Email — threads | Thread folders (inbox / spam / archive / blocked), per-thread folder updates, folder listing |
| Email — signatures | Configure a custom signature per mailbox with mailboxes.update; save HTML and text, clear content, and toggle automatic insertion on paid plans |
| Mailbox imports | inkbox.mailboxes.imports create / direct upload / start / get / list / wait / cancel for MBOX, EML, and ZIP archives; refreshUploadTarget, five-second default polling with onPoll, terminal job results, non-cancelling timeouts, counters, and Message.importJobId provenance |
| Phone calls | Place outbound calls with client WebSocket audio, list history, transcript segments per party |
| Text messages (SMS/MMS) | Send 1:1 SMS/MMS and beta group MMS (identity.sendText({ to? | conversationId?, text?, mediaUrls? })), list and filter, single message with MMS media, conversation summaries with includeGroups and latestHasMedia, per-conversation messages by UUID or 1:1 remote key, mark read, admin search / update / delete. Some carriers may reject group chats or MMS from 10DLC numbers |
| iMessage | Send 1:1 messages or dedicated-line groups with identity.sendIMessage({ to: [...] }), reply or retry failed creation by conversationId, and opt groups into message/conversation lists with includeGroups: true. Claim lines with the type-less inkbox.imessages.claimNumber({ idempotencyKey }) API or claimIMessageNumber: true during identity creation and updates. IMessageGroupCreationStatus and groupCreationStatus expose creating, not_created, or ready; failed attempts stay in the same conversation. sendStyle works on group creation and replies and can accompany media. Existing message-ID reaction methods support inbound group messages, with nullable reaction assignmentId. Group read receipts and typing are not supported |
| Vault — secrets | Initialize with client-side encryption, unlock, CRUD all payload types (login, api_key, key_pair, ssh_key, other), metadata-only listing without unlock |
| Vault — identity-scoped | identity.getCredentials() with typed per-type accessors (getLogin, getApiKey, getSshKey, getKeyPair), filtered by access rules |
| TOTP | Store inside LoginPayload.totp, parse otpauth:// URIs, generate codes client-side, set / remove on existing logins |
| Mailboxes (admin) | List, get, and search. Manage mailbox names and lifecycle through the identity. The per-mailbox filterMode update is deprecated; set mailFilterMode on the identity instead |
| Phone numbers (admin) | Provision local numbers (with optional state), update incoming-call action (hosted_agent / webhook / auto_accept / auto_reject / forward), transcript search, release |
| Contact rules | Identity-keyed email/domain and shared SMS/calls/iMessage lists, with nullable caller-authorized contact cards. Mutations require admin credentials; agent keys can read permitted rules. Phone rule setup does not require a dedicated number |
| Contacts | contacts.access.get/update separates group visibility from per-address communication. Atomic creation accepts nested access choices; boolean contacts.permissions and advanced contacts.communicationPolicy methods remain supported. listManagementForIdentity includes hidden contacts, optional access settings, and communication coverage |
| Notes | CRUD free-form notes, list and filter, per-identity access grants (no wildcard) |
| Whoami | Inspect caller’s auth type (API key vs Inkbox Console user session), organization ID, API-key subtype constants for admin vs agent-scoped branching |
| Webhooks | Per-identity signing keys, typed event payloads, and HMAC verification. Contact enrichment requires Profile access; Memories can further hide memory text. See webhooks |
| Error handling | InkboxAPIError with status code and structured detail; narrower DuplicateContactRuleError subclass |
| Tunnels | connect(inkbox, { name: "my-agent", forwardTo: "http://127.0.0.1:8000" }) from @inkbox/sdk/tunnels/connect for a public my-agent.inkboxwire.com URL; URL forwarding or Fetch-API + WebSocket handlers; edge vs passthrough TLS. Manage tunnels with list / get / update, plus connect() and signCsr() for passthrough; tunnel creation and deletion happen through the identity. Node ≥ 22, POSIX-only runtime. |