OmniStream Docs
  • Dokumentasi
  • Developer
  • API Reference
Information
Auth
    Login with email and passwordpostRequest a password-reset code (agent)postSet a new password with a reset code (agent)postGet current agent profilegetLogout (clears cookie)postAdvertise available SSO login methodsgetBegin Google SSO logingetGoogle SSO callback (OIDC redirect URI)getDiscover company SSO availability for an emailpostBegin company SSO login (ticket from /discover)getCompany SSO callback (OIDC redirect URI)getBegin a passkey (WebAuthn) login ceremonypostComplete a passkey loginpostBegin passkey registration for the current agentpostComplete passkey registrationpostList the current agent's passkeysgetDelete one of the current agent's passkeysdeleteList company SSO providersgetCreate a company SSO providerpostUpdate a company SSO providerputDelete a company SSO providerdeleteIssue a fresh JWT for the current sessiongetRegister a new tenant organizationpost
Conversations
    List conversationsgetGet a single conversationgetAssign or unassign an agentpatchAdd an assignee (human agent or AI agent) to a conversationpostRemove an assignee (human agent or AI agent) from a conversationdeleteUpdate conversation statuspatchMark conversation as readpostExpire stale conversationspostUpdate conversation tagspatchTakeover a conversationpostBulk conversation actionspost
Messages
    List messages in a conversationgetSend an outbound messagepostSend a WhatsApp template message in one callpostSearch messages across conversationsget
Contacts
    List contactsgetImport contacts from a CSV filepostPreview a CSV before importing (wizard step 1)postImport contacts from CSV with explicit column mapping (wizard step 2)postGet a contact by IDgetUpdate a contactpatchList conversations for a contactget
Outgoing Webhooks
    List outgoing webhooksgetCreate an outgoing webhookpostList available webhook event typesgetAggregated delivery statisticsgetBulk-replay deliveries by idpostReplay all dead-lettered deliveriespostReplay a single deliverypostDelete an outgoing webhookdeleteUpdate an outgoing webhookpatchList deliveries for a webhookgetSend a test event to the webhookpostStart a signing-secret rotationpostComplete a pending secret rotationpostCancel a pending secret rotationpost
WA Templates
    List WhatsApp message templatesgetCreate a WhatsApp message templatepostSync templates from MetapostGet a WhatsApp template by IDgetEdit a template (status-aware; re-submits to Meta)putDelete a WhatsApp template (Meta-first)deleteBulk-send an approved template to a list of contactspostUpdate template header media URLpatch
Schemas
OmniStream CRM API

OmniStream CRM API

Omnichannel CRM platform REST API. Centralizes WhatsApp, Instagram DM, and Email into a unified inbox with real-time messaging, agent management, analytics, and contact tracking.

Authentication

Semua endpoint memerlukan autentikasi menggunakan API Key melalui header X-API-Key.

Code
X-API-Key: os_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Buat API key melalui menu Developer > API Keys di aplikasi, atau via endpoint POST /api/api-keys (memerlukan login sebagai supervisor/admin). Key lama dengan format omni_... tetap diterima dan diarahkan ke tenant default.

Catatan: key berformat os_00000000_... yang dibuat oleh tenant non-default sebelum perbaikan multi-tenant tidak pernah valid dan tetap tidak valid setelah perbaikan — buat ulang key dari menu Developer > API Keys.

RBAC dan Izin

Platform menggunakan RBAC berbasis izin. Tiga role sistem bawaan tersedia (admin, supervisor, agent) dengan hak akses tetap. Admin dapat membuat role kustom dengan kombinasi izin yang fleksibel. Izin diperiksa per-endpoint menggunakan kode seperti agents.manage, campaigns.manage, dan developer.access.

Error Responses

All errors return a consistent JSON format:

Code
{ "error": { "message": "description", "code": 401 } }
Tags
Auth
Authentication (login, logout, session)
Conversations
Conversation management
Messages
Message retrieval and sending
Contacts
Contact management
Outgoing Webhooks
Outgoing webhook management (supervisor/admin only). Delivery is at-least-once: events are captured durably (Redis stream) and retried with exponential backoff, so the same event may be POSTed more than once (e.g. after a transient receiver/network failure or a dispatcher restart). Receivers must be idempotent — deduplicate on the event's natural identifiers in the JSON body (timestamp plus the relevant id under data, e.g. data.message.id / data.conversation_id) together with the X-Omnistream-Event header, and verify the X-Omnistream-Signature HMAC. Do not assume exactly-once. Deliveries that exhaust all retry attempts (default 8, capped exponential backoff) move to a dead-letter queue (status = dead_letter) and can be replayed. During a secret-rotation overlap window each delivery carries two signatures — X-Omnistream-Signature (new secret) and X-Omnistream-Signature-Previous (old secret); accept the delivery if EITHER header matches the secret you have stored. Full runbook: docs/webhook-reliability.md.
WA Templates
WhatsApp message template management
Schemas
ErrorResponseLoginRequestLoginResponseAgentPublicAgentRoleSsoOptionsSsoDiscoverRequestSsoDiscoverResponsePasskeyChallengePasskeyPublicSsoProviderPublicCreateSsoProviderRequestUpdateSsoProviderRequestConversationStatusConversationWithContactAssigneeAssignAgentRequestAddAssigneeRequestUpdateStatusRequestMessageTypeMessageDirectionMessageStatusMessageReactionMessageMessageListResponseMessageSearchResultMessageSearchResponseSendMessageRequestContactContactListResponseUpdateContactCreateAgentUpdateAgentUpdateAgentStatusRequestConversationNoteNoteResponseCreateNoteUpdateNoteQuickReplyCreateQuickReplyUpdateQuickReplyOverviewResponseDayCountTrendsResponseAgentMetricAgentMetricsResponseChannelMetricChannelMetricsResponseHealthResponseMediaUploadResponseDivisionDivisionWithCountCreateDivisionUpdateDivisionTransferConversationRequestConversationTransferBulkConversationRequestUpdateTagsRequestScheduleMessageRequestScheduledMessageCsatSurveySubmitCsatRequestCsatAnalyticsResponseSlaPolicyCreateSlaPolicyUpdateSlaPolicySlaBreachLogConversationSlaStatusIntegrationUpsertIntegrationIntegrationAccountCreateIntegrationAccountUpdateIntegrationAccountWaTemplateCreateWaTemplateOutgoingWebhookCreateOutgoingWebhookUpdateOutgoingWebhookWebhookDeliveryWebhookDeliveryStatsRotateWebhookSecretRotateWebhookSecretResultReplayDeliveriesRequestReplayResultRoleRoleWithPermissionsPermissionCreateRoleUpdateRoleApiKeyApiKeyCreateResponseCreateApiKeyRequestUpdateApiKeyRequestCampaignCampaignWithTemplateCampaignDetailCreateCampaignUpdateCampaignCampaignRecipientAddRecipientsPayloadPaginatedResponseAutomationRuleCreateAutomationRuleUpdateAutomationRuleAutomationControlAutomationRuleRunAutomationEventQueueItemChatExpirationRuleUpsertChatExpirationRuleRegisterRequestWorkingHoursDayScheduleUpsertWorkingHoursAppSettingUpdateTimezoneAiAgentCreateAiAgentUpdateAiAgentAiAgentAssignmentCreateAiAgentAssignmentUpdateAiAgentAssignmentAiHandoffRuleCreateAiHandoffRuleUpdateAiHandoffRuleAiKnowledgeSourceCreateAiKnowledgeSourceAiKnowledgeQnaCreateAiKnowledgeQnaAiProductCreateAiProductUpdateAiProductAiOrchestrationRuleCreateAiOrchestrationRuleUpdateAiOrchestrationRuleAiEvaluationCreateAiEvaluationUpdateAiEvaluationAiUsageDailySummaryTestChatRequestTestChatMessageDeleteResponseOrganizationCreateOrganizationUpdateOrganizationTenantUsageTenantWithUsageSystemHealthBillingPlanCreateBillingPlanUpdateBillingPlanBillingCouponCreateBillingCouponBillingAddonCreateBillingAddonUpdateBillingAddonSubscriptionCurrentPlanBillingInvoiceBillingUsagePaymentMethodAddPaymentMethodSubscriptionAddonSubscriptionAddonDetailMrrSummaryRevenueByPlanMonthlyRevenueChurnMetricsBillingAnalyticsDashboard
ContactOmniStream CRM
Servers
https://api-chat.misindo.id

API Gateway (production)

http://localhost:3000

API Gateway (local development)

JSON