openapi: 3.0.3 info: title: 'API Reference' description: '' version: 1.0.0 servers: - url: 'https://dedi.emailbison.com' tags: - name: 'Account Management' description: "\nThis section handles operations related to user accounts within the application.\nIt includes endpoints for user registration, profile management and password reset." - name: Campaigns description: "\nThis section provides endpoints to manage campaign-related operations." - name: Replies description: "\nThis section provides endpoints to manage replies.\nIt includes functionalities for retrieving, updating, and managing replies." - name: 'Email Accounts' description: "\nThis section provides endpoints to manage email accounts associated with a workspace.\nIt includes functionalities for listing all email accounts, retrieving details of a specific email account,\ncreating new IMAP/SMTP email accounts, testing IMAP and SMTP connections, and deleting existing email accounts." - name: 'Email Blacklist' description: "\nAPIs for managing blacklisted emails. This includes retrieving, creating,\nbulk creating, and removing blacklisted emails." - name: 'Domain Blacklist' description: "\n\nAPIs for managing blacklisted domains. This includes retrieving, creating,\nbulk creating, and removing blacklisted domains." - name: 'Custom Tags' description: "\nAPIs for managing tags. This includes creating, retrieving, attaching to leads,\nand removing tags from leads." - name: 'Custom Tracking Domains' description: "\nAPIs for managing custom tracking domains. This includes retrieving, creating,\nand removing custom tracking domains." - name: 'Campaign Events' description: "\nDrill down into campaign event stats based on dates, campaign IDs, and/or sender email IDs" - name: 'Campaigns v1.1' description: "\nThis section provides endpoints to manage campaign-related operations." - name: 'Custom Lead Variables' description: "\nHere you can manage all custom variables created for a given workspace" - name: Events description: "\nThis section provides endpoints to view events. Event endpoints only show data for the last\n10 days, and only support cursor pagination.\n\nYou can also see \"webhook deliveries\" and \"webhook attempts per delivery\" for each event.\n\nIf you failed to capture some webhook events for a period of time, you can use this data\nto re-send the webhook events to your listeners.\n\nMore information here TODO_ADD_DOCS_LINK" - name: 'Ignore Phrases' description: "\nAPIs for managing ignore phrases. This includes retrieving, creating,\n and removing ignore phrases." - name: 'Lead Lists' description: "\nAPIs for managing lead lists (contact lists). This includes retrieving, creating,\nand renaming lead lists." - name: Leads description: "\nThis group of endpoints allows for the management of contact (lead) information." - name: 'OAuth Sessions (beta)' description: "\nThis section handles operations related to oAuth Sessions.\n\nNote: this section is in beta and is subject to change." - name: 'Reply Templates' description: "\nThis section provides endpoints to manage reply templates. You can then use these as templated responses\nwhen sending replies to leads." - name: 'Scheduled Emails' description: "\nThis section provides endpoints to manage scheduled emails." - name: Warmup description: "\nThis section provides endpoints to let you manage your warmup settings for email accounts (sender emails)" - name: 'Webhook Attempts' description: "\nThis section lets you fetch details about a specific webhook attempt. You can also retry the attempt if needed.\n\nMore information here TODO_ADD_DOCS_LINK" - name: 'Webhook Deliveries' description: "\nThis section lets you fetch details about a specific webhook delivery along\nwith all of its webhook attempts.\n\nMore information here TODO_ADD_DOCS_LINK" - name: 'Webhook Events' description: "\nAPIs for managing webhook events, sending test events, and viewing samples" - name: 'Webhook URLs' description: "\nAPIs for managing webhook URLs. This includes listing, creating, retrieving and deleting webhook urls." - name: 'Workspaces v1 (deprecated)' description: "\nThis section provides endpoints to manage workspace-related operations.\nIt includes functionalities for creating, updating, and deleting workspaces" - name: 'Workspaces v1.1' description: "\nThis section provides endpoints to manage workspace-related operations.\nIt includes functionalities for creating, updating, and deleting workspaces" components: securitySchemes: default: type: http scheme: bearer description: 'You can retrieve your token by visiting your dashboard and clicking Generate API token.' security: - default: [] paths: /api/users: get: summary: 'Account Details' operationId: accountDetails description: "This endpoint retrieves the details of the authenticated user.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 name: 'John Doe' email: john@doe.com team: id: 1 name: "John Doe's Team" personal_team: true main: true parent_id: null created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' profile_photo_path: null profile_photo_url: 'https://ui-avatars.com/api/?name=J&color=7F9CF5&background=EBF4FF' created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: 'John Doe' email: type: string example: john@doe.com team: type: object properties: id: type: integer example: 1 name: type: string example: "John Doe's Team" personal_team: type: boolean example: true main: type: boolean example: true parent_id: type: string example: null nullable: true created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' profile_photo_path: type: string example: null nullable: true profile_photo_url: type: string example: 'https://ui-avatars.com/api/?name=J&color=7F9CF5&background=EBF4FF' created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Account Management' /api/users/profile-picture: post: summary: 'Update Profile Picture' operationId: updateProfilePicture description: "This endpoint allows the authenticated user to update their profile information, specifically their profile picture.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 name: 'John Doe' email: john@doe.com team: id: 1 name: "John Doe's Team" personal_team: true main: true parent_id: null total_monthly_email_verification_credits: 0 remaining_monthly_email_verification_credits: 0 remaining_email_verification_credits: 0 total_email_verification_credits: 0 sender_email_limit: 100000 warmup_limit: 100000 warmup_filter_phrase: null has_access_to_warmup: false has_access_to_healthcheck: false created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' profile_photo_path: 'https://emailbison.s3.amazonaws.com/v2/images/1/f24c3135-9f3a-46f5-ac1c-139271a72cd9.jpg' profile_photo_url: 'https://ui-avatars.com/api/?name=J&color=7F9CF5&background=EBF4FF' created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: 'John Doe' email: type: string example: john@doe.com team: type: object properties: id: type: integer example: 1 name: type: string example: "John Doe's Team" personal_team: type: boolean example: true main: type: boolean example: true parent_id: type: string example: null nullable: true total_monthly_email_verification_credits: type: integer example: 0 remaining_monthly_email_verification_credits: type: integer example: 0 remaining_email_verification_credits: type: integer example: 0 total_email_verification_credits: type: integer example: 0 sender_email_limit: type: integer example: 100000 warmup_limit: type: integer example: 100000 warmup_filter_phrase: type: string example: null nullable: true has_access_to_warmup: type: boolean example: false has_access_to_healthcheck: type: boolean example: false created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' profile_photo_path: type: string example: 'https://emailbison.s3.amazonaws.com/v2/images/1/f24c3135-9f3a-46f5-ac1c-139271a72cd9.jpg' profile_photo_url: type: string example: 'https://ui-avatars.com/api/?name=J&color=7F9CF5&background=EBF4FF' created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Account Management' requestBody: required: true content: multipart/form-data: schema: type: object properties: photo: type: string format: binary description: 'The new profile picture to update. Must be a valid image file (jpg, jpeg or png) and no larger than 1MB.' required: - photo /api/users/password: put: summary: 'Update Password' operationId: updatePassword description: "This endpoint allows the authenticated user to update their password.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Successfully updated your profile password' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully updated your profile password' tags: - 'Account Management' requestBody: required: true content: application/json: schema: type: object properties: current_password: type: string description: 'Your current password.' example: password password: type: string description: 'Your new password.' example: new-password password_confirmation: type: string description: 'Your new password repeated.' example: new-password required: - current_password - password - password_confirmation /api/users/headless-ui-token: post: summary: 'Generate headless UI token (deprecated)' operationId: generateHeadlessUITokendeprecated description: "Note: this endpoint is deprecated and may not be supported.\n\nPlease use the endpoints in the \"OAuth Sessions\" section instead.\n\nThis endpoint allows the authenticated workspace user to generate a headless UI token that's valid\nfor up to **120 minutes**. The main purpose of this token is to let partner apps generate an embedded email\naccount connection view without having to build all the UIs and OAuth connection flows themselves.\n\nMultiple tokens can be active at a given time, but they will all expire after **120 minutes**.\n\n`Note:` You must get your requesting URL whitelisted before embedding the iframe in\nyour app.\n\nThe user must provide a valid authentication token in the request header to access this endpoint.\n\nOnce a token is generated, you can open an Iframe with the following URL format: https://your-bison-url.com/headless-ui-login?token=YOUR_HEADLESS_UI_TOKEN\n\nThis will then open an app window without the navigation bar and breadcrumbs. For now, this is only recommended\nfor enabling email account connection flows for OAuth." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"token\": \"headless_ui_token_rtG42rhsFhHq8rySjjaWh8RnaA\",\n }\n}" tags: - 'Account Management' /api/campaigns: get: summary: 'List campaigns' operationId: listCampaigns description: "This route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work\n\nThis endpoint retrieves all of the authenticated user's campaigns.\n\nSearch, tags, and status are all optional parameters." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 1,\n \"uuid\": \"9h8ef374-e986-4221-b432-2902b4826r83\",\n \"name\": \"John Doe Campaign\",\n \"type\": \"outbound\",\n \"status\": \"Active\",\n \"emails_sent\": 7,\n \"opened\": 2,\n \"unique_opens\": 1,\n \"replied\": 2,\n \"unique_replies\": 1,\n \"bounced\": 1,\n \"unsubscribed\": 2,\n \"interested\": 3,\n \"total_leads_contacted\": 7,\n \"max_emails_per_day\": 7,\n \"max_new_leads_per_day\": 2,\n \"plain_text\": true,\n \"open_tracking\": false,\n \"sequence_prioritization\": new_leads,\n \"daily_max_sends_per_receiving_domain\": 25,\n \"total_leads\": 4,\n \"can_unsubscribe\": true,\n \"unsubscribe_text\": \"Unsubscribe here\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"VIP\",\n \"default\": false\n }\n ]\n },\n {\n \"id\": 2,\n \"uuid\": \"8be8h930-b391-9381-c328-2902b4826r83\",\n \"name\": \"Jane Doe Campaign\",\n \"type\": \"outbound\",\n \"status\": \"Launching\",\n \"completion_percentage\": 45.23,\n \"emails_sent\": 5,\n \"opened\": 1,\n \"unique_opens\": 1,\n \"replied\": 1,\n \"unique_replies\": 1,\n \"bounced\": 2,\n \"unsubscribed\": 1,\n \"interested\": 0,\n \"total_leads_contacted\": 5,\n \"max_emails_per_day\": 7,\n \"max_new_leads_per_day\": 2,\n \"plain_text\": true,\n \"open_tracking\": false,\n \"sequence_prioritization\": new_leads,\n \"daily_max_sends_per_receiving_domain\": 25,\n \"total_leads\": 6,\n \"can_unsubscribe\": true,\n \"unsubscribe_text\": \"Unsubscribe here\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"VIP\",\n \"default\": false\n }\n ]\n }\n ],\n \"links\": {\n \"first\": \"http://bison.test/api/campaigns?page=1\",\n \"last\": \"http://bison.test/api/campaigns?page=1\",\n \"prev\": null,\n \"next\": null\n },\n \"meta\": {\n \"current_page\": 1,\n \"from\": 1,\n \"last_page\": 1,\n \"links\": [\n {\n \"url\": null,\n \"label\": \"« Previous\",\n \"active\": false\n },\n {\n \"url\": \"http://bison.test/api/campaigns?page=1\",\n \"label\": \"1\",\n \"active\": true\n },\n {\n \"url\": null,\n \"label\": \"Next »\",\n \"active\": false\n }\n ],\n \"path\": \"http://bison.test/api/campaigns\",\n \"per_page\": 15,\n \"to\": 3,\n \"total\": 3\n }\n}" tags: - Campaigns requestBody: required: false content: application/json: schema: type: object properties: search: type: string description: '' example: null nullable: true status: type: string description: '' example: draft enum: - draft - launching - active - stopped - completed - paused - failed - queued - archived - 'pending deletion' - deleted nullable: true tag_ids: type: array description: 'Must match an existing stored value.' example: - 11 items: type: integer pagination_type: type: string description: '' example: length_aware enum: - cursor - length_aware post: summary: 'Create a campaign' operationId: createACampaign description: 'This endpoint allows the authenticated user to create a new campaign.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 uuid: 9h8ef374-e986-4221-b432-2902b4826r83 name: 'John Doe Campaign' type: outbound status: Active emails_sent: 7 opened: 2 unique_opens: 1 replied: 2 unique_replies: 1 bounced: 1 unsubscribed: 2 interested: 3 total_leads_contacted: 7 total_leads: 10 max_emails_per_day: 7 max_new_leads_per_day: 2 plain_text: true open_tracking: false can_unsubscribe: true unsubscribe_text: 'Unsubscribe here' created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: VIP default: false properties: data: type: object properties: id: type: integer example: 1 uuid: type: string example: 9h8ef374-e986-4221-b432-2902b4826r83 name: type: string example: 'John Doe Campaign' type: type: string example: outbound status: type: string example: Active emails_sent: type: integer example: 7 opened: type: integer example: 2 unique_opens: type: integer example: 1 replied: type: integer example: 2 unique_replies: type: integer example: 1 bounced: type: integer example: 1 unsubscribed: type: integer example: 2 interested: type: integer example: 3 total_leads_contacted: type: integer example: 7 total_leads: type: integer example: 10 max_emails_per_day: type: integer example: 7 max_new_leads_per_day: type: integer example: 2 plain_text: type: boolean example: true open_tracking: type: boolean example: false can_unsubscribe: type: boolean example: true unsubscribe_text: type: string example: 'Unsubscribe here' created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: type: array example: - id: 1 name: VIP default: false items: type: object properties: id: type: integer example: 1 name: type: string example: VIP default: type: boolean example: false tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name of the new campaign.' example: 'New Campaign' type: type: string description: 'optional The type of campaign. Default is `outbound`' example: outbound enum: - '`outbound`' - '`reply_followup`' required: - name '/api/campaigns/{campaign_id}/duplicate': post: summary: 'Duplicate campaign' operationId: duplicateCampaign description: 'This endpoint allows the authenticated user to duplicate a campaign.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 2,\n \"uuid\": \"8ek43kk4-e986-4423-b432-2902b4825f98\",\n \"name\": \"Copy of John Doe Campaign\",\n \"type\": \"outbound\",\n \"status\": \"Draft\",\n \"emails_sent\": 7,\n \"opened\": 2,\n \"unique_opens\": 1,\n \"replied\": 2,\n \"unique_replies\": 1,\n \"bounced\": 1,\n \"unsubscribed\": 2,\n \"interested\": 3,\n \"total_leads_contacted\": 7,\n \"total_leads\": 10,\n \"max_emails_per_day\": 7\n \"max_new_leads_per_day\": 2\n \"plain_text\": true\n \"open_tracking\": false\n \"sequence_prioritization\": new_leads,\n \"daily_max_sends_per_receiving_domain\": 25,\n \"can_unsubscribe\": true\n \"unsubscribe_text\": \"Unsubscribe here\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"VIP\",\n \"default\": false\n }\n ]\n }\n }" tags: - Campaigns parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 2 required: true schema: type: integer '/api/campaigns/{campaign_id}/pause': patch: summary: 'Pause campaign' operationId: pauseCampaign description: 'This endpoint allows the authenticated user to pause a campaign.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"uuid\": \"9h8ef374-e986-4221-b432-2902b4826r83\",\n \"name\": \"John Doe Campaign\",\n \"type\": \"outbound\",\n \"status\": \"Paused\",\n \"emails_sent\": 7,\n \"opened\": 2,\n \"unique_opens\": 1,\n \"replied\": 2,\n \"unique_replies\": 1,\n \"bounced\": 1,\n \"unsubscribed\": 2,\n \"interested\": 3,\n \"total_leads_contacted\": 7,\n \"total_leads\": 10,\n \"max_emails_per_day\": 7,\n \"max_new_leads_per_day\": 2,\n \"plain_text\": true,\n \"open_tracking\": false,\n \"sequence_prioritization\": new_leads,\n \"daily_max_sends_per_receiving_domain\": 25,\n \"can_unsubscribe\": true,\n \"unsubscribe_text\": \"Unsubscribe here\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"VIP\",\n \"default\": false\n }\n ]\n }\n }" tags: - Campaigns parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 17 required: true schema: type: integer '/api/campaigns/{campaign_id}/resume': patch: summary: 'Resume campaign' operationId: resumeCampaign description: 'This endpoint allows the authenticated user to resume a paused campaign.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"uuid\": \"9h8ef374-e986-4221-b432-2902b4826r83\",\n \"name\": \"John Doe Campaign\",\n \"type\": \"outbound\",\n \"status\": \"Queued\",\n \"emails_sent\": 7,\n \"opened\": 2,\n \"unique_opens\": 1,\n \"replied\": 2,\n \"unique_replies\": 1,\n \"bounced\": 1,\n \"unsubscribed\": 2,\n \"interested\": 3,\n \"total_leads_contacted\": 7,\n \"total_leads\": 10,\n \"max_emails_per_day\": 7,\n \"max_new_leads_per_day\": 2,\n \"plain_text\": true,\n \"open_tracking\": false,\n \"sequence_prioritization\": new_leads,\n \"daily_max_sends_per_receiving_domain\": 25,\n \"can_unsubscribe\": true,\n \"unsubscribe_text\": \"Unsubscribe here\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"VIP\",\n \"default\": false\n }\n ]\n }\n }" tags: - Campaigns parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 17 required: true schema: type: integer '/api/campaigns/{campaign_id}/archive': patch: summary: 'Archive campaign' operationId: archiveCampaign description: 'This endpoint allows the authenticated user to archive a campaign.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"uuid\": \"9h8ef374-e986-4221-b432-2902b4826r83\",\n \"name\": \"John Doe Campaign\",\n \"type\": \"outbound\",\n \"status\": \"Archived\",\n \"emails_sent\": 7,\n \"opened\": 2,\n \"unique_opens\": 1,\n \"replied\": 2,\n \"unique_replies\": 1,\n \"bounced\": 1,\n \"unsubscribed\": 2,\n \"interested\": 3,\n \"total_leads_contacted\": 7,\n \"total_leads\": 10,\n \"max_emails_per_day\": 7,\n \"max_new_leads_per_day\": 2,\n \"plain_text\": true,\n \"open_tracking\": false,\n \"sequence_prioritization\": new_leads,\n \"daily_max_sends_per_receiving_domain\": 25,\n \"can_unsubscribe\": true,\n \"unsubscribe_text\": \"Unsubscribe here\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"VIP\",\n \"default\": false\n }\n ]\n }\n }" tags: - Campaigns parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 12 required: true schema: type: integer '/api/campaigns/{id}/update': patch: summary: 'Update campaign settings' operationId: updateCampaignSettings description: 'This endpoint allows the authenticated user to update the settings of a campaign.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"uuid\": \"9h8ef374-e986-4221-b432-2902b4826r83\",\n \"name\": \"John Doe Campaign\",\n \"type\": \"outbound\",\n \"status\": \"Active\",\n \"emails_sent\": 7,\n \"opened\": 2,\n \"unique_opens\": 1,\n \"replied\": 2,\n \"unique_replies\": 1,\n \"bounced\": 1,\n \"unsubscribed\": 2,\n \"interested\": 3,\n \"total_leads_contacted\": 7,\n \"total_leads\": 10,\n \"max_emails_per_day\": 7,\n \"max_new_leads_per_day\": 2,\n \"plain_text\": true,\n \"open_tracking\": false,\n \"sequence_prioritization\": new_leads,\n \"daily_max_sends_per_receiving_domain\": 25,\n \"can_unsubscribe\": true,\n \"unsubscribe_text\": \"Unsubscribe here\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"VIP\",\n \"default\": false\n }\n ]\n }\n }" tags: - Campaigns requestBody: required: false content: application/json: schema: type: object properties: name: type: string description: 'The name of the campaign.' example: 'New Campaign Name' nullable: true max_emails_per_day: type: integer description: 'The maximum number of emails that can be sent per day.' example: 500 nullable: true max_new_leads_per_day: type: integer description: 'The maximum number of new leads that can be added per day.' example: 100 nullable: true daily_max_sends_per_receiving_domain: type: integer description: 'The maximum number of emails that can be sent per day to a single receiving domain.' example: 5 nullable: true plain_text: type: boolean description: 'Whether the email content should be plain text. If nothing sent, false is assumed.' example: true nullable: true open_tracking: type: boolean description: 'Whether open tracking should be enabled for the campaign. If nothing sent, false is assumed.' example: true nullable: true reputation_building: type: boolean description: 'Spam protection. If nothing sent, false is assumed.' example: true nullable: true can_unsubscribe: type: boolean description: 'Whether recipients can unsubscribe from the campaign using a one-click link. If nothing sent, false is assumed.' example: true nullable: true include_auto_replies_in_stats: type: boolean description: 'If auto replies should be included in the campaign stats. This setting is not retroactive.' example: false nullable: true sequence_prioritization: type: string description: 'How the campaign sequence should be prioritized. By default, followups are prioritized.' example: new_leads enum: - followups - new_leads parameters: - in: path name: id description: 'The ID of the campaign.' example: 20 required: true schema: type: integer '/api/campaigns/{campaign_id}/schedule': post: summary: 'Create campaign schedule' operationId: createCampaignSchedule description: 'This endpoint allows the authenticated user to create the schedule of the campaign.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 type: Generated monday: true tuesday: true wednesday: true thursday: true friday: true saturday: false sunday: false start_time: '08:00' end_time: '17:00' timezone: America/New_York created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-04-14T16:59:21.000000Z' properties: data: type: object properties: id: type: integer example: 1 type: type: string example: Generated monday: type: boolean example: true tuesday: type: boolean example: true wednesday: type: boolean example: true thursday: type: boolean example: true friday: type: boolean example: true saturday: type: boolean example: false sunday: type: boolean example: false start_time: type: string example: '08:00' end_time: type: string example: '17:00' timezone: type: string example: America/New_York created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-04-14T16:59:21.000000Z' tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: monday: type: boolean description: 'Whether the schedule includes Monday.' example: true tuesday: type: boolean description: 'Whether the schedule includes Tuesday.' example: true wednesday: type: boolean description: 'Whether the schedule includes Wednesday.' example: true thursday: type: boolean description: 'Whether the schedule includes Thursday.' example: true friday: type: boolean description: 'Whether the schedule includes Friday.' example: true saturday: type: boolean description: 'Whether the schedule includes Saturday.' example: false sunday: type: boolean description: 'Whether the schedule includes Sunday.' example: false start_time: type: string description: 'The start time in HH:MM format.' example: '09:00' end_time: type: string description: 'The end time in HH:MM format.' example: '17:00' timezone: type: string description: 'The timezone of the schedule.' example: America/New_York save_as_template: type: boolean description: 'Wheter the created schedule should be saved as template.' example: false required: - monday - tuesday - wednesday - thursday - friday - saturday - sunday - start_time - end_time - timezone get: summary: 'View campaign schedule' operationId: viewCampaignSchedule description: 'This endpoint allows the authenticated user to view the schedule of the campaign.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 type: Generated monday: true tuesday: true wednesday: true thursday: true friday: true saturday: false sunday: false start_time: '08:00' end_time: '17:00' timezone: America/New_York created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 type: type: string example: Generated monday: type: boolean example: true tuesday: type: boolean example: true wednesday: type: boolean example: true thursday: type: boolean example: true friday: type: boolean example: true saturday: type: boolean example: false sunday: type: boolean example: false start_time: type: string example: '08:00' end_time: type: string example: '17:00' timezone: type: string example: America/New_York created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - Campaigns put: summary: 'Update campaign schedule' operationId: updateCampaignSchedule description: 'This endpoint allows the authenticated user to update the schedule of the campaign.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 type: Generated monday: true tuesday: true wednesday: true thursday: true friday: true saturday: false sunday: false start_time: '08:00' end_time: '17:00' timezone: America/New_York created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 type: type: string example: Generated monday: type: boolean example: true tuesday: type: boolean example: true wednesday: type: boolean example: true thursday: type: boolean example: true friday: type: boolean example: true saturday: type: boolean example: false sunday: type: boolean example: false start_time: type: string example: '08:00' end_time: type: string example: '17:00' timezone: type: string example: America/New_York created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: monday: type: boolean description: 'Whether the schedule includes Monday.' example: true tuesday: type: boolean description: 'Whether the schedule includes Tuesday.' example: true wednesday: type: boolean description: 'Whether the schedule includes Wednesday.' example: true thursday: type: boolean description: 'Whether the schedule includes Thursday.' example: true friday: type: boolean description: 'Whether the schedule includes Friday.' example: true saturday: type: boolean description: 'Whether the schedule includes Saturday.' example: false sunday: type: boolean description: 'Whether the schedule includes Sunday.' example: false start_time: type: string description: 'The start time in HH:MM format.' example: '09:00' end_time: type: string description: 'The end time in HH:MM format.' example: '17:00' timezone: type: string description: 'The timezone of the schedule.' example: America/New_York save_as_template: type: boolean description: '' example: false required: - monday - tuesday - wednesday - thursday - friday - saturday - sunday - start_time - end_time - timezone - save_as_template parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 8 required: true schema: type: integer /api/campaigns/schedule/templates: get: summary: 'View all schedule templates' operationId: viewAllScheduleTemplates description: 'This endpoint allows the authenticated user to view their scheduled templates.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: - id: 1 type: 'Schedule template' monday: true tuesday: true wednesday: true thursday: true friday: true saturday: false sunday: false start_time: '08:00' end_time: '17:00' timezone: America/New_York created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 type: 'Schedule template' monday: true tuesday: true wednesday: true thursday: true friday: true saturday: false sunday: false start_time: '08:00' end_time: '17:00' timezone: America/New_York created_at: '2025-04-15T16:59:21.000000Z' updated_at: '2025-05-19T12:53:32.000000Z' properties: data: type: array example: - id: 1 type: 'Schedule template' monday: true tuesday: true wednesday: true thursday: true friday: true saturday: false sunday: false start_time: '08:00' end_time: '17:00' timezone: America/New_York created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 type: 'Schedule template' monday: true tuesday: true wednesday: true thursday: true friday: true saturday: false sunday: false start_time: '08:00' end_time: '17:00' timezone: America/New_York created_at: '2025-04-15T16:59:21.000000Z' updated_at: '2025-05-19T12:53:32.000000Z' items: type: object properties: id: type: integer example: 1 type: type: string example: 'Schedule template' monday: type: boolean example: true tuesday: type: boolean example: true wednesday: type: boolean example: true thursday: type: boolean example: true friday: type: boolean example: true saturday: type: boolean example: false sunday: type: boolean example: false start_time: type: string example: '08:00' end_time: type: string example: '17:00' timezone: type: string example: America/New_York created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - Campaigns /api/campaigns/schedule/available-timezones: get: summary: 'View all available schedule timezones' operationId: viewAllAvailableScheduleTimezones description: "This endpoint allows the authenticated user to view all available timezones.\nYou must use an ID from this list whenever you're working on Campaign Schedules" parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - name: '(GMT-12:00) International Date Line West' id: Pacific/Kwajalein - name: '(GMT-11:00) Midway Island' id: Pacific/Midway - name: '(GMT-11:00) Samoa' id: Pacific/Apia properties: data: type: array example: - name: '(GMT-12:00) International Date Line West' id: Pacific/Kwajalein - name: '(GMT-11:00) Midway Island' id: Pacific/Midway - name: '(GMT-11:00) Samoa' id: Pacific/Apia items: type: object properties: name: type: string example: '(GMT-12:00) International Date Line West' id: type: string example: Pacific/Kwajalein tags: - Campaigns /api/campaigns/sending-schedules: get: summary: 'Show sending schedules for campaigns' operationId: showSendingSchedulesForCampaigns description: 'This endpoint allows the authenticated user to view the sending schedules for campaigns' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"emails_being_sent\": 763,\n \"campaign_id\": 60,\n \"campaign\": {\n \"id\": 60,\n \"uuid\": \"9eb10d82-aef8-490a-9293-5ec3c9435d8e\",\n \"name\": \"Red's campaign\",\n \"type\": \"outbound\",\n \"status\": 2,\n \"plain_text\": false,\n \"open_tracking\": true,\n \"sequence_prioritization\": new_leads,\n \"daily_max_sends_per_receiving_domain\": 25,\n \"reputation_building\": 0,\n \"emails_sent\": 0,\n \"opened\": 0,\n \"replied\": 0,\n \"bounced\": 0,\n \"unique_replies\": 0,\n \"unique_opens\": 0,\n \"total_leads_contacted\": 0,\n \"unsubscribed\": 0,\n \"interested\": 0,\n \"max_emails_per_day\": 1000,\n \"max_new_leads_per_day\": 1000,\n \"can_unsubscribe\": false,\n \"unsubscribe_text\": null,\n \"deleted_at\": null,\n \"created_at\": \"2025-04-16T19:45:30.000000Z\",\n \"updated_at\": \"2025-04-16T19:46:27.000000Z\",\n \"leads_status\": 0,\n \"total_leads\": 1\n }\n },\n {\n \"emails_being_sent\": 201,\n \"campaign_id\": 62,\n \"campaign\": {\n \"id\": 62,\n \"uuid\": \"9eb10d82-aef8-490a-9293-5ec3c9435d8e\",\n \"name\": \"Blue's campaign\",\n \"type\": \"outbound\",\n \"status\": 2,\n \"plain_text\": false,\n \"open_tracking\": true,\n \"sequence_prioritization\": new_leads,\n \"daily_max_sends_per_receiving_domain\": 25,\n \"reputation_building\": 0,\n \"emails_sent\": 0,\n \"opened\": 0,\n \"replied\": 0,\n \"bounced\": 0,\n \"unique_replies\": 0,\n \"unique_opens\": 0,\n \"total_leads_contacted\": 0,\n \"unsubscribed\": 0,\n \"interested\": 0,\n \"max_emails_per_day\": 1000,\n \"max_new_leads_per_day\": 1000,\n \"can_unsubscribe\": false,\n \"unsubscribe_text\": null,\n \"deleted_at\": null,\n \"created_at\": \"2025-04-16T19:45:30.000000Z\",\n \"updated_at\": \"2025-04-16T19:46:27.000000Z\",\n \"leads_status\": 0,\n \"total_leads\": 1\n }\n },\n ],\n \"links\": {\n \"first\": \"http://bison.test/api/campaigns/sending-schedules?page=1\",\n \"last\": \"http://bison.test/api/campaigns/sending-schedules?page=1\",\n \"prev\": null,\n \"next\": null\n },\n \"meta\": {\n \"current_page\": 1,\n \"from\": 1,\n \"last_page\": 1,\n \"links\": [\n {\n \"url\": null,\n \"label\": \"« Previous\",\n \"active\": false\n },\n {\n \"url\": \"http://bison.test/api/campaigns/sending-schedules?page=1\",\n \"label\": \"1\",\n \"active\": true\n },\n {\n \"url\": null,\n \"label\": \"Next »\",\n \"active\": false\n }\n ],\n \"path\": \"http://bison.test/api/campaigns/sending-schedules\",\n \"per_page\": 15,\n \"to\": 3,\n \"total\": 3\n }\n}" tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: day: type: string description: 'The day of the schedule.' example: tomorrow enum: - today - tomorrow - day_after_tomorrow required: - day '/api/campaigns/{campaign_id}/sending-schedule': get: summary: 'Show sending schedule for campaign' operationId: showSendingScheduleForCampaign description: 'This endpoint allows the authenticated user to view the sending schedule of a single campaign' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\":\n {\n \"emails_being_sent\": 763,\n \"campaign_id\": 60,\n \"campaign\": {\n \"id\": 60,\n \"uuid\": \"9eb10d82-aef8-490a-9293-5ec3c9435d8e\",\n \"name\": \"Red's campaign\",\n \"type\": \"outbound\",\n \"status\": 2,\n \"plain_text\": false,\n \"open_tracking\": true,\n \"sequence_prioritization\": new_leads,\n \"daily_max_sends_per_receiving_domain\": 25,\n \"reputation_building\": 0,\n \"emails_sent\": 0,\n \"opened\": 0,\n \"replied\": 0,\n \"bounced\": 0,\n \"unique_replies\": 0,\n \"unique_opens\": 0,\n \"total_leads_contacted\": 0,\n \"unsubscribed\": 0,\n \"interested\": 0,\n \"max_emails_per_day\": 1000,\n \"max_new_leads_per_day\": 1000,\n \"can_unsubscribe\": false,\n \"unsubscribe_text\": null,\n \"deleted_at\": null,\n \"created_at\": \"2025-04-16T19:45:30.000000Z\",\n \"updated_at\": \"2025-04-16T19:46:27.000000Z\",\n \"leads_status\": 0,\n \"total_leads\": 1\n }\n }\n}" tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: day: type: string description: 'The day of the schedule.' example: tomorrow enum: - today - tomorrow - day_after_tomorrow required: - day parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 1 required: true schema: type: integer '/api/campaigns/{campaign_id}/create-schedule-from-template': post: summary: 'Create campaign schedule from template' operationId: createCampaignScheduleFromTemplate description: 'This endpoint allows the authenticated user to create the schedule of the campaign.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 type: Generated monday: true tuesday: true wednesday: true thursday: true friday: true saturday: false sunday: false start_time: '08:00' end_time: '17:00' timezone: America/New_York created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 type: type: string example: Generated monday: type: boolean example: true tuesday: type: boolean example: true wednesday: type: boolean example: true thursday: type: boolean example: true friday: type: boolean example: true saturday: type: boolean example: false sunday: type: boolean example: false start_time: type: string example: '08:00' end_time: type: string example: '17:00' timezone: type: string example: America/New_York created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: schedule_id: type: integer description: 'The ID of the schedule template.' example: 1 required: - schedule_id parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 3 required: true schema: type: integer '/api/campaigns/{campaign_id}/sequence-steps': get: summary: 'View campaign sequence steps (deprecated)' operationId: viewCampaignSequenceStepsdeprecated description: 'This endpoint allows the authenticated user to view the sequence steps of the campaign.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 4,\n \"active\": true,\n \"email_subject\": \"Step 1\",\n \"order\": \"1\",\n \"email_body\": \"Step 1 body\",\n \"wait_in_days\": \"1\",\n \"variant\": false,\n \"variant_from_step\": null,\n \"attachments\": [],\n \"thread_reply\": false,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n },\n {\n \"id\": 5,\n \"active\": true,\n \"email_subject\": \"Step 2\",\n \"order\": \"1\",\n \"email_body\": \"Step 2 body\",\n \"wait_in_days\": \"2\",\n \"variant\": true,\n \"variant_from_step\": null,\n \"attachments\": [],\n \"thread_reply\": true,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n }\n ]" tags: - Campaigns post: summary: 'Create sequence steps (deprecated)' operationId: createSequenceStepsdeprecated description: 'This endpoint allows the authenticated user to create the campaign sequence steps from scratch.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"type\": \"Campaign sequence\",\n \"title\": \"John Doe sequence\",\n \"sequence_steps\": [\n {\n \"id\": 1,\n \"active\": true,\n \"email_subject\": \"Hello there! {FIRST_NAME}\",\n \"order\": 1,\n \"email_body\": \"Try it now!\",\n \"wait_in_days\": 1,\n \"variant\": false,\n \"variant_from_step\": null,\n \"attachments\": null,\n \"thread_reply\": false,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n },\n {\n \"id\": 2,\n \"active\": true,\n \"email_subject\": \"Re: Hello there!\",\n \"order\": 2,\n \"email_body\": \"Try it now!\",\n \"wait_in_days\": 1,\n \"variant\": true,\n \"variant_from_step\": 1,\n \"attachments\": null,\n \"thread_reply\": true,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n }\n ],\n }\n}" tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title for the sequence.' example: 'John Doe sequence' sequence_steps: type: array description: 'The array containing the sequence steps' example: - email_subject: 'Hello there!' email_subject_variables: - '{FIRST_NAME}' order: 1 email_body: 'Try it now!' wait_in_days: 1 variant: false thread_reply: false - email_subject: 'Reaching you again' order: 2 email_body: 'Try it now!' wait_in_days: 1 variant: true variant_from_step: 1 thread_reply: true items: type: object properties: email_subject: type: string description: 'The subject for the email.' example: 'Hello there!' email_subject_variables: type: array description: 'The subject variables.' example: null items: type: string nullable: true order: type: integer description: 'The order of the step.' example: 1 nullable: true email_body: type: string description: 'The body of the email.' example: 'Try it now!' wait_in_days: type: integer description: 'The days to wait.' example: 1 variant: type: boolean description: 'Wheter the step is variant of another step.' example: true nullable: true variant_from_step: type: integer description: 'The order number of a step in the current request to be a variant of. Cannot be used with variant_from_step_id.' example: 1 nullable: true variant_from_step_id: type: integer description: 'The ID of an already saved step to be a variant of. Cannot be used with variant_from_step.' example: 42 nullable: true attachments: type: string format: binary description: 'The email attachments.' nullable: true thread_reply: type: boolean description: 'Wheter the step should be a reply from the previous step.' example: false nullable: true required: - email_subject - email_body - wait_in_days required: - title - sequence_steps parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 10 required: true schema: type: integer '/api/campaigns/sequence-steps/{sequence_id}': put: summary: 'Update sequence steps (deprecated)' operationId: updateSequenceStepsdeprecated description: 'This endpoint allows the authenticated user to update the campaign sequence steps.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"type\": \"Campaign sequence\",\n \"title\": \"John Doe sequence\",\n \"sequence_steps\": [\n {\n \"id\": 1,\n \"active\": true,\n \"email_subject\": \"Hello there! {FIRST_NAME}\",\n \"order\": 1,\n \"email_body\": \"Try it now!\",\n \"wait_in_days\": 1,\n \"variant\": false,\n \"variant_from_step\": null,\n \"attachments\": null,\n \"thread_reply\": false,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n },\n {\n \"id\": 2,\n \"active\": true,\n \"email_subject\": \"Re: Hello there!\",\n \"order\": 2,\n \"email_body\": \"Try it now!\",\n \"wait_in_days\": 1,\n \"variant\": true,\n \"variant_from_step\": 1,\n \"attachments\": null,\n \"thread_reply\": true,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n }\n ],\n }\n}" tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title for the sequence.' example: 'John Doe sequence' sequence_steps: type: array description: 'The array containing the sequence steps' example: - id: 1 email_subject: 'Hello there!' email_subject_variables: - '{FIRST_NAME}' order: 1 email_body: 'Try it now!' wait_in_days: 1 variant: false thread_reply: false - id: 2 email_subject: 'Hello again!' order: 2 email_body: 'Try it now!' wait_in_days: 1 variant: true variant_from_step: 1 thread_reply: true items: type: object properties: id: type: integer description: 'The ID of the sequence step.' example: 1 email_subject: type: string description: 'The subject for the email.' example: 'Hello there!' email_subject_variables: type: array description: 'The subject variables.' example: null items: type: string nullable: true order: type: integer description: 'The order of the step.' example: 1 email_body: type: string description: 'The body of the email.' example: 'Try it now!' wait_in_days: type: integer description: 'The days to wait.' example: 1 variant: type: boolean description: 'Wheter the step is variant of another step.' example: true nullable: true variant_from_step_id: type: integer description: 'Must match an existing stored value.' example: 16 attachments: type: string format: binary description: 'The email attachments.' nullable: true thread_reply: type: boolean description: 'Wheter the step should be a reply from the previous step.' example: false nullable: true variant_from_step: type: integer description: 'Which step to be variant from (related by the id field).' example: 1 required: - id - email_subject - order - email_body - wait_in_days - variant_from_step_id required: - title - sequence_steps parameters: - in: path name: sequence_id description: 'The ID of the sequence. You can get this on the Campaign object.' example: 13 required: true schema: type: integer '/api/campaigns/sequence-steps/{sequence_step_id}/activate-or-deactivate': patch: summary: 'Activate or deactivate a sequence step variant' operationId: activateOrDeactivateASequenceStepVariant description: "This endpoint allows the authenticated user to activate or deactivate a sequence step variant.\n\nYou can get a list of sequence step IDs by making a request to `/campaigns/v1.1/{campaign_id}/sequence-steps`." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Sequence step variant successfully activated.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Sequence step variant successfully activated.' tags: - Campaigns requestBody: required: false content: application/json: schema: type: object properties: active: type: boolean description: 'Whether the variant should be active.' example: true parameters: - in: path name: sequence_step_id description: 'The ID of the sequence step.' example: 8 required: true schema: type: integer '/api/campaigns/sequence-steps/{sequence_step_id}': delete: summary: 'Delete sequence step' operationId: deleteSequenceStep description: 'This endpoint allows the authenticated user to delete a specific sequence step from a sequence' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Sequence step successfully deleted' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Sequence step successfully deleted' tags: - Campaigns parameters: - in: path name: sequence_step_id description: "The ID of the sequence step. You can get a list of all campaign\nsequence steps by calling the `/campaigns//sequence-steps` endpoint." example: 18 required: true schema: type: integer '/api/campaigns/sequence-steps/{sequence_step_id}/test-email': post: summary: 'Send sequence step test email' operationId: sendSequenceStepTestEmail description: "This endpoint allows the authenticated user to send a test email from a sequence step. You need at least\none lead in the campaign to send a test email." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Sequence step successfully deleted' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Sequence step successfully deleted' tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: sender_email_id: type: integer description: 'The ID of the sender email to send from.' example: 17 to_email: type: string description: 'The email address to send the sequence step to.' example: marjorie.lebsack@example.net use_dedicated_ips: type: boolean description: 'Send using the dedicated campaign IPs instead of the instance IP' example: true required: - sender_email_id - to_email parameters: - in: path name: sequence_step_id description: "The ID of the sequence step. You can get a list of all campaign\nsequence steps by calling the `/campaigns//sequence-steps` endpoint." example: 2 required: true schema: type: integer '/api/campaigns/{campaign_id}/replies': get: summary: 'Get campaign replies' operationId: getCampaignReplies description: "This endpoint retrieves all replies associated with a campaign.\n\nThis route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work" parameters: - in: query name: search description: 'Search term for filtering replies.' example: interested required: false schema: type: string description: 'Search term for filtering replies.' example: interested nullable: true - in: query name: status description: 'Filter by status. One of `interested`, `automated_reply`, `not_automated_reply`.' example: automated_reply required: false schema: type: string description: 'Filter by status. One of `interested`, `automated_reply`, `not_automated_reply`.' example: automated_reply - in: query name: folder description: 'Filter by folder. One of `inbox`, `sent`, `spam`, `bounced`, `all`.' example: inbox required: false schema: type: string description: 'Filter by folder. One of `inbox`, `sent`, `spam`, `bounced`, `all`.' example: inbox - in: query name: read description: 'Filter by read status.' example: true required: false schema: type: boolean description: 'Filter by read status.' example: true nullable: true - in: query name: sender_email_id description: 'The ID of the sender email address.' example: 243 required: false schema: type: integer description: 'The ID of the sender email address.' example: 243 - in: query name: lead_id description: 'Must match an existing stored value.' example: 20 required: false schema: type: integer description: 'Must match an existing stored value.' example: 20 - in: query name: tag_ids description: 'Array of tag IDs to filter by.' example: - 1 - 2 - 3 required: false schema: type: array description: 'Array of tag IDs to filter by.' example: - 1 - 2 - 3 items: type: integer - in: query name: pagination_type description: '' example: length_aware required: false schema: type: string description: '' example: length_aware enum: - cursor - length_aware - in: query name: campaign_id description: 'The ID of the campaign.' example: 12 required: false schema: type: integer description: 'The ID of the campaign.' example: 12 responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 45,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Inbox\",\n \"subject\": \"yo test boy wassup G\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"
yo whats good essssssey
\",\n \"text_body\": \"yo whats good essssssey\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-09-21T02:10:42.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": 123,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": 25057,\n \"raw_message_id\": \"\",\n \"from_name\": \"Cody Smith\",\n \"from_email_address\": \"cody@emailguard.io\",\n \"primary_to_email_address\": \"usysows3w88c6ljx@eguardtest.com\",\n \"to\": [\n {\n \"name\": \"Chimma Tester\",\n \"address\": \"usysows3w88c6ljx@eguardtest.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": null,\n \"attachments\": [\n \"id\": 213,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"reply_id\": 45,\n \"file_name\": \"image.png\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n ]\n }\n ],\n \"links\": {\n \"first\": \"http://bison.test/api/campaigns/1/replies?page=1\",\n \"last\": \"http://bison.test/api/campaigns/1/replies?page=1\",\n \"prev\": null,\n \"next\": null\n },\n \"meta\": {\n \"current_page\": 1,\n \"from\": 1,\n \"last_page\": 1,\n \"links\": [\n {\n \"url\": null,\n \"label\": \"« Previous\",\n \"active\": false\n },\n {\n \"url\": \"http://bison.test/api/campaigns/1/replies?page=1\",\n \"label\": \"1\",\n \"active\": true\n },\n {\n \"url\": null,\n \"label\": \"Next »\",\n \"active\": false\n }\n ],\n \"path\": \"http://bison.test/api/campaigns/1/replies\",\n \"per_page\": 15,\n \"to\": 3,\n \"total\": 3\n }\n}" tags: - Campaigns parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 18 required: true schema: type: integer '/api/campaigns/{campaign_id}/leads': get: summary: 'Get all leads for campaign' operationId: getAllLeadsForCampaign description: "This route supports cursor pagination for faster processing. We recommend using this for traversing larger\n datasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work\n\nThis endpoint retrieves all leads associated with a campaign." parameters: - in: query name: search description: 'Search term for filtering replies.' example: interested required: false schema: type: string description: 'Search term for filtering replies.' example: interested nullable: true - in: query name: filters description: '' example: [] required: false schema: type: object description: '' example: [] properties: { } - in: query name: filters.lead_campaign_status description: 'Filter by lead campaign status. One of `in_sequence`, `sequence_finished`, `sequence_stopped`, `never_contacted`, `replied`.' example: in_sequence required: false schema: type: string description: 'Filter by lead campaign status. One of `in_sequence`, `sequence_finished`, `sequence_stopped`, `never_contacted`, `replied`.' example: in_sequence - in: query name: filters.emails_sent description: 'Filter by the number of emails sent.' example: - et required: false schema: type: array description: 'Filter by the number of emails sent.' example: - et items: type: string - in: query name: filters.emails_sent.criteria description: 'Comparison operator for emails sent. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>=' required: false schema: type: string description: 'Comparison operator for emails sent. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>=' - in: query name: filters.emails_sent.value description: 'Value for the number of emails sent.' example: 10 required: false schema: type: integer description: 'Value for the number of emails sent.' example: 10 nullable: true - in: query name: filters.opens description: '' example: [] required: false schema: type: object description: '' example: [] properties: { } - in: query name: filters.opens.criteria description: 'Comparison operator for email opens. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>' required: false schema: type: string description: 'Comparison operator for email opens. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>' - in: query name: filters.opens.value description: 'Value for the number of email opens.' example: 100 required: false schema: type: integer description: 'Value for the number of email opens.' example: 100 nullable: true - in: query name: filters.replies description: '' example: [] required: false schema: type: object description: '' example: [] properties: { } - in: query name: filters.replies.criteria description: 'Comparison operator for replies. One of `=`, `>=`, `>`, `<=`, `<`.' example: '=' required: false schema: type: string description: 'Comparison operator for replies. One of `=`, `>=`, `>`, `<=`, `<`.' example: '=' - in: query name: filters.replies.value description: 'Value for the number of replies.' example: 5 required: false schema: type: integer description: 'Value for the number of replies.' example: 5 nullable: true - in: query name: filters.verification_statuses description: 'A verification status. Accepted values: `verifying`, `verified`, `risky`, `unknown`, `unverified`, `inactive`, `bounced`, `unsubscribed`' example: - mollitia required: false schema: type: array description: 'A verification status. Accepted values: `verifying`, `verified`, `risky`, `unknown`, `unverified`, `inactive`, `bounced`, `unsubscribed`' example: - mollitia items: type: string - in: query name: filters.tag_ids description: 'Filter by tag IDs.' example: - 1 - 2 - 3 required: false schema: type: array description: 'Filter by tag IDs.' example: - 1 - 2 - 3 items: type: integer - in: query name: filters.excluded_tag_ids description: 'Exclude leads by tag IDs.' example: - 1 - 2 - 3 required: false schema: type: array description: 'Exclude leads by tag IDs.' example: - 1 - 2 - 3 items: type: integer - in: query name: filters.without_tags description: 'Only show leads that have no tags attached.' example: true required: false schema: type: boolean description: 'Only show leads that have no tags attached.' example: true - in: query name: filters.created_at description: '' example: [] required: false schema: type: object description: '' example: [] properties: { } - in: query name: filters.created_at.criteria description: 'Comparison operator for the created_at date. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>=' required: false schema: type: string description: 'Comparison operator for the created_at date. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>=' - in: query name: filters.created_at.value description: 'Value for the created_at date. Must be a valid date in YYYY-MM-DD format.' example: '2025-03-22' required: false schema: type: string description: 'Value for the created_at date. Must be a valid date in YYYY-MM-DD format.' example: '2025-03-22' nullable: true - in: query name: filters.updated_at description: '' example: [] required: false schema: type: object description: '' example: [] properties: { } - in: query name: filters.updated_at.criteria description: 'Comparison operator for the updated_at date. One of `=`, `>=`, `>`, `<=`, `<`.' example: '<=' required: false schema: type: string description: 'Comparison operator for the updated_at date. One of `=`, `>=`, `>`, `<=`, `<`.' example: '<=' - in: query name: filters.updated_at.value description: 'Value for the updated_at date. Must be a valid date in YYYY-MM-DD format.' example: '2025-03-22' required: false schema: type: string description: 'Value for the updated_at date. Must be a valid date in YYYY-MM-DD format.' example: '2025-03-22' nullable: true - in: query name: pagination_type description: '' example: cursor required: false schema: type: string description: '' example: cursor enum: - cursor - length_aware responses: 200: description: success content: application/json: schema: type: object example: data: - id: 1138 first_name: Tom last_name: Fisher email: bademail@example.com title: null company: null notes: null status: bounced custom_variables: [] lead_campaign_data: status: stopped status_reason: stopped_manually emails_sent: 1 replies: 0 opens: 0 interested: false overall_stats: emails_sent: 1 opens: 0 replies: 0 unique_replies: 0 unique_opens: 0 created_at: '2024-06-16T23:51:54.000000Z' updated_at: '2024-06-16T23:54:54.000000Z' - id: 1139 first_name: Cody last_name: Smith email: cody@emailguard.io title: null company: null notes: null status: unverified custom_variables: [] lead_campaign_data: status: stopped status_reason: stopped_manually emails_sent: 1 replies: 0 opens: 0 interested: false overall_stats: emails_sent: 1 opens: 0 replies: 0 unique_replies: 0 unique_opens: 0 created_at: '2024-06-16T23:51:54.000000Z' updated_at: '2024-06-16T23:53:56.000000Z' links: first: 'http://bison.test/api/campaigns/1/leads?page=1' last: 'http://bison.test/api/campaigns/1/leads?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/campaigns/1/leads?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/campaigns/1/leads' per_page: 15 to: 3 total: 3 properties: data: type: array example: - id: 1138 first_name: Tom last_name: Fisher email: bademail@example.com title: null company: null notes: null status: bounced custom_variables: [] lead_campaign_data: status: stopped status_reason: stopped_manually emails_sent: 1 replies: 0 opens: 0 interested: false overall_stats: emails_sent: 1 opens: 0 replies: 0 unique_replies: 0 unique_opens: 0 created_at: '2024-06-16T23:51:54.000000Z' updated_at: '2024-06-16T23:54:54.000000Z' - id: 1139 first_name: Cody last_name: Smith email: cody@emailguard.io title: null company: null notes: null status: unverified custom_variables: [] lead_campaign_data: status: stopped status_reason: stopped_manually emails_sent: 1 replies: 0 opens: 0 interested: false overall_stats: emails_sent: 1 opens: 0 replies: 0 unique_replies: 0 unique_opens: 0 created_at: '2024-06-16T23:51:54.000000Z' updated_at: '2024-06-16T23:53:56.000000Z' items: type: object properties: id: type: integer example: 1138 first_name: type: string example: Tom last_name: type: string example: Fisher email: type: string example: bademail@example.com title: type: string example: null nullable: true company: type: string example: null nullable: true notes: type: string example: null nullable: true status: type: string example: bounced custom_variables: type: array example: [] lead_campaign_data: type: object properties: status: type: string example: stopped status_reason: type: string example: stopped_manually emails_sent: type: integer example: 1 replies: type: integer example: 0 opens: type: integer example: 0 interested: type: boolean example: false overall_stats: type: object properties: emails_sent: type: integer example: 1 opens: type: integer example: 0 replies: type: integer example: 0 unique_replies: type: integer example: 0 unique_opens: type: integer example: 0 created_at: type: string example: '2024-06-16T23:51:54.000000Z' updated_at: type: string example: '2024-06-16T23:54:54.000000Z' links: type: object properties: first: type: string example: 'http://bison.test/api/campaigns/1/leads?page=1' last: type: string example: 'http://bison.test/api/campaigns/1/leads?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/campaigns/1/leads?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/campaigns/1/leads' per_page: type: integer example: 15 to: type: integer example: 3 total: type: integer example: 3 tags: - Campaigns delete: summary: 'Remove leads from a campaign' operationId: removeLeadsFromACampaign description: "This endpoint allows the authenticated user to remove leads from a campaign.\n\n**Hold on. You may not need to remove leads!**\nPlease read carefully before attempting to delete.\n\n**I mapped the wrong custom variables for these leads**\nNo problem! Simply re-upload the leads and we'll update the records in place. This is especially useful if you already have lead history like conversations, campaigns, etc.\n\n**I don't to email these leads in this campaign anymore**\nYou can simply click \"stop future emails\" instead.\n\nIf you want to stop them from being emailed in any campaign, we recommend unsubscribing these leads instead. Bulk select -> Update Status -> Unsubscribe. This way, you can preserve the lead history and stats for future reports.\n\n**I want to update these leads with more data**\nInstead of deleting, simply re-upload the leads. We'll update the records in place. This includes all campaign emails too. If you delete, their history in this campaign will be reset.\n\n**If you still want to remove them from the campaign, please read carefully below.**\n\n**All future scheduled emails in this campaign will be stopped (for these leads)**\nYour leads will no longer receive future emails from this campaign\n\n**Existing campaign stats (for these leads) will be retained**\nYou will still be able to pull data from this campaign for all past stats (eg. emails sent, replies received, etc.)\n\n**Lead conversations will remain**\nYou will still be able continue lead conversations through the master inbox\n\n**These leads will no longer be accessible via API (for this campaign)**\nYou will be responsible for your automations if you rely on cached or self-stored values for these leads\n\n**Future replies for these leads will not increment stats**\n**If you emailed these leads and they respond in the future after being removed, stats will not be incremented**\n\n**This action is permanent and cannot be reversed**\nIf you removed these leads by accident and try to re-add them, the history will be totally reset. This action is permanent." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: success: true message: 'Leads successfully removed from Campaign One.' properties: success: type: boolean example: true message: type: string example: 'Leads successfully removed from Campaign One.' tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: lead_ids: type: array description: 'An array of lead IDs to remove.' example: - 1 - 2 - 3 items: type: integer required: - lead_ids parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 1 required: true schema: type: integer '/api/campaigns/{campaign_id}/leads/attach-lead-list': post: summary: 'Import leads from existing list' operationId: importLeadsFromExistingList description: 'This endpoint allows the authenticated user to import leads from an existing list into a campaign.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Leads successfully imported to Campaign One.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Leads successfully imported to Campaign One.' tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: allow_parallel_sending: type: boolean description: 'Force add leads that are "In Sequence" in other campaigns.' example: true lead_list_id: type: integer description: 'The ID of the lead list to import.' example: 1 required: - lead_list_id parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 6 required: true schema: type: integer '/api/campaigns/{campaign_id}/leads/attach-leads': post: summary: 'Import leads by IDs' operationId: importLeadsByIDs description: "This endpoint allows the authenticated user to import leads by their IDs into a campaign.\n\nIf you are adding leads to an active campaign, we cache them locally, and then sync every\n5 minutes to ensure there is no interruption to your sending.\n\n**Important:** If you add leads into a \"reply followup campaign\" using this endpoint, we\nwill just start the conversation from **the last sent reply**. We recommend that you use\nthe more explicit `/replies/id/followup-campaign/push` endpoint to control exactly which\nconversation you want to follow up on." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Leads successfully added to Campaign One.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Leads successfully added to Campaign One.' tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: allow_parallel_sending: type: boolean description: 'Force add leads that are "In Sequence" in other campaigns.' example: true lead_ids: type: array description: 'An array of lead IDs to import.' example: - 1 - 2 - 3 items: type: integer required: - lead_ids parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 1 required: true schema: type: integer '/api/campaigns/{campaign_id}/leads/stop-future-emails': post: summary: 'Stop future emails for leads' operationId: stopFutureEmailsForLeads description: 'This endpoint allows the authenticated user to stop future emails for selected leads in a campaign' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Stopping future emails for selected leads in Blue Campaign.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Stopping future emails for selected leads in Blue Campaign.' tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: lead_ids: type: array description: 'An array of lead IDs to stop future emails for.' example: - 1 - 2 - 3 items: type: integer required: - lead_ids parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 18 required: true schema: type: integer '/api/campaigns/{campaign_id}/scheduled-emails': get: summary: 'Get all scheduled emails for campaign' operationId: getAllScheduledEmailsForCampaign description: "This endpoint retrieves all scheduled emails associated with a campaign.\n\nThis route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work" parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: - id: 1 thread_reply: true email_subject: 'First Subject' email_body: 'dummy email body' status: scheduled scheduled_date: '2024-11-25T15:30:00.000000Z' scheduled_date_local: '2024-11-25T15:30:00.000000Z' sent_at: null opens: 0 clicks: 0 replies: 0 interested: false unique_replies: 0 unique_opens: 0 lead: id: 1 first_name: John last_name: Doe email: john@doe.com title: Engineer company: 'John Doe company' notes: 'Important client' status: verified custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' sender_email: id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true - id: 1 thread_reply: true email_subject: 'Second Subject' email_body: 'dummy email body' status: sent scheduled_date: '2024-11-22T20:00:00.000000Z' scheduled_date_local: '2024-11-22T20:00:00.000000Z' sent_at: '2024-11-22T20:00:00.000000Z' opens: 2 clicks: 1 replies: 1 interested: true unique_replies: 0 unique_opens: 0 lead: id: 1 first_name: John last_name: Doe email: john@doe.com title: Engineer company: 'John Doe company' notes: 'Important client' status: verified custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' sender_email: id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true links: first: 'http://bison.test/api/campaigns/1/scheduled-emails?page=1' last: 'http://bison.test/api/campaigns/1/scheduled-emails?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/campaigns/1/scheduled-emails?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/campaigns/1/scheduled-emails' per_page: 15 to: 3 total: 3 properties: data: type: array example: - id: 1 thread_reply: true email_subject: 'First Subject' email_body: 'dummy email body' status: scheduled scheduled_date: '2024-11-25T15:30:00.000000Z' scheduled_date_local: '2024-11-25T15:30:00.000000Z' sent_at: null opens: 0 clicks: 0 replies: 0 interested: false unique_replies: 0 unique_opens: 0 lead: id: 1 first_name: John last_name: Doe email: john@doe.com title: Engineer company: 'John Doe company' notes: 'Important client' status: verified custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' sender_email: id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true - id: 1 thread_reply: true email_subject: 'Second Subject' email_body: 'dummy email body' status: sent scheduled_date: '2024-11-22T20:00:00.000000Z' scheduled_date_local: '2024-11-22T20:00:00.000000Z' sent_at: '2024-11-22T20:00:00.000000Z' opens: 2 clicks: 1 replies: 1 interested: true unique_replies: 0 unique_opens: 0 lead: id: 1 first_name: John last_name: Doe email: john@doe.com title: Engineer company: 'John Doe company' notes: 'Important client' status: verified custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' sender_email: id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true items: type: object properties: id: type: integer example: 1 thread_reply: type: boolean example: true email_subject: type: string example: 'First Subject' email_body: type: string example: 'dummy email body' status: type: string example: scheduled scheduled_date: type: string example: '2024-11-25T15:30:00.000000Z' scheduled_date_local: type: string example: '2024-11-25T15:30:00.000000Z' sent_at: type: string example: null nullable: true opens: type: integer example: 0 clicks: type: integer example: 0 replies: type: integer example: 0 interested: type: boolean example: false unique_replies: type: integer example: 0 unique_opens: type: integer example: 0 lead: type: object properties: id: type: integer example: 1 first_name: type: string example: John last_name: type: string example: Doe email: type: string example: john@doe.com title: type: string example: Engineer company: type: string example: 'John Doe company' notes: type: string example: 'Important client' status: type: string example: verified custom_variables: type: array example: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' items: type: object properties: name: type: string example: company_website value: type: string example: 'https://company.com' lead_campaign_data: type: array example: [] overall_stats: type: object properties: emails_sent: type: integer example: 3 opens: type: integer example: 0 replies: type: integer example: 1 unique_replies: type: integer example: 1 unique_opens: type: integer example: 0 created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' sender_email: type: object properties: id: type: integer example: 1 name: type: string example: 'John Doe' email: type: string example: john@doe.com email_signature: type: string example: '

John Doe | Consultant

' imap_server: type: string example: imap.server imap_port: type: integer example: 110 smtp_server: type: string example: smtp.server smtp_port: type: integer example: 112 daily_limit: type: integer example: 5 type: type: string example: Inbox status: type: string example: Connected emails_sent_count: type: integer example: 100 total_replied_count: type: integer example: 10 total_opened_count: type: integer example: 25 unsubscribed_count: type: integer example: 0 bounced_count: type: integer example: 0 unique_replied_count: type: integer example: 7 unique_opened_count: type: integer example: 7 total_leads_contacted_count: type: integer example: 50 interested_leads_count: type: integer example: 3 created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: type: array example: - id: 1 name: Google default: true items: type: object properties: id: type: integer example: 1 name: type: string example: Google default: type: boolean example: true links: type: object properties: first: type: string example: 'http://bison.test/api/campaigns/1/scheduled-emails?page=1' last: type: string example: 'http://bison.test/api/campaigns/1/scheduled-emails?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/campaigns/1/scheduled-emails?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/campaigns/1/scheduled-emails' per_page: type: integer example: 15 to: type: integer example: 3 total: type: integer example: 3 tags: - Campaigns requestBody: required: false content: application/json: schema: type: object properties: status: type: string description: '' example: paused enum: - scheduled - sent - failed - paused - stopped - bounced - unsubscribed nullable: true scheduled_date: type: string description: 'Must be a valid date.' example: '2026-10-08T16:12:23' nullable: true scheduled_date_local: type: string description: 'Must be a valid date.' example: '2026-10-08T16:12:23' nullable: true pagination_type: type: string description: '' example: cursor enum: - cursor - length_aware parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 4 required: true schema: type: integer '/api/campaigns/{campaign_id}/sender-emails': get: summary: 'Get all campaign sender emails' operationId: getAllCampaignSenderEmails description: "This route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work\n\nThis endpoint retrieves all email accounts (sender emails) associated with a campaign" parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 1,\n \"name\": \"John Doe\",\n \"email\": \"john@doe.com\",\n \"imap_server\": \"imap.server\",\n \"imap_port\": 110,\n \"smtp_server\": \"smtp.server\",\n \"smtp_port\": 112,\n \"daily_limit\": 5,\n \"type\": \"Inbox\",\n \"status\": \"Connected\",\n \"emails_sent_count\": 100,\n \"total_replied_count\": 10,\n \"total_opened_count\": 25,\n \"unsubscribed_count\": 0,\n \"bounced_count\": 0,\n \"unique_replied_count\": 7,\n \"unique_opened_count\": 7,\n \"total_leads_contacted_count\": 50,\n \"interested_leads_count\": 3,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"Google\",\n \"default\": true\n }\n ]\n },\n {\n \"id\": 2,\n \"name\": \"Jane Doe\",\n \"email\": \"jane@doe.com,\n \"imap_server\": \"imap.server\",\n \"imap_port\": 110,\n \"smtp_server\": \"smtp.server\",\n \"smtp_port\": 112,\n \"daily_limit\": 5,\n \"type\": \"Inbox\",\n \"status\": \"Connected\",\n \"emails_sent_count\": 100,\n \"total_replied_count\": 10,\n \"total_opened_count\": 25,\n \"unsubscribed_count\": 0,\n \"bounced_count\": 0,\n \"unique_replied_count\": 7,\n \"unique_opened_count\": 7,\n \"total_leads_contacted_count\": 50,\n \"interested_leads_count\": 3,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"Google\",\n \"default\": true\n }\n ]\n }\n ],\n \"links\": {\n \"first\": \"http://bison.test/api/campaigns/1/sender-emails?page=1\",\n \"last\": \"http://bison.test/api/campaigns/1/sender-emails?page=1\",\n \"prev\": null,\n \"next\": null\n },\n \"meta\": {\n \"current_page\": 1,\n \"from\": 1,\n \"last_page\": 1,\n \"links\": [\n {\n \"url\": null,\n \"label\": \"« Previous\",\n \"active\": false\n },\n {\n \"url\": \"http://bison.test/api/campaigns/1/sender-emails?page=1\",\n \"label\": \"1\",\n \"active\": true\n },\n {\n \"url\": null,\n \"label\": \"Next »\",\n \"active\": false\n }\n ],\n \"path\": \"http://bison.test/api/campaigns/1/sender-emails\",\n \"per_page\": 15,\n \"to\": 3,\n \"total\": 3\n }\n}" tags: - Campaigns requestBody: required: false content: application/json: schema: type: object properties: pagination_type: type: string description: '' example: length_aware enum: - cursor - length_aware parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 7 required: true schema: type: integer '/api/campaigns/{campaign_id}/stats': post: summary: 'Get campaign stats (summary)' operationId: getCampaignStatssummary description: 'This endpoint retrieves the statistics of all your campaigns.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: emails_sent: '10' total_leads_contacted: '5' opened: '5' opened_percentage: '50' unique_opens_per_contact: '5' unique_opens_per_contact_percentage: '50' unique_replies_per_contact: '5' unique_replies_per_contact_percentage: '50' bounced: '0' bounced_percentage: '0' unsubscribed: '5' unsubscribed_percentage: '50' interested: '5' interested_percentage: '50' sequence_step_stats: - sequence_step_id: 760 email_subject: 'vision check' sent: 1918 leads_contacted: 1918 unique_opens: 0 unique_replies: 15 unsubscribed: 4 bounced: 21 interested: 6 - sequence_step_id: 761 email_subject: 'Re: vision check' sent: 1884 leads_contacted: 1884 unique_opens: 0 unique_replies: 9 unsubscribed: 6 bounced: 5 interested: 1 properties: data: type: object properties: emails_sent: type: string example: '10' total_leads_contacted: type: string example: '5' opened: type: string example: '5' opened_percentage: type: string example: '50' unique_opens_per_contact: type: string example: '5' unique_opens_per_contact_percentage: type: string example: '50' unique_replies_per_contact: type: string example: '5' unique_replies_per_contact_percentage: type: string example: '50' bounced: type: string example: '0' bounced_percentage: type: string example: '0' unsubscribed: type: string example: '5' unsubscribed_percentage: type: string example: '50' interested: type: string example: '5' interested_percentage: type: string example: '50' sequence_step_stats: type: array example: - sequence_step_id: 760 email_subject: 'vision check' sent: 1918 leads_contacted: 1918 unique_opens: 0 unique_replies: 15 unsubscribed: 4 bounced: 21 interested: 6 - sequence_step_id: 761 email_subject: 'Re: vision check' sent: 1884 leads_contacted: 1884 unique_opens: 0 unique_replies: 9 unsubscribed: 6 bounced: 5 interested: 1 items: type: object properties: sequence_step_id: type: integer example: 760 email_subject: type: string example: 'vision check' sent: type: integer example: 1918 leads_contacted: type: integer example: 1918 unique_opens: type: integer example: 0 unique_replies: type: integer example: 15 unsubscribed: type: integer example: 4 bounced: type: integer example: 21 interested: type: integer example: 6 tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: start_date: type: string description: 'The start date to fetch stats.' example: '2024-07-01' end_date: type: string description: 'The end date to fetch stats.' example: '2024-07-19' required: - start_date - end_date parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 1 required: true schema: type: integer '/api/campaigns/{campaign_id}/attach-sender-emails': post: summary: 'Import sender emails by ID' operationId: importSenderEmailsByID description: 'This endpoint allows the authenticated user to attach sender emails to a campaign.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: success: true message: 'Sender emails successfully added to Campaign One.' properties: success: type: boolean example: true message: type: string example: 'Sender emails successfully added to Campaign One.' tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: sender_email_ids: type: array description: 'An array of sender emails IDs to attach.' example: - 1 - 2 - 3 items: type: string required: - sender_email_ids parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 5 required: true schema: type: integer '/api/campaigns/{campaign_id}/remove-sender-emails': delete: summary: 'Remove sender emails by ID' operationId: removeSenderEmailsByID description: 'This endpoint allows the authenticated user to remove sender emails from a draft or paused campaign.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: success: true message: 'Sender emails sent for deletion. This may take a moment.' properties: success: type: boolean example: true message: type: string example: 'Sender emails sent for deletion. This may take a moment.' tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: sender_email_ids: type: array description: 'An array of sender emails IDs to attach.' example: - 1 - 2 - 3 items: type: string required: - sender_email_ids parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 8 required: true schema: type: integer '/api/campaigns/{campaign_id}/leads/move-to-another-campaign': post: summary: 'Move leads to another campaign' operationId: moveLeadsToAnotherCampaign description: "This endpoint moves selected leads from a campaign to a selected target campaign.\nThis process may take a few minutes if the campaigns are active." parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"success\": true,\n \"message\": \"Moving 5 leads from 'Campaign 1' to 'Campaign 2'. This process may take a few minutes if moving between active campaigns.\"\n }" tags: - Campaigns requestBody: required: true content: application/json: schema: type: object properties: target_campaign_id: type: integer description: 'The ID of the campaign that leads will be moved to.' example: 10 lead_ids: type: array description: 'The array of lead IDs.' example: - 14 items: type: integer include_bounced_and_unsubscribed: type: boolean description: 'Whether to include bounced and unsubscribed leads.' example: false allow_parallel_sending: type: boolean description: 'Force add leads that are "In Sequence" in another campaign.' example: false required: - target_campaign_id - lead_ids parameters: - in: path name: campaign_id description: 'The ID of the original campaign.' example: 14 required: true schema: type: integer '/api/campaigns/{campaign_id}/line-area-chart-stats': get: summary: 'Get full normalized stats by date' operationId: getFullNormalizedStatsByDate description: "This endpoint retrieves stats by date for a given period, for this campaign\n\nThe user must provide a valid authentication token in the request header to access this endpoint.\n\nEvents returned: `Replied`, `Total Opens`, `Unique Opens`, `Sent`, `Bounced`, `Unsubscribed`, `Interested`" parameters: - in: query name: start_date description: 'The start date to fetch stats.' example: '2024-07-01' required: true schema: type: string description: 'The start date to fetch stats.' example: '2024-07-01' - in: query name: end_date description: 'The end date to fetch stats.' example: '2024-07-19' required: true schema: type: string description: 'The end date to fetch stats.' example: '2024-07-19' responses: 200: description: success content: application/json: schema: type: object example: data: - label: Replied color: '#f54842' dates: - - '2025-05-03' - 0 - label: 'Total Opens' color: '#00E396' dates: - - '2025-05-03' - 0 - label: Sent color: '#3B82F6' dates: - - '2025-05-03' - 0 - label: Unsubscribed color: '#fffff2' dates: - - '2025-05-03' - 0 - label: Bounced color: '#fffff1' dates: - - '2025-05-03' - 0 - label: Interested color: '#fffff3' dates: - - '2025-05-03' - 0 - label: 'Unique Opens' color: '#00d0ff' dates: - - '2025-05-03' - 0 properties: data: type: array example: - label: Replied color: '#f54842' dates: - - '2025-05-03' - 0 - label: 'Total Opens' color: '#00E396' dates: - - '2025-05-03' - 0 - label: Sent color: '#3B82F6' dates: - - '2025-05-03' - 0 - label: Unsubscribed color: '#fffff2' dates: - - '2025-05-03' - 0 - label: Bounced color: '#fffff1' dates: - - '2025-05-03' - 0 - label: Interested color: '#fffff3' dates: - - '2025-05-03' - 0 - label: 'Unique Opens' color: '#00d0ff' dates: - - '2025-05-03' - 0 items: type: object properties: label: type: string example: Replied color: type: string example: '#f54842' dates: type: array example: - - '2025-05-03' - 0 items: type: array tags: - Campaigns parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 1 required: true schema: type: integer '/api/campaigns/{id}': get: summary: 'Campaign details' operationId: campaignDetails description: 'This endpoint retrieves the details of a specific campaign.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"uuid\": \"9h8ef374-e986-4221-b432-2902b4826r83\",\n \"name\": \"John Doe Campaign\",\n \"type\": \"outbound\",\n \"status\": \"Active\",\n \"completion_percentage\": 45.23,\n \"emails_sent\": 7,\n \"opened\": 2,\n \"unique_opens\": 1,\n \"replied\": 2,\n \"unique_replies\": 1,\n \"bounced\": 1,\n \"unsubscribed\": 2,\n \"interested\": 3,\n \"total_leads_contacted\": 7,\n \"total_leads\": 10,\n \"max_emails_per_day\": 7,\n \"max_new_leads_per_day\": 2,\n \"plain_text\": true,\n \"open_tracking\": false,\n \"sequence_prioritization\": new_leads,\n \"daily_max_sends_per_receiving_domain\": 25,\n \"can_unsubscribe\": true,\n \"unsubscribe_text\": \"Unsubscribe here\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\",\n \"tags\": [\n {\n \"id\": 1,\n \"name\": \"VIP\",\n \"default\": false\n }\n ]" tags: - Campaigns parameters: - in: path name: id description: 'The ID of the campaign.' example: 17 required: true schema: type: integer /api/campaigns/bulk: delete: summary: 'Bulk delete campaigns by ID' operationId: bulkDeleteCampaignsByID description: "This endpoint allows the authenticated user to bulk delete campaigns.\nCampaign deletion is queued up and processed in the background.\n\n*Overall stats and lead conversations will not be affected**\n You will still be able to take part in conversations from leads from these campaigns, in the master inbox.\n\n **Your campaigns will no longer be accessible via API**\n You may have automations with hard-coded campaign IDs that may no longer work. Please ensure that you only poll for campaigns that exist.\n\n **Future responses for these campaigns will still be captured**\n We will still main a link to this campaign for any future received responses, but there will be no stat increments.\n\n **This action is permanent and cannot be reversed**\n Please only delete campaigns if you are sure you never want to see them again. Once deleted, they can no longer be recovered." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'The selected campaigns have been queued for deletion.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'The selected campaigns have been queued for deletion.' tags: - Campaigns requestBody: required: false content: application/json: schema: type: object properties: campaign_ids: type: array description: 'Array of campaign IDs' example: - 16 items: type: integer '/api/campaigns/{campaign_id}': delete: summary: 'Delete a campaign' operationId: deleteACampaign description: "This endpoint allows the authenticated user to delete a campaign.\nCampaign deletion is queued up and processed in the background.\n\n**Overall stats and lead conversations will not be affected**\nYou will still be able to take part in conversations from leads from these campaigns, in the master inbox.\n\n**Your campaigns will no longer be accessible via API**\nYou may have automations with hard-coded campaign IDs that may no longer work. Please ensure that you only poll for campaigns that exist.\n\n**Future responses for these campaigns will still be captured**\nWe will still main a link to this campaign for any future received responses, but there will be no stat increments.\n\n**This action is permanent and cannot be reversed**\nPlease only delete campaigns if you are sure you never want to see them again. Once deleted, they can no longer be recovered." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Campaign One has been queued for deletion.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Campaign One has been queued for deletion.' tags: - Campaigns parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 15 required: true schema: type: integer /api/replies: get: summary: 'Get all replies' operationId: getAllReplies description: "This route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work\n\nThis endpoint retrieves all replies for the authenticated user.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: - in: query name: search description: 'Search term for filtering replies.' example: interested required: false schema: type: string description: 'Search term for filtering replies.' example: interested nullable: true - in: query name: status description: 'Filter by status. One of `interested`, `automated_reply`, `not_automated_reply`.' example: automated_reply required: false schema: type: string description: 'Filter by status. One of `interested`, `automated_reply`, `not_automated_reply`.' example: automated_reply - in: query name: folder description: 'Filter by folder. One of `inbox`, `sent`, `spam`, `bounced`, `all`.' example: inbox required: false schema: type: string description: 'Filter by folder. One of `inbox`, `sent`, `spam`, `bounced`, `all`.' example: inbox - in: query name: read description: 'Filter by read status.' example: true required: false schema: type: boolean description: 'Filter by read status.' example: true nullable: true - in: query name: campaign_id description: 'The ID of the campaign.' example: 12 required: false schema: type: integer description: 'The ID of the campaign.' example: 12 - in: query name: sender_email_id description: 'The ID of the sender email address.' example: 243 required: false schema: type: integer description: 'The ID of the sender email address.' example: 243 - in: query name: lead_id description: 'Must match an existing stored value.' example: 12 required: false schema: type: integer description: 'Must match an existing stored value.' example: 12 - in: query name: tag_ids description: 'Array of tag IDs to filter by.' example: - 1 - 2 - 3 required: false schema: type: array description: 'Array of tag IDs to filter by.' example: - 1 - 2 - 3 items: type: integer - in: query name: pagination_type description: '' example: length_aware required: false schema: type: string description: '' example: length_aware enum: - cursor - length_aware responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 45,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Inbox\",\n \"subject\": \"yo test boy wassup G\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"
yo whats good essssssey
\",\n \"text_body\": \"yo whats good essssssey\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-09-21T02:10:42.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": 12581,\n \"campaign_id\": 21,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": 25057,\n \"raw_message_id\": \"\",\n \"from_name\": \"Cody Smith\",\n \"from_email_address\": \"cody@emailguard.io\",\n \"primary_to_email_address\": \"usysows3w88c6ljx@eguardtest.com\",\n \"to\": [\n {\n \"name\": \"Chimma Tester\",\n \"address\": \"usysows3w88c6ljx@eguardtest.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": null,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 45,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n }\n ],\n \"links\": {\n \"first\": \"http://bison.test/api/replies?page=1\",\n \"last\": \"http://bison.test/api/replies?page=1\",\n \"prev\": null,\n \"next\": null\n },\n \"meta\": {\n \"current_page\": 1,\n \"from\": 1,\n \"last_page\": 1,\n \"links\": [\n {\n \"url\": null,\n \"label\": \"« Previous\",\n \"active\": false\n },\n {\n \"url\": \"http://bison.test/api/replies?page=1\",\n \"label\": \"1\",\n \"active\": true\n },\n {\n \"url\": null,\n \"label\": \"Next »\",\n \"active\": false\n }\n ],\n \"path\": \"http://bison.test/api/replies\",\n \"per_page\": 15,\n \"to\": 3,\n \"total\": 3\n }\n}" tags: - Replies '/api/replies/{id}': get: summary: 'Get reply' operationId: getReply description: "This endpoint retrieves a specific reply by its ID.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 45,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Inbox\",\n \"subject\": \"yo test boy wassup G\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"
yo whats good essssssey
\",\n \"text_body\": \"yo whats good essssssey\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-09-21T02:10:42.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": 25057,\n \"raw_message_id\": \"\",\n \"from_name\": \"Cody Smith\",\n \"from_email_address\": \"cody@emailguard.io\",\n \"primary_to_email_address\": \"usysows3w88c6ljx@eguardtest.com\",\n \"to\": [\n {\n \"name\": \"Chimma Tester\",\n \"address\": \"usysows3w88c6ljx@eguardtest.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": null,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 45,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n }\n}" tags: - Replies parameters: - in: path name: id description: 'The ID of the reply.' example: 9 required: true schema: type: integer /api/replies/new: post: summary: 'Compose new email' operationId: composeNewEmail description: "This endpoint allows you to send a one-off email in a new email thread\n\nThe user must provide a valid authentication token in the request header to access this endpoint.\n\nPlease note that if you are sending an array of file attachments, your request must include\na header of \"Content-Type\": \"multipart/form-data\". Otherwise your file attachments will not be processed." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"success\": true,\n \"message\": \"Successfully sent email\",\n \"reply\": {\n \"id\": 239,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Sent\",\n \"subject\": \"Email 3: Lab Cleanup Reminder\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"

\\nHey Ross, \\n

\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n

\\nThanks,
\\nTeddy Frank\\n

\\nqvwy7276 qvwy7276\\n

\",\n \"text_body\": \"Hey Ross, \\n\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n\\nThanks,\\nTeddy Frank\\n\\nqvwy7276 qvwy7276\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-12-01T03:43:15.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": 25065,\n \"raw_message_id\": \"<9d9e1e18-00bf-4a95-ad2e-2053189e421a@bisonemails.com>\",\n \"from_name\": \"Teddy Frank\",\n \"from_email_address\": \"teddy.frank@bisonemails.com\",\n \"primary_to_email_address\": \"ross.rhea@bisonemails.com\",\n \"to\": [\n {\n \"name\": \"Ross Rhea\",\n \"address\": \"ross.rhea@bisonemails.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": 238,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 239,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n }\n }\n}" tags: - Replies requestBody: required: true content: application/json: schema: type: object properties: subject: type: string description: 'The subject of the email' example: 'Quick question' nullable: true message: type: string description: 'The contents of the reply' example: 'How are you doing?' sender_email_id: type: integer description: 'Must match an existing stored value.' example: 5 use_dedicated_ips: type: boolean description: 'Send using the dedicated campaign IPs instead of the instance IP' example: true content_type: type: string description: 'Type of the email (html or text)' example: html to_emails: type: array description: 'Array of people to send this email to.' example: - name: 'John Doe' email_address: john@example.com items: type: object properties: name: type: string|null description: 'Name of the person (can be null)' example: laboriosam nullable: true email_address: type: string description: '' example: '"john@example.com"' cc_emails: type: array description: '' example: null items: type: object properties: name: type: string description: '' example: null nullable: true email_address: type: string description: 'Must be a valid email address.' example: lyla.towne@example.net required: - email_address bcc_emails: type: array description: '' example: null items: type: object properties: name: type: string description: '' example: null nullable: true email_address: type: string description: 'Must be a valid email address.' example: wbarton@example.net required: - email_address attachments: type: array description: 'optional Array of multi-part files that you want to attach. Combined max size: 25MB, individual max size: 10MB.' example: null items: type: string required: - sender_email_id '/api/replies/{reply_id}/reply': post: summary: 'Create new reply' operationId: createNewReply description: "This endpoint allows you to reply to an existing email.\n\nThe user must provide a valid authentication token in the request header to access this endpoint.\n\nPlease note that if you are sending an array of file attachments, your request must include\na header of \"Content-Type\": \"multipart/form-data\". Otherwise your file attachments will not be processed." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"success\": true,\n \"message\": \"Successfully sent email\",\n \"reply\": {\n \"id\": 239,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Sent\",\n \"subject\": \"Email 3: Lab Cleanup Reminder\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"

\\nHey Ross, \\n

\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n

\\nThanks,
\\nTeddy Frank\\n

\\nqvwy7276 qvwy7276\\n

\",\n \"text_body\": \"Hey Ross, \\n\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n\\nThanks,\\nTeddy Frank\\n\\nqvwy7276 qvwy7276\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-12-01T03:43:15.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": null,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": 25065,\n \"raw_message_id\": \"<9d9e1e18-00bf-4a95-ad2e-2053189e421a@bisonemails.com>\",\n \"from_name\": \"Teddy Frank\",\n \"from_email_address\": \"teddy.frank@bisonemails.com\",\n \"primary_to_email_address\": \"ross.rhea@bisonemails.com\",\n \"to\": [\n {\n \"name\": \"Ross Rhea\",\n \"address\": \"ross.rhea@bisonemails.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": 238,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 45,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n }\n }\n}" tags: - Replies requestBody: required: true content: application/json: schema: type: object properties: reply_all: type: boolean description: 'If set to true, automatically choose the correct sender email, and add the recipients from the original reply. Explicitly passing in `sender_email_id` will overwrite the chosen sender email, and recipients passed in `to_emails` or "cc_emails" will be appended.' example: true inject_previous_email_body: type: boolean description: 'Whether to inject the body of the previous email into this email' example: true nullable: true message: type: required description: 'string The contents of the reply' example: 'How are you doing?' reply_template_id: type: optional description: 'int The reply template ID that you want to use for this reply.' example: '123' use_dedicated_ips: type: boolean description: 'Send using the dedicated campaign IPs instead of the instance IP' example: true sender_email_id: type: required description: 'integer The ID of the sender email. Not required if `reply_all` is set to true. If `reply_all` is set to true and this parameter is passed, this parameter takes priority.' example: '139' content_type: type: string description: 'Type of the email (html or text)' example: html to_emails: type: array description: 'Array of people to send this email to. Not required if `reply_all` is set to true. If `reply_all` is set to true and this parameter is passed, the recipients will be appended. Duplicate recipients are ignored.' example: - name: 'John Doe' email_address: john@example.com items: type: object properties: name: type: string|null description: 'Name of the person (can be null)' example: odit nullable: true email_address: type: string description: '' example: '"john@example.com"' required: - email_address cc_emails: type: array description: 'An array of people to send a copy of this email to (Carbon Copy). If `reply_all` is set to true and this parameter is passed, the recipients will be appended. Duplicate recipients are ignored.' example: - name: 'John Doe' email_address: john@example.com items: type: object properties: name: type: string|null description: 'The name of the person receiving the email (optional).' example: '"John Doe" or `null` if not provided.' nullable: true email_address: type: string description: 'The email address of the recipient.' example: '"john@example.com"' required: - email_address bcc_emails: type: array description: 'An array of people to send a blind copy of this email to (Blind Carbon Copy).' example: - name: 'Jane Doe' email_address: jane@example.com items: type: object properties: name: type: string|null description: 'The name of the person receiving the email (optional).' example: '"Jane Doe" or `null` if not provided.' nullable: true email_address: type: string description: 'The email address of the recipient.' example: '"jane@example.com"' required: - email_address attachments: type: array description: 'optional Array of multi-part files that you want to attach. Combined max size: 25MB, individual max size: 10MB.' example: null items: type: string required: - to_emails parameters: - in: path name: reply_id description: 'The ID of the parent reply.' example: 3 required: true schema: type: integer '/api/replies/{reply_id}/forward': post: summary: 'Forward reply' operationId: forwardReply description: "This endpoint allows you to forward an existing reply.\n\nThe user must provide a valid authentication token in the request header to access this endpoint.\n\n Please note that if you are sending an array of file attachments, your request must include\n a header of \"Content-Type\": \"multipart/form-data\". Otherwise your file attachments will not be processed." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"success\": true,\n \"message\": \"Successfully sent email\",\n \"reply\": {\n \"id\": 239,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Sent\",\n \"subject\": \"Email 3: Lab Cleanup Reminder\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"

\\nHey Ross, \\n

\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n

\\nThanks,
\\nTeddy Frank\\n

\\nqvwy7276 qvwy7276\\n

\",\n \"text_body\": \"Hey Ross, \\n\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n\\nThanks,\\nTeddy Frank\\n\\nqvwy7276 qvwy7276\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-12-01T03:43:15.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": 25065,\n \"raw_message_id\": \"<9d9e1e18-00bf-4a95-ad2e-2053189e421a@bisonemails.com>\",\n \"from_name\": \"Teddy Frank\",\n \"from_email_address\": \"teddy.frank@bisonemails.com\",\n \"primary_to_email_address\": \"ross.rhea@bisonemails.com\",\n \"to\": [\n {\n \"name\": \"Ross Rhea\",\n \"address\": \"ross.rhea@bisonemails.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": 238,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 45,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n }\n }\n}" tags: - Replies requestBody: required: false content: application/json: schema: type: object properties: reply_all: type: boolean description: '' example: false inject_previous_email_body: type: boolean description: 'Whether to inject the body of the previous email into this email' example: true nullable: true message: type: string description: 'The contents of the reply' example: 'How are you doing?' reply_template_id: type: optional description: 'int The reply template ID that you want to use for this reply.' example: '123' use_dedicated_ips: type: boolean description: 'Send using the dedicated campaign IPs instead of the instance IP' example: true sender_email_id: type: integer description: 'This field is required unless reply_all is in true. Must match an existing stored value.' example: 3 content_type: type: string description: 'Type of the email (html or text)' example: html to_emails: type: array description: 'Array of people to send this email to.' example: - name: 'John Doe' email_address: john@example.com items: type: object properties: name: type: string|null description: 'Name of the person (can be null)' example: neque nullable: true email_address: type: string description: '' example: '"john@example.com"' cc_emails: type: array description: '' example: null items: type: object properties: name: type: string description: '' example: null nullable: true email_address: type: string description: 'Must be a valid email address.' example: nicolas.cleta@example.org required: - email_address bcc_emails: type: array description: '' example: null items: type: object properties: name: type: string description: '' example: null nullable: true email_address: type: string description: 'Must be a valid email address.' example: michaela.hessel@example.com required: - email_address attachments: type: array description: 'optional Array of multi-part files that you want to attach. Combined max size: 25MB, individual max size: 10MB.' example: null items: type: string parameters: - in: path name: reply_id description: 'The ID of the parent reply.' example: 10 required: true schema: type: integer '/api/replies/{reply_id}/mark-as-interested': patch: summary: 'Mark as interested' operationId: markAsInterested description: "This endpoint marks a specific reply as interested. If a particular lead is\nalready marked as \"interested\" within a campaign, no changes will be made.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 239,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Sent\",\n \"subject\": \"Email 3: Lab Cleanup Reminder\",\n \"read\": false,\n \"interested\": true,\n \"automated_reply\": false,\n \"html_body\": \"

\\nHey Ross, \\n

\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n

\\nThanks,
\\nTeddy Frank\\n

\\nqvwy7276 qvwy7276\\n

\",\n \"text_body\": \"Hey Ross, \\n\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n\\nThanks,\\nTeddy Frank\\n\\nqvwy7276 qvwy7276\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-12-01T03:43:15.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": 25065,\n \"raw_message_id\": \"<9d9e1e18-00bf-4a95-ad2e-2053189e421a@bisonemails.com>\",\n \"from_name\": \"Teddy Frank\",\n \"from_email_address\": \"teddy.frank@bisonemails.com\",\n \"primary_to_email_address\": \"ross.rhea@bisonemails.com\",\n \"to\": [\n {\n \"name\": \"Ross Rhea\",\n \"address\": \"ross.rhea@bisonemails.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": 238,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 45,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n }\n}" tags: - Replies requestBody: required: false content: application/json: schema: type: object properties: skip_webhooks: type: boolean description: 'If set to true, no webhooks will be fired for this action.' example: true parameters: - in: path name: reply_id description: 'The ID of the reply.' example: 8 required: true schema: type: integer '/api/replies/{reply_id}/mark-as-not-interested': patch: summary: 'Mark as not interested' operationId: markAsNotInterested description: "This endpoint marks a specific reply as not interested.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 239,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Sent\",\n \"subject\": \"Email 3: Lab Cleanup Reminder\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"

\\nHey Ross, \\n

\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n

\\nThanks,
\\nTeddy Frank\\n

\\nqvwy7276 qvwy7276\\n

\",\n \"text_body\": \"Hey Ross, \\n\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n\\nThanks,\\nTeddy Frank\\n\\nqvwy7276 qvwy7276\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-12-01T03:43:15.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": 25065,\n \"raw_message_id\": \"<9d9e1e18-00bf-4a95-ad2e-2053189e421a@bisonemails.com>\",\n \"from_name\": \"Teddy Frank\",\n \"from_email_address\": \"teddy.frank@bisonemails.com\",\n \"primary_to_email_address\": \"ross.rhea@bisonemails.com\",\n \"to\": [\n {\n \"name\": \"Ross Rhea\",\n \"address\": \"ross.rhea@bisonemails.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": 238,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 45,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n }\n}" tags: - Replies requestBody: required: false content: application/json: schema: type: object properties: skip_webhooks: type: boolean description: 'If set to true, no webhooks will be fired for this action.' example: true parameters: - in: path name: reply_id description: 'The ID of the reply.' example: 20 required: true schema: type: integer '/api/replies/{reply_id}/mark-as-read-or-unread': patch: summary: 'Mark as read or unread' operationId: markAsReadOrUnread description: "This endpoint marks a specific reply as read or unread.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 239,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Sent\",\n \"subject\": \"Email 3: Lab Cleanup Reminder\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"

\\nHey Ross, \\n

\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n

\\nThanks,
\\nTeddy Frank\\n

\\nqvwy7276 qvwy7276\\n

\",\n \"text_body\": \"Hey Ross, \\n\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n\\nThanks,\\nTeddy Frank\\n\\nqvwy7276 qvwy7276\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-12-01T03:43:15.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": null,\n \"lead\": null,\n \"sender_email_id\": 25065,\n \"raw_message_id\": \"<9d9e1e18-00bf-4a95-ad2e-2053189e421a@bisonemails.com>\",\n \"from_name\": \"Teddy Frank\",\n \"from_email_address\": \"teddy.frank@bisonemails.com\",\n \"primary_to_email_address\": \"ross.rhea@bisonemails.com\",\n \"to\": [\n {\n \"name\": \"Ross Rhea\",\n \"address\": \"ross.rhea@bisonemails.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": 238,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 45,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n }\n}" tags: - Replies requestBody: required: true content: application/json: schema: type: object properties: read: type: boolean description: 'Whether to set mark the reply as read or unread.' example: true required: - read parameters: - in: path name: reply_id description: 'The ID of the reply.' example: 17 required: true schema: type: integer '/api/replies/{reply_id}/mark-as-automated-or-not-automated': patch: summary: 'Mark as automated or not automated' operationId: markAsAutomatedOrNotAutomated description: "This endpoint marks a specific reply as automated or not automated.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 239,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Sent\",\n \"subject\": \"Email 3: Lab Cleanup Reminder\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"

\\nHey Ross, \\n

\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n

\\nThanks,
\\nTeddy Frank\\n

\\nqvwy7276 qvwy7276\\n

\",\n \"text_body\": \"Hey Ross, \\n\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n\\nThanks,\\nTeddy Frank\\n\\nqvwy7276 qvwy7276\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-12-01T03:43:15.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": 25065,\n \"raw_message_id\": \"<9d9e1e18-00bf-4a95-ad2e-2053189e421a@bisonemails.com>\",\n \"from_name\": \"Teddy Frank\",\n \"from_email_address\": \"teddy.frank@bisonemails.com\",\n \"primary_to_email_address\": \"ross.rhea@bisonemails.com\",\n \"to\": [\n {\n \"name\": \"Ross Rhea\",\n \"address\": \"ross.rhea@bisonemails.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": 238,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 45,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n }\n}" tags: - Replies requestBody: required: true content: application/json: schema: type: object properties: automated: type: boolean description: 'Whether to mark the reply as automated or not automated.' example: false required: - automated parameters: - in: path name: reply_id description: 'The ID of the reply.' example: 15 required: true schema: type: integer '/api/replies/{reply_id}/unsubscribe': patch: summary: 'Unsubscribe contact that replied' operationId: unsubscribeContactThatReplied description: "This endpoint unsubscribes the contact associated with a specific reply from scheduled emails.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"message\": \"Contact unsubscribed successfully\",\n \"success\": true,\n }\n}" tags: - Replies parameters: - in: path name: reply_id description: 'The ID of the reply.' example: 7 required: true schema: type: integer '/api/replies/{reply_id}': delete: summary: 'Delete reply' operationId: deleteReply description: "This endpoint deletes a specific reply by its ID.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"message\": \"Reply deleted successfully\"\n \"success\": true,\n}" tags: - Replies parameters: - in: path name: reply_id description: 'The ID of the reply.' example: 10 required: true schema: type: integer '/api/replies/{reply_id}/conversation-thread': get: summary: 'Get reply conversation thread' operationId: getReplyConversationThread description: "This endpoint gets you a reply object with all previous and newer messages to build out an email thread\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n\"data\": {\n \"current_reply\": {\n \"id\": 239,\n \"uuid\": \"8d7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Inbox\",\n \"subject\": \"Email 3: Lab Cleanup Reminder\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"

\\nHey Ross, \\n

\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n

\\nThanks,
\\nTeddy Frank\\n

\\nqvwy7276 qvwy7276\\n

\",\n \"text_body\": \"Hey Ross, \\n\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n\\nThanks,\\nTeddy Frank\\n\\nqvwy7276 qvwy7276\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-12-01T03:43:15.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": 25065,\n \"raw_message_id\": \"<9d9e1e18-00bf-4a95-ad2e-2053189e421a@bisonemails.com>\",\n \"from_name\": \"Teddy Frank\",\n \"from_email_address\": \"teddy.frank@bisonemails.com\",\n \"primary_to_email_address\": \"ross.rhea@bisonemails.com\",\n \"to\": [\n {\n \"name\": \"Ross Rhea\",\n \"address\": \"ross.rhea@bisonemails.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": 238,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 239,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n \"older_messages\": [\n {\n \"id\": 237,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Inbox\",\n \"subject\": \"When should I call?\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"
yo tingz big big whats good

On Sun, Feb 23, 2025 at 9:27 PM Autumn Coleman <autumn.coleman@lunar.gleaper.com> wrote:
yo sup this is the first big boy one ya hear?
\\n\\n
\",\n \"text_body\": \"Hey Eric,\\n\\nI was wondering if you might be interested in trying out our new service.\\n\\nHere's an article I wrote about your industry and would love to include in my upcoming newsletter.\\n\\nI'm glad that we had a chance to speak today.\\n\\nCheers,\\nCrystal Webb\\n\\nCharcoalksdjc MC40QVD\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-11-28T21:09:11.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": null,\n \"raw_message_id\": \"\",\n \"from_name\": \"Crystal Webb\",\n \"from_email_address\": \"test2@bisonfrom.org\",\n \"primary_to_email_address\": \"test@bisontest.com\",\n \"to\": [\n {\n \"name\": \"bisontest\",\n \"address\": \"test@bisontest.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": null,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 237,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n {\n \"id\": 238,\n \"uuid\": \"6r7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Inbox\",\n \"subject\": \"Bison, interested in learning more?\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"
yo tingz big big whats good

On Sun, Feb 23, 2025 at 9:27 PM Autumn Coleman <autumn.coleman@lunar.gleaper.com> wrote:
yo sup this is the first big boy one ya hear?
\\n\\n
\",\n \"text_body\": \"Eric -\\n\\nI’m sorry, I don’t have time right now. Let’s do it later this week?\\n\\nRegards,\\nsophia sophia\\n\\n18TYTMH MC40QVD\\n\\n\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-11-28T19:37:39.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": null,\n \"raw_message_id\": \"

\\nHey Ross, \\n

\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n

\\nThanks,
\\nTeddy Frank\\n

\\nqvwy7276 qvwy7276\\n

\",\n \"text_body\": \"Hey Ross, \\n\\nDon’t forget about the weekly lab cleanup tomorrow. Please ensure all your materials are stored away, and any spills are cleaned up right away.\\\\n\\\\nP.S. In 1963, Alfred Hitchcock released 'The Birds,' which became one of the most iconic thriller films in history.\\n\\nThanks,\\nTeddy Frank\\n\\nqvwy7276 qvwy7276\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-12-01T03:43:15.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": null,\n \"lead_id\": 150444,\n \"lead\": {\n \"id\": 150444,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Vice President\",\n \"company\": \"Blue Science\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone_number\",\n \"value\": \"123-456-7890\"\n }\n ],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2026-01-14T02:54:56.000000Z\",\n \"updated_at\": \"2026-01-21T17:15:38.000000Z\"\n },\n \"sender_email_id\": 25065,\n \"raw_message_id\": \"<9d9e1e18-00bf-4a95-ad2e-2053189e421a@bisonemails.com>\",\n \"from_name\": \"Teddy Frank\",\n \"from_email_address\": \"teddy.frank@bisonemails.com\",\n \"primary_to_email_address\": \"test@bisontest.com\",\n \"to\": [\n {\n \"name\": \"Bison Test\",\n \"address\": \"test@bisontest.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": 239,\n \"attachments\": [\n {\n \"id\": 8,\n \"status\": \"processed\",\n \"uuid\": \"9f2e5a48-5ed6-4021-ae32-66e61908173d\",\n \"reply_id\": 240,\n \"file_name\": \"sample.pdf\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n },\n ]\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n }\n ]\n }\n}" tags: - Replies parameters: - in: path name: reply_id description: 'The ID of the reply.' example: 10 required: true schema: type: integer '/api/replies/{reply_id}/attach-scheduled-email-to-reply': post: summary: 'Attach scheduled email to reply' operationId: attachScheduledEmailToReply description: "This endpoint attaches a scheduled email to a reply (and lead). You can use this for untracked replies where\nheaders may have been missing when the email was received. This will take care of incrementing all stats too." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Scheduled email successfully attached to reply' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Scheduled email successfully attached to reply' tags: - Replies requestBody: required: true content: application/json: schema: type: object properties: scheduled_email_id: type: integer description: 'The ID of the scheduled email.' example: 12 required: - scheduled_email_id parameters: - in: path name: reply_id description: 'The ID of the reply.' example: 2 required: true schema: type: integer '/api/replies/{reply_id}/followup-campaign/push': post: summary: 'Push reply (and lead) to "reply followup campaign"' operationId: pushReplyandLeadToreplyFollowupCampaign description: "This endpoint lets you push a reply to a \"reply followup campaign\"\nThe goal is to followup with interested leads in a templated, automated manner.\nFollowups are done in the same conversation thread, and we take the last message from the\nconversation to continue the process.\n\nCaveats: the reply must have a sender email attached. If you deleted a sender email, then you\nwill need to add this lead into a separate outbound campaign since we cannot send an email in the same thread." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Adding lead to followup campaign. This may take a moment to process.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Adding lead to followup campaign. This may take a moment to process.' tags: - Replies requestBody: required: true content: application/json: schema: type: object properties: campaign_id: type: integer description: 'The ID of the followup campaign' example: 14 force_add_reply: type: boolean description: "optional Set this to true if you want to ignore the lead's unsubscribed or bounced status" example: true required: - campaign_id parameters: - in: path name: reply_id description: 'The ID of the reply' example: 10 required: true schema: type: integer /api/sender-emails: get: summary: 'List email accounts' operationId: listEmailAccounts description: "Retrieves a collection of email accounts associated with the authenticated workspace.\n\nThis route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work" parameters: - in: query name: search description: 'Search term for filter by.' example: johndoe@gmail.com required: false schema: type: string description: 'Search term for filter by.' example: johndoe@gmail.com nullable: true - in: query name: tag_ids description: 'Array of tag IDs to filter by.' example: - 1 - 2 - 3 required: false schema: type: array description: 'Array of tag IDs to filter by.' example: - 1 - 2 - 3 items: type: integer - in: query name: excluded_tag_ids description: 'Exclude email accounts by tag IDs.' example: - 1 - 2 - 3 required: false schema: type: array description: 'Exclude email accounts by tag IDs.' example: - 1 - 2 - 3 items: type: integer - in: query name: without_tags description: 'Only show email accounts that have no tags attached.' example: true required: false schema: type: boolean description: 'Only show email accounts that have no tags attached.' example: true - in: query name: status description: 'The status of the email account.' example: not_connected required: false schema: type: string description: 'The status of the email account.' example: not_connected enum: - connected - not_connected - pending_move - pending_deletion - in: query name: warmup_score_filter description: 'Filter by cached warmup score values. This is a convenience filter. If you want exact scores, please refer to the `Warmup` API resource.' example: - enim required: false schema: type: array description: 'Filter by cached warmup score values. This is a convenience filter. If you want exact scores, please refer to the `Warmup` API resource.' example: - enim items: type: string - in: query name: warmup_score_filter.warmup_score_day_period description: 'Cached date period One of `warmup_score_last_3_days`, `warmup_score_last_7_days`, `warmup_score_last_10_days`, `warmup_score_last_14_days`, `warmup_score_last_30_days`' example: warmup_score_last_14_days required: false schema: type: string description: 'Cached date period One of `warmup_score_last_3_days`, `warmup_score_last_7_days`, `warmup_score_last_10_days`, `warmup_score_last_14_days`, `warmup_score_last_30_days`' example: warmup_score_last_14_days - in: query name: warmup_score_filter.warmup_score_filtering_criteria description: 'Comparison operator for warmup score. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>=' required: false schema: type: string description: 'Comparison operator for warmup score. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>=' - in: query name: warmup_score_filter.warmup_score_value description: 'Value for the warmup score.' example: 90 required: false schema: type: integer description: 'Value for the warmup score.' example: 90 - in: query name: pagination_type description: '' example: length_aware required: false schema: type: string description: '' example: length_aware enum: - cursor - length_aware responses: 200: description: success content: application/json: schema: type: object example: data: - id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected warmup_enabled: true emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true - id: 2 name: 'Jane Doe' email: jane@doe.com email_signature: '

Jane Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected warmup_enabled: true emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true links: first: 'http://bison.test/api/sender-emails?page=1' last: 'http://bison.test/api/sender-emails?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/sender-emails?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/sender-emails' per_page: 15 to: 3 total: 3 properties: data: type: array example: - id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected warmup_enabled: true emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true - id: 2 name: 'Jane Doe' email: jane@doe.com email_signature: '

Jane Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected warmup_enabled: true emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true items: type: object properties: id: type: integer example: 1 name: type: string example: 'John Doe' email: type: string example: john@doe.com email_signature: type: string example: '

John Doe | Consultant

' imap_server: type: string example: imap.server imap_port: type: integer example: 110 smtp_server: type: string example: smtp.server smtp_port: type: integer example: 112 daily_limit: type: integer example: 5 type: type: string example: Inbox status: type: string example: Connected warmup_enabled: type: boolean example: true emails_sent_count: type: integer example: 100 total_replied_count: type: integer example: 10 total_opened_count: type: integer example: 25 unsubscribed_count: type: integer example: 0 bounced_count: type: integer example: 0 unique_replied_count: type: integer example: 7 unique_opened_count: type: integer example: 7 total_leads_contacted_count: type: integer example: 50 interested_leads_count: type: integer example: 3 created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: type: array example: - id: 1 name: Google default: true items: type: object properties: id: type: integer example: 1 name: type: string example: Google default: type: boolean example: true links: type: object properties: first: type: string example: 'http://bison.test/api/sender-emails?page=1' last: type: string example: 'http://bison.test/api/sender-emails?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/sender-emails?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/sender-emails' per_page: type: integer example: 15 to: type: integer example: 3 total: type: integer example: 3 tags: - 'Email Accounts' '/api/sender-emails/{senderEmailId}/campaigns': get: summary: 'Show Email Account Campaigns' operationId: showEmailAccountCampaigns description: 'Retrieves a collection of campaigns where this email account is being used' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 1,\n \"uuid\": \"9h8ef374-e986-4221-b432-2902b4826r83\",\n \"name\": \"John Doe Campaign\",\n \"status\": \"Active\",\n \"emails_sent\": 7,\n \"opened\": 2,\n \"unique_opens\": 1,\n \"replied\": 2,\n \"unique_replies\": 1,\n \"bounced\": 1,\n \"unsubscribed\": 2,\n \"interested\": 3,\n \"total_leads_contacted\": 7,\n \"max_emails_per_day\": 7,\n \"max_new_leads_per_day\": 2,\n \"plain_text\": true,\n \"open_tracking\": false,\n \"can_unsubscribe\": true,\n \"unsubscribe_text\": \"Unsubcribe here\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\",\n },\n {\n \"id\": 2,\n \"uuid\": \"8be8h930-b391-9381-c328-2902b4826r83\",\n \"name\": \"Jane Doe Campaign\",\n \"status\": \"Launching\",\n \"emails_sent\": 5,\n \"opened\": 1,\n \"unique_opens\": 1,\n \"replied\": 1,\n \"unique_replies\": 1,\n \"bounced\": 2,\n \"unsubscribed\": 1,\n \"interested\": 0,\n \"total_leads_contacted\": 5,\n \"max_emails_per_day\": 7,\n \"max_new_leads_per_day\": 2,\n \"plain_text\": true,\n \"open_tracking\": false,\n \"can_unsubscribe\": true,\n \"unsubscribe_text\": \"Unsubscribe here\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n }\n ],\n \"links\": {\n \"first\": \"http://bison.test/api/sender-emails/1/campaigns?page=1\",\n \"last\": \"http://bison.test/api/sender-emails/1/campaigns?page=1\",\n \"prev\": null,\n \"next\": null\n },\n \"meta\": {\n \"current_page\": 1,\n \"from\": 1,\n \"last_page\": 1,\n \"links\": [\n {\n \"url\": null,\n \"label\": \"« Previous\",\n \"active\": false\n },\n {\n \"url\": \"http://bison.test/api/sender-emails/1/campaigns?page=1\",\n \"label\": \"1\",\n \"active\": true\n },\n {\n \"url\": null,\n \"label\": \"Next »\",\n \"active\": false\n }\n ],\n \"path\": \"http://bison.test/api/sender-emails/1/campaigns\",\n \"per_page\": 15,\n \"to\": 3,\n \"total\": 3\n }\n}" tags: - 'Email Accounts' parameters: - in: path name: senderEmailId description: 'The ID (or email address) of the email account.' example: 8 required: true schema: type: integer '/api/sender-emails/{senderEmailId}': get: summary: 'Show email account details' operationId: showEmailAccountDetails description: 'Retrieves details of a specific email account.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected warmup_enabled: true emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true properties: data: type: object properties: id: type: integer example: 1 name: type: string example: 'John Doe' email: type: string example: john@doe.com email_signature: type: string example: '

John Doe | Consultant

' imap_server: type: string example: imap.server imap_port: type: integer example: 110 smtp_server: type: string example: smtp.server smtp_port: type: integer example: 112 daily_limit: type: integer example: 5 type: type: string example: Inbox status: type: string example: Connected warmup_enabled: type: boolean example: true emails_sent_count: type: integer example: 100 total_replied_count: type: integer example: 10 total_opened_count: type: integer example: 25 unsubscribed_count: type: integer example: 0 bounced_count: type: integer example: 0 unique_replied_count: type: integer example: 7 unique_opened_count: type: integer example: 7 total_leads_contacted_count: type: integer example: 50 interested_leads_count: type: integer example: 3 created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: type: array example: - id: 1 name: Google default: true items: type: object properties: id: type: integer example: 1 name: type: string example: Google default: type: boolean example: true tags: - 'Email Accounts' patch: summary: 'Update sender email' operationId: updateSenderEmail description: 'Update the settings for a specified sender email.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected warmup_enabled: true emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: 'John Doe' email: type: string example: john@doe.com email_signature: type: string example: '

John Doe | Consultant

' imap_server: type: string example: imap.server imap_port: type: integer example: 110 smtp_server: type: string example: smtp.server smtp_port: type: integer example: 112 daily_limit: type: integer example: 5 type: type: string example: Inbox status: type: string example: Connected warmup_enabled: type: boolean example: true emails_sent_count: type: integer example: 100 total_replied_count: type: integer example: 10 total_opened_count: type: integer example: 25 unsubscribed_count: type: integer example: 0 bounced_count: type: integer example: 0 unique_replied_count: type: integer example: 7 unique_opened_count: type: integer example: 7 total_leads_contacted_count: type: integer example: 50 interested_leads_count: type: integer example: 3 created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Email Accounts' requestBody: required: false content: application/json: schema: type: object properties: daily_limit: type: integer description: 'The daily limit of emails that can be sent from this sender email.' example: 300 name: type: string description: 'The name of the sender email.' example: 'John Doe' email_signature: type: string description: 'The HTML signature of the sender email.' example: '

{SENDER_FIRST_NAME} | Consultant

' nullable: true delete: summary: 'Delete email account' operationId: deleteEmailAccount description: 'Add multiple sender email addresses at once.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Email accounts have been queued for deletion' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Email accounts have been queued for deletion' tags: - 'Email Accounts' parameters: - in: path name: senderEmailId description: 'The ID (or email address) of the email account.' example: 19 required: true schema: type: integer '/api/sender-emails/{senderEmailId}/replies': get: summary: 'Get email account replies' operationId: getEmailAccountReplies description: "This endpoint retrieves all replies associated with a given email account\n\nThis route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work" parameters: - in: query name: search description: 'Search term for filtering replies.' example: interested required: false schema: type: string description: 'Search term for filtering replies.' example: interested nullable: true - in: query name: status description: 'Filter by status. One of `interested`, `automated_reply`, `not_automated_reply`.' example: automated_reply required: false schema: type: string description: 'Filter by status. One of `interested`, `automated_reply`, `not_automated_reply`.' example: automated_reply - in: query name: folder description: 'Filter by folder. One of `inbox`, `sent`, `spam`, `bounced`, `all`.' example: inbox required: false schema: type: string description: 'Filter by folder. One of `inbox`, `sent`, `spam`, `bounced`, `all`.' example: inbox - in: query name: read description: 'Filter by read status.' example: true required: false schema: type: boolean description: 'Filter by read status.' example: true nullable: true - in: query name: campaign_id description: 'The ID of the campaign.' example: 12 required: false schema: type: integer description: 'The ID of the campaign.' example: 12 - in: query name: lead_id description: 'Must match an existing stored value.' example: 2 required: false schema: type: integer description: 'Must match an existing stored value.' example: 2 - in: query name: tag_ids description: 'Array of tag IDs to filter by.' example: - 1 - 2 - 3 required: false schema: type: array description: 'Array of tag IDs to filter by.' example: - 1 - 2 - 3 items: type: integer - in: query name: pagination_type description: '' example: cursor required: false schema: type: string description: '' example: cursor enum: - cursor - length_aware - in: query name: sender_email_id description: 'The ID of the sender email address.' example: 243 required: false schema: type: integer description: 'The ID of the sender email address.' example: 243 responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 45,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"folder\": \"Inbox\",\n \"subject\": \"yo test boy wassup G\",\n \"read\": true,\n \"interested\": false,\n \"automated_reply\": false,\n \"html_body\": \"
yo whats good essssssey
\",\n \"text_body\": \"yo whats good essssssey\",\n \"raw_body\": null,\n \"headers\": null,\n \"date_received\": \"2024-09-21T02:10:42.000000Z\",\n \"type\": \"Untracked Reply\",\n \"tracked_reply\": false,\n \"scheduled_email_id\": null,\n \"campaign_id\": 123,\n \"lead_id\": null,\n \"sender_email_id\": 25057,\n \"raw_message_id\": \"\",\n \"from_name\": \"Cody Smith\",\n \"from_email_address\": \"cody@emailguard.io\",\n \"primary_to_email_address\": \"usysows3w88c6ljx@eguardtest.com\",\n \"to\": [\n {\n \"name\": \"Chimma Tester\",\n \"address\": \"usysows3w88c6ljx@eguardtest.com\"\n }\n ],\n \"cc\": null,\n \"bcc\": null,\n \"parent_id\": null,\n \"attachments\": [\n \"id\": 213,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a621\",\n \"status\": \"processed\",\n \"reply_id\": 45,\n \"file_name\": \"image.png\",\n \"download_url\": \"http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67\",\n \"created_at\": \"2025-06-18T02:38:40.000000Z\",\n \"updated_at\": \"2025-06-18T02:38:40.000000Z\"\n ]\n }\n ],\n \"links\": {\n \"first\": \"http://bison.test/api/sender-emails/1/replies?page=1\",\n \"last\": \"http://bison.test/api/sender-emails/1/replies?page=1\",\n \"prev\": null,\n \"next\": null\n },\n \"meta\": {\n \"current_page\": 1,\n \"from\": 1,\n \"last_page\": 1,\n \"links\": [\n {\n \"url\": null,\n \"label\": \"« Previous\",\n \"active\": false\n },\n {\n \"url\": \"http://bison.test/api/sender-emails/1/replies?page=1\",\n \"label\": \"1\",\n \"active\": true\n },\n {\n \"url\": null,\n \"label\": \"Next »\",\n \"active\": false\n }\n ],\n \"path\": \"http://bison.test/api/sender-emails/1/replies\",\n \"per_page\": 15,\n \"to\": 3,\n \"total\": 3\n }\n}" tags: - 'Email Accounts' parameters: - in: path name: senderEmailId description: 'The ID (or email address) of the email account.' example: 17 required: true schema: type: integer '/api/sender-emails/{senderEmailId}/oauth-access-token': get: summary: 'Get email account oAuth access token' operationId: getEmailAccountOAuthAccessToken description: "This endpoint retrieves the OAuth access token for a sender email account (Google or Microsoft accounts only).\n\nIf a token has expired, a new one is automatically retrieved and returned using the saved refresh token." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 2938 email: red@emailguard.io status: Connected type: microsoft_oauth oauth_access_token: hg27Csjq0GWRu5ChiEjNhzyDDuk9YR08gIwvnsfTkqoOISPb9ZEJcFGs6yrEZZ5lhyIneW-QIJZjqg8EPHaitFd6PncOb1zuFBcECK1aPNiVXQ1stS4GZZ0K7kMTfbn_bDtg3LwkScRLvd1UaXPX3gdWiyTWU_EQeBtpaKvN_NtqzRlAVslmHfsi50dgDmg0Pbk80oLqbN8TB4JctgM6VuvI5yCrwyID9GNwItSMVpd1ZjOmGTiof2hqi6E3KH3j9RfWz_Gq4Vq61XvYKEooDzDjuFSoie1vkptVp2fngRMBTxTTM2ZBCEpd_HbcrqBiHuIMw19nyXr8mP7n8rPLG4S1LA properties: data: type: object properties: id: type: integer example: 2938 email: type: string example: red@emailguard.io status: type: string example: Connected type: type: string example: microsoft_oauth oauth_access_token: type: string example: hg27Csjq0GWRu5ChiEjNhzyDDuk9YR08gIwvnsfTkqoOISPb9ZEJcFGs6yrEZZ5lhyIneW-QIJZjqg8EPHaitFd6PncOb1zuFBcECK1aPNiVXQ1stS4GZZ0K7kMTfbn_bDtg3LwkScRLvd1UaXPX3gdWiyTWU_EQeBtpaKvN_NtqzRlAVslmHfsi50dgDmg0Pbk80oLqbN8TB4JctgM6VuvI5yCrwyID9GNwItSMVpd1ZjOmGTiof2hqi6E3KH3j9RfWz_Gq4Vq61XvYKEooDzDjuFSoie1vkptVp2fngRMBTxTTM2ZBCEpd_HbcrqBiHuIMw19nyXr8mP7n8rPLG4S1LA tags: - 'Email Accounts' parameters: - in: path name: senderEmailId description: 'The ID (or email address) of the email account.' example: 17 required: true schema: type: integer /api/sender-emails/signatures/bulk: patch: summary: 'Bulk update email signatures' operationId: bulkUpdateEmailSignatures description: 'Update the signatures of multiple sender emails at once.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Successfully updated email signatures. This could take a few minutes to process.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully updated email signatures. This could take a few minutes to process.' tags: - 'Email Accounts' requestBody: required: true content: application/json: schema: type: object properties: sender_email_ids: type: array description: 'An array of sender email IDs to update signatures for.' example: - 1 - 2 items: type: integer email_signature: type: string description: 'The HTML signature to use.' example: '

{SENDER_FIRST_NAME} | Consultant

' required: - sender_email_ids - email_signature /api/sender-emails/daily-limits/bulk: patch: summary: 'Bulk update email daily limits' operationId: bulkUpdateEmailDailyLimits description: 'Update the daily sending limit of multiple sender emails at once.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Successfully updated email daily limits. This could take a few minutes to process.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully updated email daily limits. This could take a few minutes to process.' tags: - 'Email Accounts' requestBody: required: true content: application/json: schema: type: object properties: sender_email_ids: type: array description: 'An array of sender email IDs to update daily limits for.' example: - 1 - 2 items: type: integer daily_limit: type: integer description: 'The daily sending limit to set.' example: 1 required: - sender_email_ids - daily_limit /api/sender-emails/imap-smtp: post: summary: 'Create IMAP/SMTP Email Account' operationId: createIMAPSMTPEmailAccount description: 'Creates a new IMAP/SMTP email account for the authenticated workspace.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected warmup_enabled: false emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true properties: data: type: object properties: id: type: integer example: 1 name: type: string example: 'John Doe' email: type: string example: john@doe.com email_signature: type: string example: '

John Doe | Consultant

' imap_server: type: string example: imap.server imap_port: type: integer example: 110 smtp_server: type: string example: smtp.server smtp_port: type: integer example: 112 daily_limit: type: integer example: 5 type: type: string example: Inbox status: type: string example: Connected warmup_enabled: type: boolean example: false emails_sent_count: type: integer example: 100 total_replied_count: type: integer example: 10 total_opened_count: type: integer example: 25 unsubscribed_count: type: integer example: 0 bounced_count: type: integer example: 0 unique_replied_count: type: integer example: 7 unique_opened_count: type: integer example: 7 total_leads_contacted_count: type: integer example: 50 interested_leads_count: type: integer example: 3 created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: type: array example: - id: 1 name: Google default: true items: type: object properties: id: type: integer example: 1 name: type: string example: Google default: type: boolean example: true tags: - 'Email Accounts' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name associated with the sender email.' example: 'John Doe' email: type: string description: 'The email address of the sender. Must be unique and in a valid email format.' example: john.doe@example.com password: type: string description: 'The password for the sender email.' example: securepassword123 imap_server: type: string description: 'The IMAP server address for the sender email. Must be a valid domain name.' example: imap.example.com imap_port: type: integer description: 'The IMAP server port for the sender email.' example: 993 smtp_server: type: string description: 'The SMTP server address for the sender email. Must be a valid domain name.' example: smtp.example.com smtp_port: type: integer description: 'The SMTP server port for the sender email.' example: 587 smtp_secure: type: boolean description: '' example: false imap_secure: type: boolean description: '' example: false email_signature: type: string description: 'The signature for the sender email.' example: '{SENDER_FIRST_NAME} | Consultant' required: - name - email - password - imap_server - imap_port - smtp_server - smtp_port /api/sender-emails/bulk: post: summary: 'Bulk add sender emails' operationId: bulkAddSenderEmails description: 'Add multiple sender email addresses at once.' parameters: [] responses: 201: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 1,\n \"name\": \"John Doe\",\n \"email\": \"john@doe.com\",\n \"email_signature\": null,\n \"imap_server\": \"imap.server\",\n \"imap_port\": 110,\n \"smtp_server\": \"smtp.server\",\n \"smtp_port\": 112,\n \"daily_limit\": 5,\n \"type\": \"Inbox\",\n \"status\": \"Connected\",\n \"warmup_enabled\": false,\n \"emails_sent_count\": 100,\n \"total_replied_count\": 10,\n \"total_opened_count\": 25,\n \"unsubscribed_count\": 0,\n \"bounced_count\": 0,\n \"unique_replied_count\": 7,\n \"unique_opened_count\": 7,\n \"total_leads_contacted_count\": 50,\n \"interested_leads_count\": 3,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n },\n {\n \"id\": 2,\n \"name\": \"Jane Doe\",\n \"email\": \"jane@doe.com,\n \"email_signature\": null,\n \"imap_server\": \"imap.server\",\n \"imap_port\": 110,\n \"smtp_server\": \"smtp.server\",\n \"smtp_port\": 112,\n \"daily_limit\": 5,\n \"type\": \"Inbox\",\n \"status\": \"Connected\",\n \"warmup_enabled\": false,\n \"emails_sent_count\": 100,\n \"total_replied_count\": 10,\n \"total_opened_count\": 25,\n \"unsubscribed_count\": 0,\n \"bounced_count\": 0,\n \"unique_replied_count\": 7,\n \"unique_opened_count\": 7,\n \"total_leads_contacted_count\": 50,\n \"interested_leads_count\": 3,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n }\n ]\n}" tags: - 'Email Accounts' requestBody: required: true content: multipart/form-data: schema: type: object properties: csv: type: string format: binary description: 'The CSV file containing the contacts.' required: - csv '/api/sender-emails/{senderEmailId}/check-mx-records': post: summary: 'Check MX records' operationId: checkMXRecords description: "Checks the email host for a given email address and returns the host + all MX records.\nResults are not cached, and if a valid return is returned, the Sender Email account will be updated." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"email\": \"john@doe.com\",\n \"email_host\": \"Google\",\n \"mx_records_valid\": \"true\",\n \"mx_records\": [\n {\n \"host\": \"domain.com\",\n \"priority\": 300,\n \"class\": \"IN\",\n \"type\": \"MX\",\n \"pri\": 0,\n \"target\": \"domain-com.mail.protection.outlook.com\"\n }\n ]\n }" tags: - 'Email Accounts' parameters: - in: path name: senderEmailId description: 'The ID (or email address) of the email account.' example: 6 required: true schema: type: integer /api/sender-emails/bulk-check-missing-mx-records: post: summary: 'Bulk check missing MX records' operationId: bulkCheckMissingMXRecords description: "This endpoint lets you trigger a job that will bulk check all email accounts with\nmissing MX records in the given workspace." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"success\": true,\n \"message\": \"This may take several minutes to complete depending on how many email accounts have missing MX records.\",\n }\n }" tags: - 'Email Accounts' '/api/sender-emails/{senderEmailId}/move-to-another-workspace': post: summary: 'Move sender email to another workspace' operationId: moveSenderEmailToAnotherWorkspace description: "This endpoint moves a sender email to a different workspace.\n\nNote: this endpoint requires a `super-admin` token that has access to the target workspace." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"success\": true,\n \"message\": \"Sender email has been queued to be moved. This may take a few minutes.\",\n }\n}" tags: - 'Email Accounts' requestBody: required: true content: application/json: schema: type: object properties: workspace_id: type: integer description: 'The ID of the target workspace to move the sender email to.' example: 1 required: - workspace_id parameters: - in: path name: senderEmailId description: 'The ID (or email address) of the email account.' example: 6 required: true schema: type: integer /api/sender-emails/move-to-another-workspace-bulk: post: summary: 'Move sender emails to another workspace (bulk)' operationId: moveSenderEmailsToAnotherWorkspacebulk description: "This endpoint bulk moves sender emails to a different workspace.\n\nNote: this endpoint requires a `super-admin` token that has access to the target workspace." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"success\": true,\n \"message\": \"Sender emails have been queued to be moved. This may take a few minutes.\",\n }\n}" tags: - 'Email Accounts' requestBody: required: true content: application/json: schema: type: object properties: workspace_id: type: integer description: 'The ID of the target workspace to move the sender email to.' example: 8 sender_email_ids: type: array description: 'The IDs of the sender emails to move.' example: - 4 items: type: integer required: - workspace_id - sender_email_ids parameters: - in: path name: senderEmailId description: 'The ID (or email address) of the email account.' example: 2 required: true schema: type: integer /api/blacklisted-emails: get: summary: 'Get all blacklisted emails' operationId: getAllBlacklistedEmails description: "This route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work\n\nRetrieve a list of all blacklisted emails for the authenticated user." parameters: - in: query name: search description: 'Search term for filtering blacklisted emails.' example: john@doe.com required: false schema: type: string description: 'Search term for filtering blacklisted emails.' example: john@doe.com responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 email: john@doe.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 email: jane@doe.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' links: first: 'http://bison.test/api/blacklisted-emails?page=1' last: 'http://bison.test/api/blacklisted-emails?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/blacklisted-emails?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/blacklisted-emails' per_page: 15 to: 2 total: 2 properties: data: type: array example: - id: 1 email: john@doe.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 email: jane@doe.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' items: type: object properties: id: type: integer example: 1 email: type: string example: john@doe.com created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' links: type: object properties: first: type: string example: 'http://bison.test/api/blacklisted-emails?page=1' last: type: string example: 'http://bison.test/api/blacklisted-emails?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/blacklisted-emails?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/blacklisted-emails' per_page: type: integer example: 15 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Email Blacklist' requestBody: required: false content: application/json: schema: type: object properties: search: type: string description: '' example: illum nullable: true pagination_type: type: string description: '' example: cursor enum: - cursor - length_aware post: summary: 'Create blacklisted email' operationId: createBlacklistedEmail description: 'Add a new email to the blacklist.' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: id: 1 email: john@doe.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 email: type: string example: john@doe.com created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Email Blacklist' requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'The email address to be blacklisted.' example: john@doe.com skip_webhooks: type: boolean description: 'Skip webhook event firing.' example: true required: - email '/api/blacklisted-emails/{blacklisted_email_id}': get: summary: 'Get blacklisted email' operationId: getBlacklistedEmail description: 'Get a single blacklisted email by email or ID.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1 email: john@doe.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 email: type: string example: john@doe.com created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Email Blacklist' delete: summary: 'Remove blacklisted email' operationId: removeBlacklistedEmail description: 'Remove an email from the blacklist.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully removed blacklisted email' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully removed blacklisted email' tags: - 'Email Blacklist' requestBody: required: false content: application/json: schema: type: object properties: skip_webhooks: type: boolean description: 'Skip webhook event firing.' example: false parameters: - in: path name: blacklisted_email_id description: 'The email or ID of the blacklisted email.' example: john@doe.com required: true schema: type: string /api/blacklisted-emails/bulk: post: summary: 'Bulk create blacklisted emails' operationId: bulkCreateBlacklistedEmails description: 'Add multiple emails to the blacklist in a single request.' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: - id: 1 email: john@doe.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 email: jane@doe.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: array example: - id: 1 email: john@doe.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 email: jane@doe.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' items: type: object properties: id: type: integer example: 1 email: type: string example: john@doe.com created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Email Blacklist' requestBody: required: true content: multipart/form-data: schema: type: object properties: csv: type: string format: binary description: 'The CSV file containing the blacklisted emails.' skip_webhooks: type: boolean description: 'Skip webhook event firing.' example: false required: - csv /api/blacklisted-domains: get: summary: 'Get all blacklisted domains' operationId: getAllBlacklistedDomains description: 'Retrieve a list of all blacklisted domains for the authenticated user.' parameters: - in: query name: search description: 'Search term for filtering blacklisted domains.' example: example.com required: false schema: type: string description: 'Search term for filtering blacklisted domains.' example: example.com responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 domain: example.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 domain: test.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' links: first: 'http://bison.test/api/blacklisted-domains?page=1' last: 'http://bison.test/api/blacklisted-domains?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/blacklisted-domains?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/blacklisted-domains' per_page: 15 to: 2 total: 2 properties: data: type: array example: - id: 1 domain: example.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 domain: test.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' items: type: object properties: id: type: integer example: 1 domain: type: string example: example.com created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' links: type: object properties: first: type: string example: 'http://bison.test/api/blacklisted-domains?page=1' last: type: string example: 'http://bison.test/api/blacklisted-domains?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/blacklisted-domains?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/blacklisted-domains' per_page: type: integer example: 15 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Domain Blacklist' requestBody: required: false content: application/json: schema: type: object properties: search: type: string description: '' example: nihil nullable: true pagination_type: type: string description: '' example: cursor enum: - cursor - length_aware post: summary: 'Create blacklisted domain' operationId: createBlacklistedDomain description: 'Add a new domain to the blacklist.' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: id: 1 domain: example.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 domain: type: string example: example.com created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Domain Blacklist' requestBody: required: true content: application/json: schema: type: object properties: domain: type: string description: 'The domain to be blacklisted.' example: example.com skip_webhooks: type: boolean description: 'Skip webhook event firing.' example: false required: - domain '/api/blacklisted-domains/{blacklisted_domain_id}': get: summary: 'Get blacklisted domain' operationId: getBlacklistedDomain description: 'Get a single blacklisted domain by domain or ID.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1 domain: example.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 domain: type: string example: example.com created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Domain Blacklist' delete: summary: 'Remove blacklisted domain' operationId: removeBlacklistedDomain description: 'Remove a domain from the blacklist.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully removed blacklisted domain' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully removed blacklisted domain' tags: - 'Domain Blacklist' requestBody: required: false content: application/json: schema: type: object properties: skip_webhooks: type: boolean description: 'Skip webhook event firing.' example: true parameters: - in: path name: blacklisted_domain_id description: 'The domain or ID of the blacklisted domain.' example: example.com required: true schema: type: string /api/blacklisted-domains/bulk: post: summary: 'Bulk create blacklisted domains' operationId: bulkCreateBlacklistedDomains description: 'Add multiple domains to the blacklist in a single request.' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: - id: 1 domain: example.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 domain: test.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: array example: - id: 1 domain: example.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 domain: test.com created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' items: type: object properties: id: type: integer example: 1 domain: type: string example: example.com created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Domain Blacklist' requestBody: required: true content: multipart/form-data: schema: type: object properties: csv: type: string format: binary description: 'The CSV file containing the blacklisted emails.' skip_webhooks: type: boolean description: 'Skip webhook event firing.' example: false required: - csv /api/tags: get: summary: 'Get all tags for workspace' operationId: getAllTagsForWorkspace description: "Retrieve a list of all tags for the authenticated user's workspace." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 name: Important default: false created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 name: Interested default: true created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: array example: - id: 1 name: Important default: false created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 name: Interested default: true created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' items: type: object properties: id: type: integer example: 1 name: type: string example: Important default: type: boolean example: false created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Custom Tags' post: summary: 'Create tag' operationId: createTag description: 'Add a new tag.' parameters: [] responses: 201: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"name\": \"Important\",\n \"default\": false,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n },\n}" tags: - 'Custom Tags' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name of the tag.' example: Important required: - name '/api/tags/{id}': get: summary: 'View tag' operationId: viewTag description: 'View a saved tag.' parameters: [] responses: 201: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"name\": \"Interested\",\n \"default\": true,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n },\n}" tags: - 'Custom Tags' parameters: - in: path name: id description: 'The ID of the tag.' example: 1 required: true schema: type: integer '/api/tags/{tag_id}': delete: summary: 'Remove tag' operationId: removeTag description: 'Delete a tag.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Important was successfully removed' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Important was successfully removed' tags: - 'Custom Tags' parameters: - in: path name: tag_id description: 'The ID of the tag' example: 1 required: true schema: type: integer /api/tags/attach-to-campaigns: post: summary: 'Attach tags to campaigns' operationId: attachTagsToCampaigns description: 'Attach multiple tags to campaigns.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully attached tags to campaigns' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully attached tags to campaigns' tags: - 'Custom Tags' requestBody: required: true content: application/json: schema: type: object properties: tag_ids: type: array description: 'An array of tag IDs to be attached.' example: - 1 - 2 items: type: integer campaign_ids: type: array description: 'An array of campaign IDs to which the tags will be attached.' example: - 3 - 4 items: type: integer skip_webhooks: type: boolean description: 'If set to true, no webhooks will be fired for this action.' example: false required: - tag_ids - campaign_ids /api/tags/remove-from-campaigns: post: summary: 'Remove tags from campaigns' operationId: removeTagsFromCampaigns description: 'Detach multiple tags from campaigns.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully removed tags from campaigns' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully removed tags from campaigns' tags: - 'Custom Tags' requestBody: required: true content: application/json: schema: type: object properties: tag_ids: type: array description: 'An array of tag IDs to be detached.' example: - 1 - 2 items: type: integer campaign_ids: type: array description: 'An array of campaign IDs from which the tags will be detached.' example: - 3 - 4 items: type: integer skip_webhooks: type: boolean description: 'If set to true, no webhooks will be fired for this action.' example: false required: - tag_ids - campaign_ids /api/tags/attach-to-leads: post: summary: 'Attach tags to leads' operationId: attachTagsToLeads description: 'Attach multiple tags to leads.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully attached tags to leads' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully attached tags to leads' tags: - 'Custom Tags' requestBody: required: true content: application/json: schema: type: object properties: tag_ids: type: array description: 'An array of tag IDs to be attached.' example: - 1 - 2 items: type: integer lead_ids: type: array description: 'An array of lead IDs to which the tags will be attached.' example: - 3 - 4 items: type: integer skip_webhooks: type: boolean description: 'If set to true, no webhooks will be fired for this action.' example: false required: - tag_ids - lead_ids /api/tags/remove-from-leads: post: summary: 'Remove tags from leads' operationId: removeTagsFromLeads description: 'Detach multiple tags from leads.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully removed tags from leads' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully removed tags from leads' tags: - 'Custom Tags' requestBody: required: true content: application/json: schema: type: object properties: tag_ids: type: array description: 'An array of tag IDs to be detached.' example: - 1 - 2 items: type: integer lead_ids: type: array description: 'An array of lead IDs from which the tags will be detached.' example: - 3 - 4 items: type: integer skip_webhooks: type: boolean description: 'If set to true, no webhooks will be fired for this action.' example: false required: - tag_ids - lead_ids /api/tags/attach-to-sender-emails: post: summary: 'Attach tags to email accounts' operationId: attachTagsToEmailAccounts description: 'Attach multiple tags to email accounts' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully attached tags to email accounts' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully attached tags to email accounts' tags: - 'Custom Tags' requestBody: required: true content: application/json: schema: type: object properties: tag_ids: type: array description: 'An array of tag IDs to be attached.' example: - 1 - 2 items: type: integer sender_email_ids: type: array description: 'An array of email account IDs to which the tags will be attached.' example: - 3 - 4 items: type: integer skip_webhooks: type: boolean description: 'If set to true, no webhooks will be fired for this action.' example: false required: - tag_ids - sender_email_ids /api/tags/remove-from-sender-emails: post: summary: 'Remove tags from email accounts' operationId: removeTagsFromEmailAccounts description: 'Detach multiple tags from email accounts' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully removed tags from email accounts' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully removed tags from email accounts' tags: - 'Custom Tags' requestBody: required: true content: application/json: schema: type: object properties: tag_ids: type: array description: 'An array of tag IDs to be detached.' example: - 1 - 2 items: type: integer sender_email_ids: type: array description: 'An array of email account IDs from which the tags will be detached.' example: - 3 - 4 items: type: integer skip_webhooks: type: boolean description: 'If set to true, no webhooks will be fired for this action.' example: false required: - tag_ids - sender_email_ids /api/custom-tracking-domain: get: summary: 'Get all custom tracking domains' operationId: getAllCustomTrackingDomains description: 'Retrieve a list of all custom tracking domains for the authenticated user.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 domain: example.com status: Connected created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 domain: example.org status: Pending created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' links: first: 'http://bison.test/api/custom-tracking-domain?page=1' last: 'http://bison.test/api/custom-tracking-domain?page=1' prev: null next: null meta: current_page: 1 from: 1 path: 'http://bison.test/api/custom-tracking-domain' per_page: 15 to: 2 properties: data: type: array example: - id: 1 domain: example.com status: Connected created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 domain: example.org status: Pending created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' items: type: object properties: id: type: integer example: 1 domain: type: string example: example.com status: type: string example: Connected created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' links: type: object properties: first: type: string example: 'http://bison.test/api/custom-tracking-domain?page=1' last: type: string example: 'http://bison.test/api/custom-tracking-domain?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 path: type: string example: 'http://bison.test/api/custom-tracking-domain' per_page: type: integer example: 15 to: type: integer example: 2 tags: - 'Custom Tracking Domains' post: summary: 'Create custom tracking domain' operationId: createCustomTrackingDomain description: "Add a new custom tracking domain to the authenticated user's team." parameters: [] responses: 201: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"domain\": \"example.com\",\n \"status\": \"Pending\"\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n }\n}" 422: description: '' content: application/json: schema: type: object example: data: success: false message: 'Failed to add custom domain' properties: data: type: object properties: success: type: boolean example: false message: type: string example: 'Failed to add custom domain' tags: - 'Custom Tracking Domains' requestBody: required: true content: application/json: schema: type: object properties: domain: type: string description: 'The domain name to be added.' example: example.com required: - domain '/api/custom-tracking-domain/{id}': get: summary: 'Get a custom tracking domains' operationId: getACustomTrackingDomains description: 'View a custom tracking domains.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1 domain: example.com status: Connected created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 domain: type: string example: example.com status: type: string example: Connected created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Custom Tracking Domains' parameters: - in: path name: id description: 'The custom tracking domain ID.' example: 1 required: true schema: type: integer '/api/custom-tracking-domain/{custom_tracking_domain_id}': delete: summary: 'Remove custom tracking domain' operationId: removeCustomTrackingDomain description: 'Delete a custom tracking domain.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully removed custom domain' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully removed custom domain' 422: description: '' content: application/json: schema: type: object example: data: success: false message: 'Your custom domain could not be removed. Please try again.' properties: data: type: object properties: success: type: boolean example: false message: type: string example: 'Your custom domain could not be removed. Please try again.' tags: - 'Custom Tracking Domains' parameters: - in: path name: custom_tracking_domain_id description: 'The custom tracking domain ID' example: 16 required: true schema: type: integer /api/campaign-events/stats: get: summary: 'Breakdown of events by date' operationId: breakdownOfEventsByDate description: "This endpoint retrieves stats by date for a given period, for this campaign\n\nDrill down into campaign event stats based on dates, campaign IDs, and/or sender email IDs\n\nThe user must provide a valid authentication token in the request header to access this endpoint.\n\nEvents returned: `Replied`, `Total Opens`, `Unique Opens`, `Sent`, `Bounced`, `Unsubscribed`, `Interested`" parameters: - in: query name: start_date description: 'The start date to fetch stats.' example: '2024-07-01' required: true schema: type: string description: 'The start date to fetch stats.' example: '2024-07-01' - in: query name: end_date description: 'The end date to fetch stats.' example: '2024-07-19' required: true schema: type: string description: 'The end date to fetch stats.' example: '2024-07-19' - in: query name: sender_email_ids description: 'List of sender email IDs to include' example: - 14 required: false schema: type: array description: 'List of sender email IDs to include' example: - 14 items: type: integer - in: query name: campaign_ids description: 'List of campaign IDs to include' example: - 7 required: false schema: type: array description: 'List of campaign IDs to include' example: - 7 items: type: integer responses: 200: description: success content: application/json: schema: type: object example: data: - label: Replied color: '#f54842' dates: - - '2025-05-03' - 0 - label: 'Total Opens' color: '#00E396' dates: - - '2025-05-03' - 0 - label: Sent color: '#3B82F6' dates: - - '2025-05-03' - 0 - label: Unsubscribed color: '#fffff2' dates: - - '2025-05-03' - 0 - label: Bounced color: '#fffff1' dates: - - '2025-05-03' - 0 - label: Interested color: '#fffff3' dates: - - '2025-05-03' - 0 - label: 'Unique Opens' color: '#00d0ff' dates: - - '2025-05-03' - 0 properties: data: type: array example: - label: Replied color: '#f54842' dates: - - '2025-05-03' - 0 - label: 'Total Opens' color: '#00E396' dates: - - '2025-05-03' - 0 - label: Sent color: '#3B82F6' dates: - - '2025-05-03' - 0 - label: Unsubscribed color: '#fffff2' dates: - - '2025-05-03' - 0 - label: Bounced color: '#fffff1' dates: - - '2025-05-03' - 0 - label: Interested color: '#fffff3' dates: - - '2025-05-03' - 0 - label: 'Unique Opens' color: '#00d0ff' dates: - - '2025-05-03' - 0 items: type: object properties: label: type: string example: Replied color: type: string example: '#f54842' dates: type: array example: - - '2025-05-03' - 0 items: type: array tags: - 'Campaign Events' '/api/campaigns/v1.1/{campaign_id}/sequence-steps': get: summary: 'View campaign sequence steps (v1.1)' operationId: viewCampaignSequenceStepsv11 description: 'This endpoint allows the authenticated user to view the sequence steps of the campaign.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"sequence_id\": 293,\n \"sequence_steps\": [\n {\n \"id\": 1,\n \"active\": true,\n \"email_subject\": \"Step 1\",\n \"order\": \"1\",\n \"email_body\": \"Step 1 body\",\n \"wait_in_days\": \"1\",\n \"variant\": false,\n \"variant_from_step_id\": null,\n \"attachments\": [],\n \"thread_reply\": false\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n },\n {\n \"id\": 2,\n \"active\": true,\n \"email_subject\": \"Step 2\",\n \"order\": \"1\",\n \"email_body\": \"Step 2 body\",\n \"wait_in_days\": \"2\",\n \"variant\": true,\n \"variant_from_step_id\": null,\n \"attachments\": [],\n \"thread_reply\": true\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n }\n ]\n }" tags: - 'Campaigns v1.1' post: summary: 'Create sequence steps (v1.1)' operationId: createSequenceStepsv11 description: 'This endpoint allows the authenticated user to create the campaign sequence steps from scratch.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"type\": \"Campaign sequence\",\n \"title\": \"John Doe sequence\",\n \"sequence_steps\": [\n {\n \"id\": 1,\n \"active\": true,\n \"email_subject\": \"EmailBison is awesome! {FIRST_NAME}\",\n \"order\": 1,\n \"email_body\": \"Try it now!\",\n \"wait_in_days\": 1,\n \"variant\": false,\n \"variant_from_step_id\": null,\n \"attachments\": null,\n \"thread_reply\": false,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n },\n {\n \"id\": 2,\n \"active\": true,\n \"email_subject\": \"Re: EmailBison is awesome!\",\n \"order\": 2,\n \"email_body\": \"Try it now!\",\n \"wait_in_days\": 1,\n \"variant\": true,\n \"variant_from_step_id\": 1,\n \"attachments\": null,\n \"thread_reply\": true,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n }\n ],\n }\n}" tags: - 'Campaigns v1.1' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title for the sequence.' example: 'John Doe sequence' sequence_steps: type: array description: 'The array containing the sequence steps' example: - email_subject: 'EmailBison is awesome!' email_subject_variables: - '{FIRST_NAME}' order: 1 email_body: 'Try it now!' wait_in_days: 1 variant: false thread_reply: false - email_subject: 'EmailBison is awesome!' order: 2 email_body: 'Try it now!' wait_in_days: 1 variant: true variant_from_step: 1 thread_reply: true items: type: object properties: email_subject: type: string description: 'The subject for the email.' example: 'EmailBison is awesome!' email_subject_variables: type: array description: 'The subject variables.' example: null items: type: string nullable: true order: type: integer description: 'The order of the step.' example: 1 nullable: true email_body: type: string description: 'The body of the email.' example: 'Try it now!' wait_in_days: type: integer description: 'The days to wait.' example: 1 variant: type: boolean description: 'Wheter the step is variant of another step.' example: true nullable: true variant_from_step: type: integer description: 'The order number of a step in the current request to be a variant of. Cannot be used with variant_from_step_id.' example: 1 nullable: true variant_from_step_id: type: integer description: 'The ID of an already saved step to be a variant of. Cannot be used with variant_from_step.' example: 42 nullable: true attachments: type: string format: binary description: 'The email attachments.' nullable: true thread_reply: type: boolean description: 'Wheter the step should be a reply from the previous step.' example: false nullable: true required: - email_subject - email_body - wait_in_days required: - title - sequence_steps parameters: - in: path name: campaign_id description: 'The ID of the campaign.' example: 8 required: true schema: type: integer '/api/campaigns/v1.1/sequence-steps/{sequence_id}': put: summary: 'Update sequence steps (v1.1)' operationId: updateSequenceStepsv11 description: 'This endpoint allows the authenticated user to update the campaign sequence steps.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 1,\n \"type\": \"Campaign sequence\",\n \"title\": \"John Doe sequence\",\n \"sequence_steps\": [\n {\n \"id\": 1,\n \"active\": true,\n \"email_subject\": \"EmailBison is awesome! {FIRST_NAME}\",\n \"order\": 1,\n \"email_body\": \"Try it now!\",\n \"wait_in_days\": 1,\n \"variant\": false,\n \"variant_from_step_id\": null,\n \"attachments\": null,\n \"thread_reply\": false,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n },\n {\n \"id\": 2,\n \"active\": true,\n \"email_subject\": \"Re: EmailBison is awesome!\",\n \"order\": 2,\n \"email_body\": \"Try it now!\",\n \"wait_in_days\": 1,\n \"variant\": true,\n \"variant_from_step_id\": 1,\n \"attachments\": null,\n \"thread_reply\": true,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n }\n ],\n }\n}" tags: - 'Campaigns v1.1' requestBody: required: true content: application/json: schema: type: object properties: title: type: string description: 'The title for the sequence.' example: 'John Doe sequence' sequence_steps: type: array description: 'The array containing the sequence steps' example: - id: 1 email_subject: 'EmailBison is awesome!' email_subject_variables: - '{FIRST_NAME}' order: 1 email_body: 'Try it now!' wait_in_days: 1 variant: false thread_reply: false - id: 2 email_subject: 'EmailBison is awesome!' order: 2 email_body: 'Try it now!' wait_in_days: 1 variant: true variant_from_step: 1 thread_reply: true items: type: object properties: id: type: integer description: 'The ID of the sequence step.' example: 1 email_subject: type: string description: 'The subject for the email.' example: 'EmailBison is awesome!' email_subject_variables: type: array description: 'The subject variables.' example: null items: type: string nullable: true order: type: integer description: 'The order of the step.' example: 1 email_body: type: string description: 'The body of the email.' example: 'Try it now!' wait_in_days: type: integer description: 'The days to wait.' example: 1 variant: type: boolean description: 'Whether the step is variant of another step.' example: true nullable: true variant_from_step_id: type: integer description: 'The step ID this step will be a variant of (required if variant is true).' example: 53 attachments: type: string format: binary description: 'The email attachments.' nullable: true thread_reply: type: boolean description: 'Wheter the step should be a reply from the previous step.' example: false nullable: true required: - id - email_subject - order - email_body - wait_in_days required: - title - sequence_steps parameters: - in: path name: sequence_id description: 'The ID of the sequence. You can get this on the Campaign object.' example: 14 required: true schema: type: integer /api/custom-variables: get: summary: 'Get all custom variables' operationId: getAllCustomVariables description: 'Retrieve a list of all custom variables for your workspace' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 name: linkedin created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 name: phone_number created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' links: first: 'http://bison.test/api/custom-variables?page=1' last: 'http://bison.test/api/custom-variables?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/custom-variables?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/custom-variables' per_page: 15 to: 2 total: 2 properties: data: type: array example: - id: 1 name: linkedin created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 name: phone_number created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' items: type: object properties: id: type: integer example: 1 name: type: string example: linkedin created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' links: type: object properties: first: type: string example: 'http://bison.test/api/custom-variables?page=1' last: type: string example: 'http://bison.test/api/custom-variables?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/custom-variables?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/custom-variables' per_page: type: integer example: 15 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Custom Lead Variables' post: summary: 'Create a new custom variable' operationId: createANewCustomVariable description: 'Add a new custom variable for your workspace' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 3 name: 'new custom variable' created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 3 name: type: string example: 'new custom variable' created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Custom Lead Variables' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name of the custom variable' example: 'New Name' required: - name '/api/custom-variables/{custom_variable_id}': delete: summary: 'Remove custom variable' operationId: removeCustomVariable description: 'Delete a custom variable.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'new custom variable was successfully removed' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'new custom variable was successfully removed' tags: - 'Custom Lead Variables' parameters: - in: path name: custom_variable_id description: 'The ID of the custom variable' example: 5 required: true schema: type: integer /api/events: get: summary: 'Get all events (up to 10 days)' operationId: getAllEventsupTo10Days description: "This route only supports cursor pagination due to large data sets.\nMore info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work\n\nThis endpoint retrieves all events for the given workspace\n\nThe user must provide a valid authentication token in the request header to access this endpoint.\n\nYou can find more information about the relations in our docs here: TODO_ADD_DOCS_LINK" parameters: - in: query name: type description: '' example: email_account_reconnected required: false schema: type: string description: '' example: email_account_reconnected enum: - email_sent - email_send_failed - manual_email_sent - manual_email_send_failed - lead_first_contacted - lead_replied - lead_interested - lead_unsubscribed - untracked_reply_received - email_opened - email_bounced - email_account_added - email_account_removed - email_account_disconnected - email_account_reconnected - tag_attached - tag_removed - warmup_disabled_causing_bounces - warmup_disabled_receiving_bounces - blacklisted_email_added - blacklisted_email_removed - blacklisted_domain_added - blacklisted_domain_removed - in: query name: start_date description: 'Show events after this date.' example: "'2026-01-01'" required: false schema: type: string description: 'Show events after this date.' example: "'2026-01-01'" - in: query name: end_date description: 'Show events before this date.' example: "'2026-01-10'" required: false schema: type: string description: 'Show events before this date.' example: "'2026-01-10'" responses: 200: description: success content: application/json: schema: type: object example: data: - id: 19 uuid: a21bc963-0381-4ba0-bb12-66be44e70940 payload: event: type: MANUAL_EMAIL_SENT name: 'Manual Email Sent' instance_url: 'http://localhost' workspace_id: 5 workspace_name: "Cody's Team" data: reply: id: 65135 uuid: 9f4251c7-1831-4ec4-a96d-b7bdb8ca7800 email_subject: test interested: false automated_reply: false html_body: '

test

' text_body: test raw_body: null headers: null date_received: '2025-06-28T00:51:26.000000Z' type: 'Outgoing Email' folder: Sent raw_message_id: '<28f48e3d-b74f-4758-b8d5-09c75d87ddf6@bisonemails.com>' from_name: 'Teddy Frank' from_email_address: teddy.frank@bisonemails.com primary_to_email_address: cody@cody.ca to: - name: null address: cody@cody.ca cc: null bcc: null parent_id: null created_at: '2025-06-28T00:51:26.000000Z' updated_at: '2025-09-05T01:36:39.000000Z' attachments: [] sender_email: id: 2006 name: 'Teddy Frank' email: teddy.frank@bisonemails.com status: connected type: custom daily_limit: 50 emails_sent: 0 replied: 0 opened: 0 unsubscribed: 0 bounced: 0 unique_replies: 0 unique_opens: 0 total_leads_contacted: 0 interested: 0 created_at: '2025-06-17T00:51:29.000000Z' updated_at: '2025-09-16T19:26:11.000000Z' lead: null campaign: null scheduled_email: null webhook_deliveries: - id: 8 uuid: a21bc963-0939-40e3-9871-ee76e874abb2 event_id: 19 webhook_url: 'https://ancient-lightning-07.webhook.cool' attempt_count: 1 last_attempt_at: '2026-06-25T15:44:25.000000Z' status: succeeded webhook_attempts: - id: 20 uuid: a21bc963-101c-4011-a755-37432886d63f webhook_delivery_id: 8 webhook_url: 'https://ancient-lightning-07.webhook.cool' status: succeeded response_code: 200 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 9 uuid: a21bc963-65b3-4036-b912-aa9ebcfa65f6 event_id: 19 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' attempt_count: 5 last_attempt_at: '2026-06-25T15:44:26.000000Z' status: failed webhook_attempts: - id: 21 uuid: a21bc963-6981-474c-b492-7a5cb6001c16 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 22 uuid: a21bc963-ea79-4e91-ac22-527fdb476b48 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' - id: 23 uuid: a21bc964-3036-432d-821f-dba1328a24ac webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:26.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' - id: 24 uuid: a21bc964-6080-4c0a-bbb6-157aea6d1b04 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:26.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' - id: 25 uuid: a21bc964-8bbf-4fda-8f1e-43a2331b98b2 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:26.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 18 uuid: a21bc8b2-a94c-4ba1-8480-e9b3683043a2 payload: event: type: MANUAL_EMAIL_SENT name: 'Manual Email Sent' instance_url: 'http://localhost' workspace_id: 5 workspace_name: "Cody's Team" data: reply: id: 65135 uuid: 9f4251c7-1831-4ec4-a96d-b7bdb8ca7800 email_subject: test interested: false automated_reply: false html_body: '

test

' text_body: test raw_body: null headers: null date_received: '2025-06-28T00:51:26.000000Z' type: 'Outgoing Email' folder: Sent raw_message_id: '<28f48e3d-b74f-4758-b8d5-09c75d87ddf6@bisonemails.com>' from_name: 'Teddy Frank' from_email_address: teddy.frank@bisonemails.com primary_to_email_address: cody@cody.ca to: - name: null address: cody@cody.ca cc: null bcc: null parent_id: null created_at: '2025-06-28T00:51:26.000000Z' updated_at: '2025-09-05T01:36:39.000000Z' attachments: [] sender_email: id: 2006 name: 'Teddy Frank' email: teddy.frank@bisonemails.com status: connected type: custom daily_limit: 50 emails_sent: 0 replied: 0 opened: 0 unsubscribed: 0 bounced: 0 unique_replies: 0 unique_opens: 0 total_leads_contacted: 0 interested: 0 created_at: '2025-06-17T00:51:29.000000Z' updated_at: '2025-09-16T19:26:11.000000Z' lead: null campaign: null scheduled_email: null webhook_deliveries: - id: 6 uuid: a21bc8b2-b078-4eb1-baf1-b12595ca9f82 event_id: 18 webhook_url: 'https://ancient-lightning-07.webhook.cool' attempt_count: 1 last_attempt_at: '2026-06-25T15:42:29.000000Z' status: failed webhook_attempts: - id: 14 uuid: a21bc8b2-b75c-474f-bbd6-45251be1f7fa webhook_delivery_id: 6 webhook_url: 'https://ancient-lightning-07.webhook.cool' status: succeeded response_code: 200 created_at: '2026-06-25T15:42:29.000000Z' updated_at: '2026-06-25T15:42:29.000000Z' created_at: '2026-06-25T15:42:29.000000Z' updated_at: '2026-06-25T15:42:29.000000Z' - id: 7 uuid: a21bc8b3-1157-42fe-9dd9-dd944ce8f030 event_id: 18 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' attempt_count: 5 last_attempt_at: '2026-06-25T15:42:30.000000Z' status: failed webhook_attempts: - id: 15 uuid: a21bc8b3-1599-4185-94df-504d66e250a2 webhook_delivery_id: 7 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:42:29.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' - id: 16 uuid: a21bc8b3-416a-41df-85ad-12fae5b049d6 webhook_delivery_id: 7 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:42:30.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' - id: 17 uuid: a21bc8b3-6f0d-48d7-9948-0db7c8d98e5e webhook_delivery_id: 7 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:42:30.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' - id: 18 uuid: a21bc8b3-a280-4696-90f3-bf1c83748963 webhook_delivery_id: 7 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:42:30.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' - id: 19 uuid: a21bc8b3-d204-4a39-add3-cb9db5fd2451 webhook_delivery_id: 7 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:42:30.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' created_at: '2026-06-25T15:42:29.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' created_at: '2026-06-25T15:42:29.000000Z' updated_at: '2026-06-25T15:42:29.000000Z' links: first: null last: null prev: null next: 'http://localhost/api/events?cursor=eyJjcmVhdGVkX2F0IjoiMjAyNi0wNi0yMyAyMTozMDowMSIsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0' meta: path: 'http://localhost/api/events' per_page: 15 next_cursor: eyJjcmVhdGVkX2F0IjoiMjAyNi0wNi0yMyAyMTozMDowMSIsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0 prev_cursor: null properties: data: type: array example: - id: 19 uuid: a21bc963-0381-4ba0-bb12-66be44e70940 payload: event: type: MANUAL_EMAIL_SENT name: 'Manual Email Sent' instance_url: 'http://localhost' workspace_id: 5 workspace_name: "Cody's Team" data: reply: id: 65135 uuid: 9f4251c7-1831-4ec4-a96d-b7bdb8ca7800 email_subject: test interested: false automated_reply: false html_body: '

test

' text_body: test raw_body: null headers: null date_received: '2025-06-28T00:51:26.000000Z' type: 'Outgoing Email' folder: Sent raw_message_id: '<28f48e3d-b74f-4758-b8d5-09c75d87ddf6@bisonemails.com>' from_name: 'Teddy Frank' from_email_address: teddy.frank@bisonemails.com primary_to_email_address: cody@cody.ca to: - name: null address: cody@cody.ca cc: null bcc: null parent_id: null created_at: '2025-06-28T00:51:26.000000Z' updated_at: '2025-09-05T01:36:39.000000Z' attachments: [] sender_email: id: 2006 name: 'Teddy Frank' email: teddy.frank@bisonemails.com status: connected type: custom daily_limit: 50 emails_sent: 0 replied: 0 opened: 0 unsubscribed: 0 bounced: 0 unique_replies: 0 unique_opens: 0 total_leads_contacted: 0 interested: 0 created_at: '2025-06-17T00:51:29.000000Z' updated_at: '2025-09-16T19:26:11.000000Z' lead: null campaign: null scheduled_email: null webhook_deliveries: - id: 8 uuid: a21bc963-0939-40e3-9871-ee76e874abb2 event_id: 19 webhook_url: 'https://ancient-lightning-07.webhook.cool' attempt_count: 1 last_attempt_at: '2026-06-25T15:44:25.000000Z' status: succeeded webhook_attempts: - id: 20 uuid: a21bc963-101c-4011-a755-37432886d63f webhook_delivery_id: 8 webhook_url: 'https://ancient-lightning-07.webhook.cool' status: succeeded response_code: 200 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 9 uuid: a21bc963-65b3-4036-b912-aa9ebcfa65f6 event_id: 19 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' attempt_count: 5 last_attempt_at: '2026-06-25T15:44:26.000000Z' status: failed webhook_attempts: - id: 21 uuid: a21bc963-6981-474c-b492-7a5cb6001c16 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 22 uuid: a21bc963-ea79-4e91-ac22-527fdb476b48 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' - id: 23 uuid: a21bc964-3036-432d-821f-dba1328a24ac webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:26.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' - id: 24 uuid: a21bc964-6080-4c0a-bbb6-157aea6d1b04 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:26.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' - id: 25 uuid: a21bc964-8bbf-4fda-8f1e-43a2331b98b2 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:26.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 18 uuid: a21bc8b2-a94c-4ba1-8480-e9b3683043a2 payload: event: type: MANUAL_EMAIL_SENT name: 'Manual Email Sent' instance_url: 'http://localhost' workspace_id: 5 workspace_name: "Cody's Team" data: reply: id: 65135 uuid: 9f4251c7-1831-4ec4-a96d-b7bdb8ca7800 email_subject: test interested: false automated_reply: false html_body: '

test

' text_body: test raw_body: null headers: null date_received: '2025-06-28T00:51:26.000000Z' type: 'Outgoing Email' folder: Sent raw_message_id: '<28f48e3d-b74f-4758-b8d5-09c75d87ddf6@bisonemails.com>' from_name: 'Teddy Frank' from_email_address: teddy.frank@bisonemails.com primary_to_email_address: cody@cody.ca to: - name: null address: cody@cody.ca cc: null bcc: null parent_id: null created_at: '2025-06-28T00:51:26.000000Z' updated_at: '2025-09-05T01:36:39.000000Z' attachments: [] sender_email: id: 2006 name: 'Teddy Frank' email: teddy.frank@bisonemails.com status: connected type: custom daily_limit: 50 emails_sent: 0 replied: 0 opened: 0 unsubscribed: 0 bounced: 0 unique_replies: 0 unique_opens: 0 total_leads_contacted: 0 interested: 0 created_at: '2025-06-17T00:51:29.000000Z' updated_at: '2025-09-16T19:26:11.000000Z' lead: null campaign: null scheduled_email: null webhook_deliveries: - id: 6 uuid: a21bc8b2-b078-4eb1-baf1-b12595ca9f82 event_id: 18 webhook_url: 'https://ancient-lightning-07.webhook.cool' attempt_count: 1 last_attempt_at: '2026-06-25T15:42:29.000000Z' status: failed webhook_attempts: - id: 14 uuid: a21bc8b2-b75c-474f-bbd6-45251be1f7fa webhook_delivery_id: 6 webhook_url: 'https://ancient-lightning-07.webhook.cool' status: succeeded response_code: 200 created_at: '2026-06-25T15:42:29.000000Z' updated_at: '2026-06-25T15:42:29.000000Z' created_at: '2026-06-25T15:42:29.000000Z' updated_at: '2026-06-25T15:42:29.000000Z' - id: 7 uuid: a21bc8b3-1157-42fe-9dd9-dd944ce8f030 event_id: 18 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' attempt_count: 5 last_attempt_at: '2026-06-25T15:42:30.000000Z' status: failed webhook_attempts: - id: 15 uuid: a21bc8b3-1599-4185-94df-504d66e250a2 webhook_delivery_id: 7 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:42:29.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' - id: 16 uuid: a21bc8b3-416a-41df-85ad-12fae5b049d6 webhook_delivery_id: 7 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:42:30.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' - id: 17 uuid: a21bc8b3-6f0d-48d7-9948-0db7c8d98e5e webhook_delivery_id: 7 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:42:30.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' - id: 18 uuid: a21bc8b3-a280-4696-90f3-bf1c83748963 webhook_delivery_id: 7 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:42:30.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' - id: 19 uuid: a21bc8b3-d204-4a39-add3-cb9db5fd2451 webhook_delivery_id: 7 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:42:30.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' created_at: '2026-06-25T15:42:29.000000Z' updated_at: '2026-06-25T15:42:30.000000Z' created_at: '2026-06-25T15:42:29.000000Z' updated_at: '2026-06-25T15:42:29.000000Z' items: type: object properties: id: type: integer example: 19 uuid: type: string example: a21bc963-0381-4ba0-bb12-66be44e70940 payload: type: object properties: event: type: object properties: type: type: string example: MANUAL_EMAIL_SENT name: type: string example: 'Manual Email Sent' instance_url: type: string example: 'http://localhost' workspace_id: type: integer example: 5 workspace_name: type: string example: "Cody's Team" data: type: object properties: reply: type: object properties: id: type: integer example: 65135 uuid: type: string example: 9f4251c7-1831-4ec4-a96d-b7bdb8ca7800 email_subject: type: string example: test interested: type: boolean example: false automated_reply: type: boolean example: false html_body: type: string example: '

test

' text_body: type: string example: test raw_body: type: string example: null nullable: true headers: type: string example: null nullable: true date_received: type: string example: '2025-06-28T00:51:26.000000Z' type: type: string example: 'Outgoing Email' folder: type: string example: Sent raw_message_id: type: string example: '<28f48e3d-b74f-4758-b8d5-09c75d87ddf6@bisonemails.com>' from_name: type: string example: 'Teddy Frank' from_email_address: type: string example: teddy.frank@bisonemails.com primary_to_email_address: type: string example: cody@cody.ca to: type: array example: [{ name: null, address: cody@cody.ca }] items: { type: object, properties: { name: { type: string, example: null, nullable: true }, address: { type: string, example: cody@cody.ca } } } cc: type: string example: null nullable: true bcc: type: string example: null nullable: true parent_id: type: string example: null nullable: true created_at: type: string example: '2025-06-28T00:51:26.000000Z' updated_at: type: string example: '2025-09-05T01:36:39.000000Z' attachments: type: array example: [] sender_email: type: object properties: id: type: integer example: 2006 name: type: string example: 'Teddy Frank' email: type: string example: teddy.frank@bisonemails.com status: type: string example: connected type: type: string example: custom daily_limit: type: integer example: 50 emails_sent: type: integer example: 0 replied: type: integer example: 0 opened: type: integer example: 0 unsubscribed: type: integer example: 0 bounced: type: integer example: 0 unique_replies: type: integer example: 0 unique_opens: type: integer example: 0 total_leads_contacted: type: integer example: 0 interested: type: integer example: 0 created_at: type: string example: '2025-06-17T00:51:29.000000Z' updated_at: type: string example: '2025-09-16T19:26:11.000000Z' lead: type: string example: null nullable: true campaign: type: string example: null nullable: true scheduled_email: type: string example: null nullable: true webhook_deliveries: type: array example: - id: 8 uuid: a21bc963-0939-40e3-9871-ee76e874abb2 event_id: 19 webhook_url: 'https://ancient-lightning-07.webhook.cool' attempt_count: 1 last_attempt_at: '2026-06-25T15:44:25.000000Z' status: succeeded webhook_attempts: - id: 20 uuid: a21bc963-101c-4011-a755-37432886d63f webhook_delivery_id: 8 webhook_url: 'https://ancient-lightning-07.webhook.cool' status: succeeded response_code: 200 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 9 uuid: a21bc963-65b3-4036-b912-aa9ebcfa65f6 event_id: 19 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' attempt_count: 5 last_attempt_at: '2026-06-25T15:44:26.000000Z' status: failed webhook_attempts: - id: 21 uuid: a21bc963-6981-474c-b492-7a5cb6001c16 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 22 uuid: a21bc963-ea79-4e91-ac22-527fdb476b48 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' - id: 23 uuid: a21bc964-3036-432d-821f-dba1328a24ac webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:26.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' - id: 24 uuid: a21bc964-6080-4c0a-bbb6-157aea6d1b04 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:26.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' - id: 25 uuid: a21bc964-8bbf-4fda-8f1e-43a2331b98b2 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:26.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' items: type: object properties: id: type: integer example: 8 uuid: type: string example: a21bc963-0939-40e3-9871-ee76e874abb2 event_id: type: integer example: 19 webhook_url: type: string example: 'https://ancient-lightning-07.webhook.cool' attempt_count: type: integer example: 1 last_attempt_at: type: string example: '2026-06-25T15:44:25.000000Z' status: type: string example: succeeded webhook_attempts: type: array example: - id: 20 uuid: a21bc963-101c-4011-a755-37432886d63f webhook_delivery_id: 8 webhook_url: 'https://ancient-lightning-07.webhook.cool' status: succeeded response_code: 200 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' items: type: object properties: id: type: integer example: 20 uuid: type: string example: a21bc963-101c-4011-a755-37432886d63f webhook_delivery_id: type: integer example: 8 webhook_url: type: string example: 'https://ancient-lightning-07.webhook.cool' status: type: string example: succeeded response_code: type: integer example: 200 created_at: type: string example: '2026-06-25T15:44:25.000000Z' updated_at: type: string example: '2026-06-25T15:44:25.000000Z' created_at: type: string example: '2026-06-25T15:44:25.000000Z' updated_at: type: string example: '2026-06-25T15:44:25.000000Z' created_at: type: string example: '2026-06-25T15:44:25.000000Z' updated_at: type: string example: '2026-06-25T15:44:25.000000Z' links: type: object properties: first: type: string example: null nullable: true last: type: string example: null nullable: true prev: type: string example: null nullable: true next: type: string example: 'http://localhost/api/events?cursor=eyJjcmVhdGVkX2F0IjoiMjAyNi0wNi0yMyAyMTozMDowMSIsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0' meta: type: object properties: path: type: string example: 'http://localhost/api/events' per_page: type: integer example: 15 next_cursor: type: string example: eyJjcmVhdGVkX2F0IjoiMjAyNi0wNi0yMyAyMTozMDowMSIsIl9wb2ludHNUb05leHRJdGVtcyI6dHJ1ZX0 prev_cursor: type: string example: null nullable: true tags: - Events '/api/events/{id}': get: summary: 'Get event' operationId: getEvent description: "This endpoint retrieves a specific event by its ID.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 19 uuid: a21bc963-0381-4ba0-bb12-66be44e70940 payload: event: type: MANUAL_EMAIL_SENT name: 'Manual Email Sent' instance_url: 'http://localhost' workspace_id: 5 workspace_name: "Cody's Team" data: reply: id: 65135 uuid: 9f4251c7-1831-4ec4-a96d-b7bdb8ca7800 email_subject: test interested: false automated_reply: false html_body: '

test

' text_body: test raw_body: null headers: null date_received: '2025-06-28T00:51:26.000000Z' type: 'Outgoing Email' folder: Sent raw_message_id: '<28f48e3d-b74f-4758-b8d5-09c75d87ddf6@bisonemails.com>' from_name: 'Teddy Frank' from_email_address: teddy.frank@bisonemails.com primary_to_email_address: cody@cody.ca to: - name: null address: cody@cody.ca cc: null bcc: null parent_id: null created_at: '2025-06-28T00:51:26.000000Z' updated_at: '2025-09-05T01:36:39.000000Z' attachments: [] sender_email: id: 2006 name: 'Teddy Frank' email: teddy.frank@bisonemails.com status: connected type: custom daily_limit: 50 emails_sent: 0 replied: 0 opened: 0 unsubscribed: 0 bounced: 0 unique_replies: 0 unique_opens: 0 total_leads_contacted: 0 interested: 0 created_at: '2025-06-17T00:51:29.000000Z' updated_at: '2025-09-16T19:26:11.000000Z' lead: null campaign: null scheduled_email: null webhook_deliveries: - id: 8 uuid: a21bc963-0939-40e3-9871-ee76e874abb2 event_id: 19 webhook_url: 'https://ancient-lightning-07.webhook.cool' attempt_count: 1 last_attempt_at: '2026-06-25T15:44:25.000000Z' status: succeeded webhook_attempts: - id: 20 uuid: a21bc963-101c-4011-a755-37432886d63f webhook_delivery_id: 8 webhook_url: 'https://ancient-lightning-07.webhook.cool' status: succeeded response_code: 200 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 9 uuid: a21bc963-65b3-4036-b912-aa9ebcfa65f6 event_id: 19 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' attempt_count: 2 last_attempt_at: '2026-06-25T15:44:25.000000Z' status: failed webhook_attempts: - id: 21 uuid: a21bc963-6981-474c-b492-7a5cb6001c16 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 22 uuid: a21bc963-ea79-4e91-ac22-527fdb476b48 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' properties: data: type: object properties: id: type: integer example: 19 uuid: type: string example: a21bc963-0381-4ba0-bb12-66be44e70940 payload: type: object properties: event: type: object properties: type: type: string example: MANUAL_EMAIL_SENT name: type: string example: 'Manual Email Sent' instance_url: type: string example: 'http://localhost' workspace_id: type: integer example: 5 workspace_name: type: string example: "Cody's Team" data: type: object properties: reply: type: object properties: id: type: integer example: 65135 uuid: type: string example: 9f4251c7-1831-4ec4-a96d-b7bdb8ca7800 email_subject: type: string example: test interested: type: boolean example: false automated_reply: type: boolean example: false html_body: type: string example: '

test

' text_body: type: string example: test raw_body: type: string example: null nullable: true headers: type: string example: null nullable: true date_received: type: string example: '2025-06-28T00:51:26.000000Z' type: type: string example: 'Outgoing Email' folder: type: string example: Sent raw_message_id: type: string example: '<28f48e3d-b74f-4758-b8d5-09c75d87ddf6@bisonemails.com>' from_name: type: string example: 'Teddy Frank' from_email_address: type: string example: teddy.frank@bisonemails.com primary_to_email_address: type: string example: cody@cody.ca to: type: array example: - { name: null, address: cody@cody.ca } items: type: object properties: { name: { type: string, example: null, nullable: true }, address: { type: string, example: cody@cody.ca } } cc: type: string example: null nullable: true bcc: type: string example: null nullable: true parent_id: type: string example: null nullable: true created_at: type: string example: '2025-06-28T00:51:26.000000Z' updated_at: type: string example: '2025-09-05T01:36:39.000000Z' attachments: type: array example: [] sender_email: type: object properties: id: type: integer example: 2006 name: type: string example: 'Teddy Frank' email: type: string example: teddy.frank@bisonemails.com status: type: string example: connected type: type: string example: custom daily_limit: type: integer example: 50 emails_sent: type: integer example: 0 replied: type: integer example: 0 opened: type: integer example: 0 unsubscribed: type: integer example: 0 bounced: type: integer example: 0 unique_replies: type: integer example: 0 unique_opens: type: integer example: 0 total_leads_contacted: type: integer example: 0 interested: type: integer example: 0 created_at: type: string example: '2025-06-17T00:51:29.000000Z' updated_at: type: string example: '2025-09-16T19:26:11.000000Z' lead: type: string example: null nullable: true campaign: type: string example: null nullable: true scheduled_email: type: string example: null nullable: true webhook_deliveries: type: array example: - id: 8 uuid: a21bc963-0939-40e3-9871-ee76e874abb2 event_id: 19 webhook_url: 'https://ancient-lightning-07.webhook.cool' attempt_count: 1 last_attempt_at: '2026-06-25T15:44:25.000000Z' status: succeeded webhook_attempts: - id: 20 uuid: a21bc963-101c-4011-a755-37432886d63f webhook_delivery_id: 8 webhook_url: 'https://ancient-lightning-07.webhook.cool' status: succeeded response_code: 200 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 9 uuid: a21bc963-65b3-4036-b912-aa9ebcfa65f6 event_id: 19 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' attempt_count: 2 last_attempt_at: '2026-06-25T15:44:25.000000Z' status: failed webhook_attempts: - id: 21 uuid: a21bc963-6981-474c-b492-7a5cb6001c16 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' - id: 22 uuid: a21bc963-ea79-4e91-ac22-527fdb476b48 webhook_delivery_id: 9 webhook_url: 'https://www.cardinalenvironmentalsolutions.com/cockroach/' status: failed response_code: 403 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:26.000000Z' items: type: object properties: id: type: integer example: 8 uuid: type: string example: a21bc963-0939-40e3-9871-ee76e874abb2 event_id: type: integer example: 19 webhook_url: type: string example: 'https://ancient-lightning-07.webhook.cool' attempt_count: type: integer example: 1 last_attempt_at: type: string example: '2026-06-25T15:44:25.000000Z' status: type: string example: succeeded webhook_attempts: type: array example: - id: 20 uuid: a21bc963-101c-4011-a755-37432886d63f webhook_delivery_id: 8 webhook_url: 'https://ancient-lightning-07.webhook.cool' status: succeeded response_code: 200 created_at: '2026-06-25T15:44:25.000000Z' updated_at: '2026-06-25T15:44:25.000000Z' items: type: object properties: id: type: integer example: 20 uuid: type: string example: a21bc963-101c-4011-a755-37432886d63f webhook_delivery_id: type: integer example: 8 webhook_url: type: string example: 'https://ancient-lightning-07.webhook.cool' status: type: string example: succeeded response_code: type: integer example: 200 created_at: type: string example: '2026-06-25T15:44:25.000000Z' updated_at: type: string example: '2026-06-25T15:44:25.000000Z' created_at: type: string example: '2026-06-25T15:44:25.000000Z' updated_at: type: string example: '2026-06-25T15:44:25.000000Z' created_at: type: string example: '2026-06-25T15:44:25.000000Z' updated_at: type: string example: '2026-06-25T15:44:25.000000Z' tags: - Events parameters: - in: path name: id description: 'The ID of the event.' example: 10 required: true schema: type: integer /api/ignore-phrases: get: summary: 'Get all ignore phrases' operationId: getAllIgnorePhrases description: 'Retrieve a list of all ignore phrases for the authenticated user.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 phrase: warmup231 created_at: '2024-07-29T02:10:45.000000Z' updated_at: '2024-07-29T02:10:45.000000Z' - id: 2 phrase: warmup2341 created_at: '2024-07-29T02:10:45.000000Z' updated_at: '2024-07-29T02:10:45.000000Z' links: first: 'http://bison.test/api/ignore-phrases?page=1' last: 'http://bison.test/api/ignore-phrases?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/ignore-phrases?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/ignore-phrases' per_page: 15 to: 2 total: 2 properties: data: type: array example: - id: 1 phrase: warmup231 created_at: '2024-07-29T02:10:45.000000Z' updated_at: '2024-07-29T02:10:45.000000Z' - id: 2 phrase: warmup2341 created_at: '2024-07-29T02:10:45.000000Z' updated_at: '2024-07-29T02:10:45.000000Z' items: type: object properties: id: type: integer example: 1 phrase: type: string example: warmup231 created_at: type: string example: '2024-07-29T02:10:45.000000Z' updated_at: type: string example: '2024-07-29T02:10:45.000000Z' links: type: object properties: first: type: string example: 'http://bison.test/api/ignore-phrases?page=1' last: type: string example: 'http://bison.test/api/ignore-phrases?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/ignore-phrases?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/ignore-phrases' per_page: type: integer example: 15 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Ignore Phrases' post: summary: 'Create ignore phrase' operationId: createIgnorePhrase description: 'Add a new ignore phrase' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: id: 1 email: warmup381 created_at: '2024-07-29T02:10:45.000000Z' updated_at: '2024-07-29T02:10:45.000000Z' properties: data: type: object properties: id: type: integer example: 1 email: type: string example: warmup381 created_at: type: string example: '2024-07-29T02:10:45.000000Z' updated_at: type: string example: '2024-07-29T02:10:45.000000Z' tags: - 'Ignore Phrases' requestBody: required: true content: application/json: schema: type: object properties: phrase: type: string description: 'The ignore phrase to add.' example: warmup381 required: - phrase '/api/ignore-phrases/{ignore_phrase_id}': get: summary: 'Get single ignore phrase' operationId: getSingleIgnorePhrase description: 'Retrieve the details of a specific ignore phrase' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 4 email: warmup381 created_at: '2024-07-29T02:10:45.000000Z' updated_at: '2024-07-29T02:10:45.000000Z' properties: data: type: object properties: id: type: integer example: 4 email: type: string example: warmup381 created_at: type: string example: '2024-07-29T02:10:45.000000Z' updated_at: type: string example: '2024-07-29T02:10:45.000000Z' tags: - 'Ignore Phrases' delete: summary: 'Remove ignore phrase' operationId: removeIgnorePhrase description: 'Remove an ignore phrase' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully removed ignore phrase' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully removed ignore phrase' tags: - 'Ignore Phrases' parameters: - in: path name: ignore_phrase_id description: 'Optional parameter. int|string The ID or name of the ignore phrase' required: true schema: type: string examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: warmup48 /api/lead-lists: get: summary: 'Get all lead lists for workspace' operationId: getAllLeadListsForWorkspace description: "Retrieve a paginated list of all lead lists for the authenticated user's workspace." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 name: 'Q1 Prospects' status: Processed leads_processed: 100 leads_succeeded: 95 leads_failed: 5 error_messages: null created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 name: 'Warm Leads' status: Unprocessed leads_processed: 0 leads_succeeded: 0 leads_failed: 0 error_messages: null created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' links: first: 'http://bison.test/api/lead-lists?page=1' last: 'http://bison.test/api/lead-lists?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 path: 'http://bison.test/api/lead-lists' per_page: 15 to: 2 total: 2 properties: data: type: array example: - id: 1 name: 'Q1 Prospects' status: Processed leads_processed: 100 leads_succeeded: 95 leads_failed: 5 error_messages: null created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 2 name: 'Warm Leads' status: Unprocessed leads_processed: 0 leads_succeeded: 0 leads_failed: 0 error_messages: null created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' items: type: object properties: id: type: integer example: 1 name: type: string example: 'Q1 Prospects' status: type: string example: Processed leads_processed: type: integer example: 100 leads_succeeded: type: integer example: 95 leads_failed: type: integer example: 5 error_messages: type: string example: null nullable: true created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' links: type: object properties: first: type: string example: 'http://bison.test/api/lead-lists?page=1' last: type: string example: 'http://bison.test/api/lead-lists?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 path: type: string example: 'http://bison.test/api/lead-lists' per_page: type: integer example: 15 to: type: integer example: 2 total: type: integer example: 2 tags: - 'Lead Lists' post: summary: 'Create lead list' operationId: createLeadList description: 'Add a new lead list.' parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: id: 1 name: 'Q1 Prospects' status: Unprocessed leads_processed: null leads_succeeded: null leads_failed: null error_messages: null created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: 'Q1 Prospects' status: type: string example: Unprocessed leads_processed: type: string example: null nullable: true leads_succeeded: type: string example: null nullable: true leads_failed: type: string example: null nullable: true error_messages: type: string example: null nullable: true created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Lead Lists' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name of the lead list.' example: 'Q1 Prospects' required: - name '/api/lead-lists/{id}': get: summary: 'View lead list' operationId: viewLeadList description: 'View a single lead list.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1 name: 'Q1 Prospects' status: Processed leads_processed: 100 leads_succeeded: 95 leads_failed: 5 error_messages: null created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: 'Q1 Prospects' status: type: string example: Processed leads_processed: type: integer example: 100 leads_succeeded: type: integer example: 95 leads_failed: type: integer example: 5 error_messages: type: string example: null nullable: true created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Lead Lists' put: summary: 'Rename lead list' operationId: renameLeadList description: 'Update the name of an existing lead list.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1 name: 'Q2 Prospects' status: Processed leads_processed: 100 leads_succeeded: 95 leads_failed: 5 error_messages: null created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: 'Q2 Prospects' status: type: string example: Processed leads_processed: type: integer example: 100 leads_succeeded: type: integer example: 95 leads_failed: type: integer example: 5 error_messages: type: string example: null nullable: true created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Lead Lists' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The new name of the lead list.' example: 'Q2 Prospects' required: - name parameters: - in: path name: id description: 'The ID of the lead list.' example: 1 required: true schema: type: integer /api/leads: get: summary: 'Get all leads' operationId: getAllLeads description: "Retrieve a list of all leads for the authenticated user.\n\nThis route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work" parameters: - in: query name: search description: 'Search term for filtering replies.' example: interested required: false schema: type: string description: 'Search term for filtering replies.' example: interested nullable: true - in: query name: filters description: '' example: [] required: false schema: type: object description: '' example: [] properties: { } - in: query name: filters.lead_campaign_status description: 'Filter by lead campaign status. One of `in_sequence`, `sequence_finished`, `sequence_stopped`, `never_contacted`, `replied`.' example: in_sequence required: false schema: type: string description: 'Filter by lead campaign status. One of `in_sequence`, `sequence_finished`, `sequence_stopped`, `never_contacted`, `replied`.' example: in_sequence - in: query name: filters.emails_sent description: 'Filter by the number of emails sent.' example: - aliquid required: false schema: type: array description: 'Filter by the number of emails sent.' example: - aliquid items: type: string - in: query name: filters.emails_sent.criteria description: 'Comparison operator for emails sent. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>=' required: false schema: type: string description: 'Comparison operator for emails sent. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>=' - in: query name: filters.emails_sent.value description: 'Value for the number of emails sent.' example: 10 required: false schema: type: integer description: 'Value for the number of emails sent.' example: 10 nullable: true - in: query name: filters.opens description: '' example: [] required: false schema: type: object description: '' example: [] properties: { } - in: query name: filters.opens.criteria description: 'Comparison operator for email opens. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>' required: false schema: type: string description: 'Comparison operator for email opens. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>' - in: query name: filters.opens.value description: 'Value for the number of email opens.' example: 100 required: false schema: type: integer description: 'Value for the number of email opens.' example: 100 nullable: true - in: query name: filters.replies description: '' example: [] required: false schema: type: object description: '' example: [] properties: { } - in: query name: filters.replies.criteria description: 'Comparison operator for replies. One of `=`, `>=`, `>`, `<=`, `<`.' example: '=' required: false schema: type: string description: 'Comparison operator for replies. One of `=`, `>=`, `>`, `<=`, `<`.' example: '=' - in: query name: filters.replies.value description: 'Value for the number of replies.' example: 5 required: false schema: type: integer description: 'Value for the number of replies.' example: 5 nullable: true - in: query name: filters.verification_statuses description: 'A verification status. Accepted values: `verifying`, `verified`, `risky`, `unknown`, `unverified`, `inactive`, `bounced`, `unsubscribed`' example: - voluptas required: false schema: type: array description: 'A verification status. Accepted values: `verifying`, `verified`, `risky`, `unknown`, `unverified`, `inactive`, `bounced`, `unsubscribed`' example: - voluptas items: type: string - in: query name: filters.tag_ids description: 'Filter by tag IDs.' example: - 1 - 2 - 3 required: false schema: type: array description: 'Filter by tag IDs.' example: - 1 - 2 - 3 items: type: integer - in: query name: filters.excluded_tag_ids description: 'Exclude leads by tag IDs.' example: - 1 - 2 - 3 required: false schema: type: array description: 'Exclude leads by tag IDs.' example: - 1 - 2 - 3 items: type: integer - in: query name: filters.without_tags description: 'Only show leads that have no tags attached.' example: true required: false schema: type: boolean description: 'Only show leads that have no tags attached.' example: true - in: query name: filters.created_at description: '' example: [] required: false schema: type: object description: '' example: [] properties: { } - in: query name: filters.created_at.criteria description: 'Comparison operator for the created_at date. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>=' required: false schema: type: string description: 'Comparison operator for the created_at date. One of `=`, `>=`, `>`, `<=`, `<`.' example: '>=' - in: query name: filters.created_at.value description: 'Value for the created_at date. Must be a valid date in YYYY-MM-DD format.' example: '2025-03-22' required: false schema: type: string description: 'Value for the created_at date. Must be a valid date in YYYY-MM-DD format.' example: '2025-03-22' nullable: true - in: query name: filters.updated_at description: '' example: [] required: false schema: type: object description: '' example: [] properties: { } - in: query name: filters.updated_at.criteria description: 'Comparison operator for the updated_at date. One of `=`, `>=`, `>`, `<=`, `<`.' example: '<=' required: false schema: type: string description: 'Comparison operator for the updated_at date. One of `=`, `>=`, `>`, `<=`, `<`.' example: '<=' - in: query name: filters.updated_at.value description: 'Value for the updated_at date. Must be a valid date in YYYY-MM-DD format.' example: '2025-03-22' required: false schema: type: string description: 'Value for the updated_at date. Must be a valid date in YYYY-MM-DD format.' example: '2025-03-22' nullable: true - in: query name: pagination_type description: '' example: length_aware required: false schema: type: string description: '' example: length_aware enum: - cursor - length_aware responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a622 first_name: John last_name: Doe email: john@doe.com title: Engineer company: 'John Doe company' notes: 'Important client' status: verified custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 1 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a622 first_name: Jane last_name: Doe email: jane@doe.com title: Engineer company: 'Jane Doe company' notes: 'Important client' status: bounced custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/jane' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' links: first: 'http://bison.test/api/leads?page=1' last: 'http://bison.test/api/leads?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/leads?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/leads' per_page: 15 to: 3 total: 3 properties: data: type: array example: - id: 1 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a622 first_name: John last_name: Doe email: john@doe.com title: Engineer company: 'John Doe company' notes: 'Important client' status: verified custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' - id: 1 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a622 first_name: Jane last_name: Doe email: jane@doe.com title: Engineer company: 'Jane Doe company' notes: 'Important client' status: bounced custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/jane' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' items: type: object properties: id: type: integer example: 1 uuid: type: string example: 9f7a2718-aa56-43k2-a52b-a44dc183a622 first_name: type: string example: John last_name: type: string example: Doe email: type: string example: john@doe.com title: type: string example: Engineer company: type: string example: 'John Doe company' notes: type: string example: 'Important client' status: type: string example: verified custom_variables: type: array example: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' items: type: object properties: name: type: string example: company_website value: type: string example: 'https://company.com' lead_campaign_data: type: array example: [] overall_stats: type: object properties: emails_sent: type: integer example: 3 opens: type: integer example: 0 replies: type: integer example: 1 unique_replies: type: integer example: 1 unique_opens: type: integer example: 0 created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' links: type: object properties: first: type: string example: 'http://bison.test/api/leads?page=1' last: type: string example: 'http://bison.test/api/leads?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/leads?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/leads' per_page: type: integer example: 15 to: type: integer example: 3 total: type: integer example: 3 tags: - Leads post: summary: 'Create lead' operationId: createLead description: 'Create a single lead (contact) record' parameters: [] responses: 201: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 326217,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a622\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"johaan@doaescuts5esse.com\",\n \"title\": \"Engineer\",\n \"company\": \"John Doe Company\",\n \"notes\": \"Important client\",\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"another one\",\n \"value\": \"baddye\"\n }\n ],\n \"lead_campaign_data\": [],\n \"overall_stats\": {\n \"emails_sent\": 3,\n \"opens\": 0,\n \"replies\": 1\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2024-07-29T02:10:45.000000Z\",\n \"updated_at\": \"2024-07-29T02:10:45.000000Z\"\n }\n }" tags: - Leads requestBody: required: true content: application/json: schema: type: object properties: first_name: type: string description: 'The first name of the contact.' example: John last_name: type: string description: 'optional The last name of the contact.' example: Doe nullable: true email: type: string description: 'The email address of the contact. Must be unique and in a valid email format.' example: john@doe.com title: type: string description: 'optional The title of the contact.' example: Engineer nullable: true company: type: string description: 'optional The company name of the contact.' example: 'John Doe Company' nullable: true notes: type: string description: 'optional Additional notes about the contact.' example: 'Important client' nullable: true custom_variables: type: array description: 'optional Array of custom variable objects' example: - name: 'phone number' value: '9059999999' items: type: object nullable: true properties: name: type: required description: 'name of the custom variable field' example: doloremque value: type: required description: 'value of the custom variable' example: ipsam nullable: true required: - first_name - email '/api/leads/{lead_id}': get: summary: 'Get single lead' operationId: getSingleLead description: 'Retrieve the details of a specific lead' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 326217,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a622\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"johaan@doaescuts5esse.com\",\n \"title\": \"Engineer\",\n \"company\": \"John Doe Company\",\n \"notes\": \"Important client\",\n \"status\": \"unsubscribed\",\n \"custom_variables\": [\n {\n \"name\": \"another one\",\n \"value\": \"baddye\"\n }\n ],\n \"lead_campaign_data\": [],\n \"overall_stats\": {\n \"emails_sent\": 3,\n \"opens\": 0,\n \"replies\": 1\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2024-07-29T02:10:45.000000Z\",\n \"updated_at\": \"2024-07-29T02:10:45.000000Z\"\n }\n }" tags: - Leads put: summary: 'Update lead' operationId: updateLead description: "Update the details of a specific lead\n\nFields passed in the request will be updated. Fields and custom variables not passed will be cleared." parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 326217,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a622\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"johaan@doaescuts5esse.com\",\n \"title\": \"Engineer\",\n \"company\": \"John Doe Company\",\n \"notes\": \"Important client\",\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"another one\",\n \"value\": \"baddye\"\n }\n ],\n \"lead_campaign_data\": [],\n \"overall_stats\": {\n \"emails_sent\": 3,\n \"opens\": 0,\n \"replies\": 1\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2024-07-29T02:10:45.000000Z\",\n \"updated_at\": \"2024-07-29T02:10:45.000000Z\"\n }\n }" tags: - Leads requestBody: required: true content: application/json: schema: type: object properties: first_name: type: string description: 'The first name of the contact.' example: John last_name: type: string description: 'optional The last name of the contact.' example: Doe nullable: true email: type: string description: 'The email address of the contact. Must be in a valid email format.' example: john@doe.com title: type: string description: 'The title of the contact.' example: Engineer nullable: true company: type: string description: 'The company name of the contact.' example: 'John Doe company' nullable: true notes: type: string description: 'Additional notes about the contact.' example: 'Important client' custom_variables: type: array description: 'Array of custom variable objects' example: - name: 'phone number' value: '9059999999' items: type: object nullable: true properties: name: type: required description: 'name of the custom variable field' example: esse value: type: required description: 'value of the custom variable' example: dolores nullable: true required: - first_name - email patch: summary: 'Update lead' operationId: updateLead description: "Update the details of a specific lead\n\nFields passed in the request will be updated. Fields and custom variables not passed will remain unchanged." parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 326217,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a622\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"johaan@doaescuts5esse.com\",\n \"title\": \"Engineer\",\n \"company\": \"John Doe Company\",\n \"notes\": \"Important client\",\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"another one\",\n \"value\": \"baddye\"\n }\n ],\n \"lead_campaign_data\": [],\n \"overall_stats\": {\n \"emails_sent\": 3,\n \"opens\": 0,\n \"replies\": 1\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2024-07-29T02:10:45.000000Z\",\n \"updated_at\": \"2024-07-29T02:10:45.000000Z\"\n }\n }" tags: - Leads requestBody: required: false content: application/json: schema: type: object properties: first_name: type: string description: 'The first name of the contact.' example: John last_name: type: string description: 'The last name of the contact.' example: Doe email: type: string description: 'The email address of the contact. Must be in a valid email format.' example: john@doe.com title: type: string description: 'The title of the contact.' example: Engineer nullable: true company: type: string description: 'The company name of the contact.' example: 'John Doe company' nullable: true notes: type: string description: 'Additional notes about the contact.' example: 'Important client' nullable: true custom_variables: type: array description: 'Array of custom variable objects' example: - name: 'phone number' value: '9059999999' items: type: object nullable: true properties: name: type: required description: 'name of the custom variable field' example: quia value: type: required description: 'value of the custom variable' example: iure nullable: true delete: summary: 'Delete a lead' operationId: deleteALead description: "Permanently delete a lead and its associated data\n\n**Hold on. You may not need to delete leads.**\nYou may be able to simply re-upload leads instead\n\n**I mapped the wrong custom variables for these leads**\nNo problem! Simply re-upload the leads and we'll update the records in place. This is especially useful if you already have lead history like conversations, campaigns, etc.\n\n**I don't to email these leads anymore**\nWe recommend unsubscribing these leads instead. Bulk select -> Update Status -> Unsubscribe. This way, you can preserve the lead history and stats for future reports.\n\n**I want to update these leads with more data**\nInstead of deleting, simply re-upload the leads. We'll update the records in place. This includes all campaign emails too.\n\n**I attached the wrong tags**\nYou can simply bulk select and remove tags instead of deleting the entire leads.\n\n**I don't want to use too much data**\nWe have no limits on lead storage. You can store as many leads as you want. We recommend keeping the leads in your workspace for future campaigns.\n\n**Why is it recommended to not delete leads?**\nWe build up history for every lead record you upload. There's no harm in keeping it in the workspace. If you delete leads, future responses from that lead will be untracked and not tied to any campaigns. This can be harder to manage for your team.\n\nThe behaviour of deleting leads comes from other sequencers that charge you for lead storage. You don't need to worry about deleting leads for 99% of use cases.\n\n**If you still want to delete leads, please read below carefully**\n\n**Leads will be removed from campaigns**\nThis will stop all future emails for the selected leads and remove them from all campaigns. If campaigns have no more leads remaining, they will be marked as \"completed\"\n\n**Previous campaign stats will be preserved**\nWe will preserve all past campaign stats like replies, opens, emails sent, etc.\n\n**Past and future lead conversations will be affected**\nPast conversations will no longer be tied to these leads, and future emails in those conversations will show us as \"untracked.\"\n\n**Leads will no longer be accessible via API**\nIf you have workflows that use these leads, they will no longer work. These leads will be deleted permanently. If you re-upload them in the future, they will be different lead records.\n\n**Future campaign stats will not be tracked**\nIf any of these leads reply in the future, those emails not increment any stats. They will show up as \"untracked replies.\" This also means that any webhook workflows will also be affected.\n\n**We recommend unsubscribing these leads instead**\nIf you simply don't want to email these leads anymore, we recommend unsubscribing them instead. This will preserve all data and all workflows, and there's no additional cost to you." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Lead deletion process started. This might take some time depending on how much data you have.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Lead deletion process started. This might take some time depending on how much data you have.' tags: - Leads parameters: - in: path name: lead_id description: 'Optional parameter. int|string The ID or email of the lead' required: true schema: type: string examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: rem '/api/leads/{lead_id}/replies': get: summary: 'Get all replies for lead' operationId: getAllRepliesForLead description: "This endpoint retrieves all replies for a specific lead\n\nThe user must provide a valid authentication token in the request header to access this endpoint.\n\nThis route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work" parameters: - in: query name: search description: 'Search term for filtering replies.' example: interested required: false schema: type: string description: 'Search term for filtering replies.' example: interested nullable: true - in: query name: status description: 'Filter by status. One of `interested`, `automated_reply`, `not_automated_reply`.' example: automated_reply required: false schema: type: string description: 'Filter by status. One of `interested`, `automated_reply`, `not_automated_reply`.' example: automated_reply - in: query name: folder description: 'Filter by folder. One of `inbox`, `sent`, `spam`, `bounced`, `all`.' example: inbox required: false schema: type: string description: 'Filter by folder. One of `inbox`, `sent`, `spam`, `bounced`, `all`.' example: inbox - in: query name: read description: 'Filter by read status.' example: true required: false schema: type: boolean description: 'Filter by read status.' example: true nullable: true - in: query name: campaign_id description: 'The ID of the campaign.' example: 12 required: false schema: type: integer description: 'The ID of the campaign.' example: 12 - in: query name: sender_email_id description: 'The ID of the sender email address.' example: 243 required: false schema: type: integer description: 'The ID of the sender email address.' example: 243 - in: query name: tag_ids description: 'Array of tag IDs to filter by.' example: - 1 - 2 - 3 required: false schema: type: array description: 'Array of tag IDs to filter by.' example: - 1 - 2 - 3 items: type: integer - in: query name: pagination_type description: '' example: length_aware required: false schema: type: string description: '' example: length_aware enum: - cursor - length_aware responses: 200: description: success content: application/json: schema: type: object example: data: - id: 45 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a621 folder: Inbox subject: 'yo test boy wassup G' read: true interested: false automated_reply: false html_body: '
yo whats good essssssey
' text_body: 'yo whats good essssssey' raw_body: null headers: null date_received: '2024-09-21T02:10:42.000000Z' type: 'Untracked Reply' tracked_reply: false scheduled_email_id: null campaign_id: null lead_id: 990 lead: id: 150444 first_name: John last_name: Doe email: john@doe.com title: 'Vice President' company: 'Blue Science' notes: null status: unverified custom_variables: - name: phone_number value: 123-456-7890 overall_stats: emails_sent: 1 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2026-01-14T02:54:56.000000Z' updated_at: '2026-01-21T17:15:38.000000Z' sender_email_id: 25057 raw_message_id: '' from_name: 'Cody Smith' from_email_address: cody@emailguard.io primary_to_email_address: usysows3w88c6ljx@eguardtest.com to: - name: 'Chimma Tester' address: usysows3w88c6ljx@eguardtest.com cc: null bcc: null parent_id: null attachments: - id: 213 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a621 status: processed reply_id: 45 file_name: image.png download_url: 'http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67' created_at: '2025-06-18T02:38:40.000000Z' updated_at: '2025-06-18T02:38:40.000000Z' links: first: 'http://bison.test/api/leads/1/replies?page=1' last: 'http://bison.test/api/leads/1/replies?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/leads/1/replies?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/leads/1/replies' per_page: 15 to: 3 total: 3 properties: data: type: array example: - id: 45 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a621 folder: Inbox subject: 'yo test boy wassup G' read: true interested: false automated_reply: false html_body: '
yo whats good essssssey
' text_body: 'yo whats good essssssey' raw_body: null headers: null date_received: '2024-09-21T02:10:42.000000Z' type: 'Untracked Reply' tracked_reply: false scheduled_email_id: null campaign_id: null lead_id: 990 lead: id: 150444 first_name: John last_name: Doe email: john@doe.com title: 'Vice President' company: 'Blue Science' notes: null status: unverified custom_variables: - name: phone_number value: 123-456-7890 overall_stats: emails_sent: 1 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2026-01-14T02:54:56.000000Z' updated_at: '2026-01-21T17:15:38.000000Z' sender_email_id: 25057 raw_message_id: '' from_name: 'Cody Smith' from_email_address: cody@emailguard.io primary_to_email_address: usysows3w88c6ljx@eguardtest.com to: - name: 'Chimma Tester' address: usysows3w88c6ljx@eguardtest.com cc: null bcc: null parent_id: null attachments: - id: 213 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a621 status: processed reply_id: 45 file_name: image.png download_url: 'http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67' created_at: '2025-06-18T02:38:40.000000Z' updated_at: '2025-06-18T02:38:40.000000Z' items: type: object properties: id: type: integer example: 45 uuid: type: string example: 9f7a2718-aa56-43k2-a52b-a44dc183a621 folder: type: string example: Inbox subject: type: string example: 'yo test boy wassup G' read: type: boolean example: true interested: type: boolean example: false automated_reply: type: boolean example: false html_body: type: string example: '
yo whats good essssssey
' text_body: type: string example: 'yo whats good essssssey' raw_body: type: string example: null nullable: true headers: type: string example: null nullable: true date_received: type: string example: '2024-09-21T02:10:42.000000Z' type: type: string example: 'Untracked Reply' tracked_reply: type: boolean example: false scheduled_email_id: type: string example: null nullable: true campaign_id: type: string example: null nullable: true lead_id: type: integer example: 990 lead: type: object properties: id: type: integer example: 150444 first_name: type: string example: John last_name: type: string example: Doe email: type: string example: john@doe.com title: type: string example: 'Vice President' company: type: string example: 'Blue Science' notes: type: string example: null nullable: true status: type: string example: unverified custom_variables: type: array example: - name: phone_number value: 123-456-7890 items: type: object properties: name: type: string example: phone_number value: type: string example: 123-456-7890 overall_stats: type: object properties: emails_sent: type: integer example: 1 opens: type: integer example: 0 replies: type: integer example: 1 unique_replies: type: integer example: 1 unique_opens: type: integer example: 0 created_at: type: string example: '2026-01-14T02:54:56.000000Z' updated_at: type: string example: '2026-01-21T17:15:38.000000Z' sender_email_id: type: integer example: 25057 raw_message_id: type: string example: '' from_name: type: string example: 'Cody Smith' from_email_address: type: string example: cody@emailguard.io primary_to_email_address: type: string example: usysows3w88c6ljx@eguardtest.com to: type: array example: - name: 'Chimma Tester' address: usysows3w88c6ljx@eguardtest.com items: type: object properties: name: type: string example: 'Chimma Tester' address: type: string example: usysows3w88c6ljx@eguardtest.com cc: type: string example: null nullable: true bcc: type: string example: null nullable: true parent_id: type: string example: null nullable: true attachments: type: array example: - id: 213 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a621 status: processed reply_id: 45 file_name: image.png download_url: 'http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67' created_at: '2025-06-18T02:38:40.000000Z' updated_at: '2025-06-18T02:38:40.000000Z' items: type: object properties: id: type: integer example: 213 uuid: type: string example: 9f7a2718-aa56-43k2-a52b-a44dc183a621 status: type: string example: processed reply_id: type: integer example: 45 file_name: type: string example: image.png download_url: type: string example: 'http://localhost/reply-attachments/9f2e5a48-5ed6-4021-ae32-66e61908173d/download%7D?signature=5374531e5a71a0c508b75678e53ea48e7d7dae22614bca3703c41cf199e21e67' created_at: type: string example: '2025-06-18T02:38:40.000000Z' updated_at: type: string example: '2025-06-18T02:38:40.000000Z' links: type: object properties: first: type: string example: 'http://bison.test/api/leads/1/replies?page=1' last: type: string example: 'http://bison.test/api/leads/1/replies?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/leads/1/replies?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/leads/1/replies' per_page: type: integer example: 15 to: type: integer example: 3 total: type: integer example: 3 tags: - Leads parameters: - in: path name: lead_id description: 'the ID or email of the lead' example: 14 required: true schema: type: integer /api/leads/multiple: post: summary: 'Bulk create leads' operationId: bulkCreateLeads description: "Create multiple lead records in a single request (limit 500 per request)\n\nPersonal domains will be skipped unless enabled on your instance. get in touch with support if you want to send to personal domains (e.g. gmail.com)" parameters: [] responses: 201: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 326217,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a622\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Engineer\",\n \"company\": \"John Doe Company\",\n \"notes\": \"Important client\",\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone number\",\n \"value\": \"9059999999\"\n }\n ],\n \"lead_campaign_data\": [],\n \"overall_stats\": {\n \"emails_sent\": 3,\n \"opens\": 0,\n \"replies\": 1\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2024-07-29T02:10:45.000000Z\",\n \"updated_at\": \"2024-07-29T02:10:45.000000Z\"\n }\n ]\n }" tags: - Leads requestBody: required: true content: application/json: schema: type: object properties: leads: type: array description: 'An array of lead objects.' example: - [] items: type: object properties: first_name: type: string description: 'The first name of the contact.' example: John last_name: type: string description: 'optional The last name of the contact.' example: Doe nullable: true email: type: string description: 'The email address of the contact. Must be unique and in a valid email format.' example: john@doe.com title: type: string description: 'optional The title of the contact.' example: Engineer nullable: true company: type: string description: 'optional The company name of the contact.' example: 'John Doe Company' nullable: true notes: type: string description: 'optional Additional notes about the contact.' example: 'Important client' nullable: true custom_variables: type: array description: 'optional Array of custom variable objects.' example: - name: 'phone number' value: '9059999999' items: type: object nullable: true properties: name: type: required description: 'The name of the custom variable field.' example: cupiditate value: type: required description: 'The value of the custom variable.' example: expedita nullable: true required: - first_name - email required: - leads /api/leads/bulk-update-status: patch: summary: 'Bulk update lead status' operationId: bulkUpdateLeadStatus description: 'Bulk update the status of multiple selected leads' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully updated the status of selected leads' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully updated the status of selected leads' tags: - Leads requestBody: required: true content: application/json: schema: type: object properties: lead_ids: type: array description: 'The array of lead IDs.' example: - 12 items: type: integer status: type: string description: 'The status to apply to the lead.' example: risky enum: - verified - unverified - unknown - unsubscribed - risky - inactive required: - lead_ids - status /api/leads/create-or-update/multiple: post: summary: 'Update or create multiple leads' operationId: updateOrCreateMultipleLeads description: "Update or create multiple lead records in a single request (limit 500 per request).\n\nPersonal domains will be skipped unless enabled on your instance. get in touch with support if you want to send to personal domains (e.g. gmail.com)" parameters: [] responses: 201: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 326217,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a622\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@doe.com\",\n \"title\": \"Engineer\",\n \"company\": \"John Doe Company\",\n \"notes\": \"Important client\",\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"phone number\",\n \"value\": \"9059999999\"\n }\n ],\n \"lead_campaign_data\": [],\n \"overall_stats\": {\n \"emails_sent\": 3,\n \"opens\": 0,\n \"replies\": 1\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2024-07-29T02:10:45.000000Z\",\n \"updated_at\": \"2024-07-29T02:10:45.000000Z\"\n }\n ]\n }" tags: - Leads requestBody: required: true content: application/json: schema: type: object properties: existing_lead_behavior: type: string description: "The behavior to apply when a lead already exists.\n\nIf \"put\", replace all the lead's fields, including custom variables, with the fields from this request. Fields not passed are cleared.\n\nIf \"patch\", only update a field if it's passed. Fields and custom variables not passed are kept.\n\nWill default to \"put\" if not passed." example: patch enum: - put - patch leads: type: array description: 'An array of lead objects.' example: - [] items: type: object properties: first_name: type: string description: 'The first name of the contact.' example: John last_name: type: string description: 'optional The last name of the contact.' example: Doe nullable: true email: type: string description: 'The email address of the contact. Must be unique and in a valid email format.' example: john@doe.com title: type: string description: 'optional The title of the contact.' example: Engineer nullable: true company: type: string description: 'optional The company name of the contact.' example: 'John Doe Company' nullable: true notes: type: string description: 'optional Additional notes about the contact.' example: 'Important client' nullable: true custom_variables: type: array description: 'optional Array of custom variable objects.' example: - name: 'phone number' value: '9059999999' items: type: object nullable: true properties: name: type: required description: 'The name of the custom variable field.' example: culpa value: type: required description: 'The value of the custom variable.' example: animi nullable: true required: - first_name - email required: - leads '/api/leads/create-or-update/{lead_id}': post: summary: 'Update or create lead' operationId: updateOrCreateLead description: 'Update the details of a specific lead if it exists, otherwise create a new record' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 326217,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a622\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"johaan@doaescuts5esse.com\",\n \"title\": \"Engineer\",\n \"company\": \"John Doe Company\",\n \"notes\": \"Important client\",\n \"status\": \"unverified\",\n \"custom_variables\": [\n {\n \"name\": \"another one\",\n \"value\": \"baddye\"\n }\n ],\n \"lead_campaign_data\": [],\n \"overall_stats\": {\n \"emails_sent\": 3,\n \"opens\": 0,\n \"replies\": 1\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2024-07-29T02:10:45.000000Z\",\n \"updated_at\": \"2024-07-29T02:10:45.000000Z\"\n }\n }" tags: - Leads requestBody: required: true content: application/json: schema: type: object properties: existing_lead_behavior: type: string description: "The behavior to apply if the lead exists.\n\nIf \"put\", replace all the lead's fields, including custom variables, with the fields from this request. Fields not passed are cleared.\n\nIf \"patch\", only update a field if it's passed. Fields and custom variables not passed are kept.\n\nWill default to \"put\" if not passed." example: patch enum: - put - patch first_name: type: string description: 'The first name of the contact.' example: John last_name: type: string description: 'optional The last name of the contact.' example: Doe nullable: true email: type: string description: 'The email address of the contact. Must be in a valid email format.' example: john@doe.com title: type: string description: 'optional The title of the contact.' example: Engineer nullable: true company: type: string description: 'optional The company name of the contact.' example: 'John Doe company' nullable: true notes: type: string description: 'optional Additional notes about the contact.' example: 'Important client' custom_variables: type: array description: 'optional Array of custom variable objects' example: - name: 'phone number' value: '9059999999' items: type: object nullable: true properties: name: type: required description: 'name of the custom variable field' example: commodi value: type: required description: 'value of the custom variable' example: necessitatibus nullable: true required: - first_name - email parameters: - in: path name: lead_id description: 'Optional parameter. int|string|null optional The ID or email of the lead' required: true schema: type: string examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: qui '/api/leads/{lead_id}/unsubscribe': patch: summary: 'Unsubscribe lead' operationId: unsubscribeLead description: 'Unsubscribe a lead from scheduled emails.' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 326217,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a622\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"johaan@doaescuts5esse.com\",\n \"title\": \"Engineer\",\n \"company\": \"John Doe Company\",\n \"notes\": \"Important client\",\n \"status\": \"unsubscribed\",\n \"custom_variables\": [\n {\n \"name\": \"another one\",\n \"value\": \"baddye\"\n }\n ],\n \"lead_campaign_data\": [],\n \"overall_stats\": {\n \"emails_sent\": 3,\n \"opens\": 0,\n \"replies\": 1\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2024-07-29T02:10:45.000000Z\",\n \"updated_at\": \"2024-07-29T02:10:45.000000Z\"\n }\n }" tags: - Leads parameters: - in: path name: lead_id description: 'The ID of the contact' example: 10 required: true schema: type: integer '/api/leads/{lead_id}/blacklist': post: summary: 'Add lead to blacklist' operationId: addLeadToBlacklist description: 'Add a lead to your global blacklist.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1 email: john@doe.com created_at: '2024-07-29T02:10:45.000000Z' updated_at: '2024-07-29T02:10:45.000000Z' properties: data: type: object properties: id: type: integer example: 1 email: type: string example: john@doe.com created_at: type: string example: '2024-07-29T02:10:45.000000Z' updated_at: type: string example: '2024-07-29T02:10:45.000000Z' 400: description: '' content: application/json: schema: type: object example: data: success: false message: 'Lead is already blacklisted' properties: data: type: object properties: success: type: boolean example: false message: type: string example: 'Lead is already blacklisted' tags: - Leads requestBody: required: false content: application/json: schema: type: object properties: skip_webhooks: type: boolean description: 'Skip webhook event firing.' example: true parameters: - in: path name: lead_id description: 'The ID of the contact' example: 15 required: true schema: type: integer /api/leads/bulk/csv: post: summary: 'Bulk create leads using CSV' operationId: bulkCreateLeadsUsingCSV description: 'Create multiple leads in a single request using a CSV' parameters: [] responses: 201: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 9,\n \"name\": \"\",\n \"status\": \"Unprocessed\",\n \"leads_processed\": 0,\n \"leads_succeeded\": 0,\n \"leads_failed\": 0,\n \"error_messages\": null,\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-04-14T16:59:21.000000Z\"\n }\n ],\n}" tags: - Leads requestBody: required: true content: multipart/form-data: schema: type: object properties: name: type: string description: 'The name of the contact list' example: "John Doe's list" csv: type: string format: binary description: 'The CSV file containing the contacts.' existing_lead_behavior: type: string description: "The behavior to apply when a lead already exists.\n\nIf \"put\", replace all the lead's fields, including custom variables, with the fields from this request. Fields not passed are cleared.\n\nIf \"patch\", only update a field if it's passed. Fields and custom variables not passed are kept.\n\nIf \"skip\", do not process the lead.\n\nWill default to \"put\" if not passed." example: skip enum: - put - patch - skip columnsToMap: type: array description: 'The array with the header fields from the csv.' example: - [] items: type: object nullable: true properties: first_name: type: string description: 'The first name header field of the csv.' example: name last_name: type: string description: 'optional The last name header field of the csv.' example: 'last name' email: type: string description: 'The email address header field of the csv.' example: e-mail title: type: string description: 'The title header field of the csv.' example: title company: type: string description: 'The company name header field of the csv.' example: company custom_variable: type: string description: 'The header field from your CSV to match this variable' example: linkedin required: - first_name - email required: - name - csv - columnsToMap '/api/leads/{lead_id}/scheduled-emails': get: summary: 'Get all scheduled emails' operationId: getAllScheduledEmails description: "Retrieves a collection of scheduled emails associated with a lead. These scheduled emails\ncan have multiple statuses including: `scheduled`, `sending paused`, `stopped`, `bounced`, `unsubscribed`, `replied`" parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: - id: 1 campaign_id: 1 lead_id: 1 sender_email_id: 2 sequence_step_id: 3 thread_reply: true email_subject: 'First Subject' email_body: 'dummy email body' status: scheduled scheduled_date: '2024-11-25T15:30:00.000000Z' scheduled_date_local: '2024-11-25T15:30:00.000000Z' sent_at: null opens: 0 clicks: 0 replies: 0 interested: false unique_replies: 0 unique_opens: 0 lead: id: 1 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a622 first_name: John last_name: Doe email: john@doe.com title: Engineer company: 'John Doe company' notes: 'Important client' status: verified custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' sender_email: id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected warmup_enabled: true emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true - id: 1 campaign_id: 1 lead_id: 1 sender_email_id: 2 sequence_step_id: 3 thread_reply: true email_subject: 'Second Subject' email_body: 'dummy email body' status: sent scheduled_date: '2024-11-22T20:00:00.000000Z' scheduled_date_local: '2024-11-22T20:00:00.000000Z' sent_at: '2024-11-22T20:00:00.000000Z' opens: 2 clicks: 1 replies: 1 interested: true unique_replies: 0 unique_opens: 0 lead: id: 1 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a622 first_name: John last_name: Doe email: john@doe.com title: Engineer company: 'John Doe company' notes: 'Important client' status: verified custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' sender_email: id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected warmup_enabled: true emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true links: first: 'http://bison.test/api/leads/1/scheduled-emails?page=1' last: 'http://bison.test/api/leads/1/scheduled-emails?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/leads/1/scheduled-emails?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/leads/1/scheduled-emails' per_page: 15 to: 3 total: 3 properties: data: type: array example: - id: 1 campaign_id: 1 lead_id: 1 sender_email_id: 2 sequence_step_id: 3 thread_reply: true email_subject: 'First Subject' email_body: 'dummy email body' status: scheduled scheduled_date: '2024-11-25T15:30:00.000000Z' scheduled_date_local: '2024-11-25T15:30:00.000000Z' sent_at: null opens: 0 clicks: 0 replies: 0 interested: false unique_replies: 0 unique_opens: 0 lead: id: 1 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a622 first_name: John last_name: Doe email: john@doe.com title: Engineer company: 'John Doe company' notes: 'Important client' status: verified custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' sender_email: id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected warmup_enabled: true emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true - id: 1 campaign_id: 1 lead_id: 1 sender_email_id: 2 sequence_step_id: 3 thread_reply: true email_subject: 'Second Subject' email_body: 'dummy email body' status: sent scheduled_date: '2024-11-22T20:00:00.000000Z' scheduled_date_local: '2024-11-22T20:00:00.000000Z' sent_at: '2024-11-22T20:00:00.000000Z' opens: 2 clicks: 1 replies: 1 interested: true unique_replies: 0 unique_opens: 0 lead: id: 1 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a622 first_name: John last_name: Doe email: john@doe.com title: Engineer company: 'John Doe company' notes: 'Important client' status: verified custom_variables: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' lead_campaign_data: [] overall_stats: emails_sent: 3 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' sender_email: id: 1 name: 'John Doe' email: john@doe.com email_signature: '

John Doe | Consultant

' imap_server: imap.server imap_port: 110 smtp_server: smtp.server smtp_port: 112 daily_limit: 5 type: Inbox status: Connected warmup_enabled: true emails_sent_count: 100 total_replied_count: 10 total_opened_count: 25 unsubscribed_count: 0 bounced_count: 0 unique_replied_count: 7 unique_opened_count: 7 total_leads_contacted_count: 50 interested_leads_count: 3 created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' tags: - id: 1 name: Google default: true items: type: object properties: id: type: integer example: 1 campaign_id: type: integer example: 1 lead_id: type: integer example: 1 sender_email_id: type: integer example: 2 sequence_step_id: type: integer example: 3 thread_reply: type: boolean example: true email_subject: type: string example: 'First Subject' email_body: type: string example: 'dummy email body' status: type: string example: scheduled scheduled_date: type: string example: '2024-11-25T15:30:00.000000Z' scheduled_date_local: type: string example: '2024-11-25T15:30:00.000000Z' sent_at: type: string example: null nullable: true opens: type: integer example: 0 clicks: type: integer example: 0 replies: type: integer example: 0 interested: type: boolean example: false unique_replies: type: integer example: 0 unique_opens: type: integer example: 0 lead: type: object properties: id: type: integer example: 1 uuid: type: string example: 9f7a2718-aa56-43k2-a52b-a44dc183a622 first_name: type: string example: John last_name: type: string example: Doe email: type: string example: john@doe.com title: type: string example: Engineer company: type: string example: 'John Doe company' notes: type: string example: 'Important client' status: type: string example: verified custom_variables: type: array example: - name: company_website value: 'https://company.com' - name: linkedin_url value: 'https://linkedin.com/in/john' items: type: object properties: name: type: string example: company_website value: type: string example: 'https://company.com' lead_campaign_data: type: array example: [] overall_stats: type: object properties: emails_sent: type: integer example: 3 opens: type: integer example: 0 replies: type: integer example: 1 unique_replies: type: integer example: 1 unique_opens: type: integer example: 0 created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' sender_email: type: object properties: id: type: integer example: 1 name: type: string example: 'John Doe' email: type: string example: john@doe.com email_signature: type: string example: '

John Doe | Consultant

' imap_server: type: string example: imap.server imap_port: type: integer example: 110 smtp_server: type: string example: smtp.server smtp_port: type: integer example: 112 daily_limit: type: integer example: 5 type: type: string example: Inbox status: type: string example: Connected warmup_enabled: type: boolean example: true emails_sent_count: type: integer example: 100 total_replied_count: type: integer example: 10 total_opened_count: type: integer example: 25 unsubscribed_count: type: integer example: 0 bounced_count: type: integer example: 0 unique_replied_count: type: integer example: 7 unique_opened_count: type: integer example: 7 total_leads_contacted_count: type: integer example: 50 interested_leads_count: type: integer example: 3 created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: type: array example: - id: 1 name: Google default: true items: type: object properties: id: type: integer example: 1 name: type: string example: Google default: type: boolean example: true links: type: object properties: first: type: string example: 'http://bison.test/api/leads/1/scheduled-emails?page=1' last: type: string example: 'http://bison.test/api/leads/1/scheduled-emails?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/leads/1/scheduled-emails?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/leads/1/scheduled-emails' per_page: type: integer example: 15 to: type: integer example: 3 total: type: integer example: 3 tags: - Leads parameters: - in: path name: lead_id description: 'the ID or email of the lead' example: 1 required: true schema: type: integer '/api/leads/{lead_id}/sent-emails': get: summary: 'Get all sent emails for a lead' operationId: getAllSentEmailsForALead description: 'Retrieves a collection of **sent** campaign emails associated with a lead on the authenticated workspace.' parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 1,\n \"campaign_id\": 1,\n \"lead_id\": 1,\n \"sender_email_id\": 2,\n \"sequence_step_id\": 3,\n \"thread_reply\": true,\n \"email_subject\": \"First Subject\",\n \"email_body\": \"dummy email body\",\n \"status\": \"sent\",\n \"scheduled_date\": \"2024-11-25T15:30:00.000000Z\",\n \"scheduled_date_local\": \"2024-11-25T15:30:00.000000Z\",\n \"sent_at\": null,\n \"opens\": 0,\n \"clicks\": 0,\n \"replies\": 0,\n \"interested\": false,\n \"unique_replies\": 0,\n \"unique_opens\": 0\n },\n {\n \"id\": 1,\n \"campaign_id\": 1,\n \"lead_id\": 1,\n \"sender_email_id\": 2,\n \"sequence_step_id\": 3,\n \"thread_reply\": true,\n \"email_subject\": \"Second Subject\",\n \"email_body\": \"dummy email body\",\n \"status\": \"sent\",\n \"scheduled_date\": \"2024-11-22T20:00:00.000000Z\",\n \"scheduled_date_local\": \"2024-11-22T20:00:00.000000Z\",\n \"sent_at\": \"2024-11-22T20:00:00.000000Z\",\n \"opens\": 2,\n \"clicks\": 1,\n \"replies\": 1,\n \"interested\": true,\n \"unique_replies\": 0,\n \"unique_opens\": 0\n },\n ]\n}" tags: - Leads parameters: - in: path name: lead_id description: 'The ID or the email of the lead.' example: qui required: true schema: type: string '/api/leads/{lead_id}/update-status': patch: summary: 'Update lead status' operationId: updateLeadStatus description: 'Update the status of a lead' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 326217,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a622\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"johaan@doaescuts5esse.com\",\n \"title\": \"Engineer\",\n \"company\": \"John Doe Company\",\n \"notes\": \"Important client\",\n \"status\": \"unsubscribed\",\n \"custom_variables\": [\n {\n \"name\": \"another one\",\n \"value\": \"baddye\"\n }\n ],\n \"lead_campaign_data\": [],\n \"overall_stats\": {\n \"emails_sent\": 3,\n \"opens\": 0,\n \"replies\": 1\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2024-07-29T02:10:45.000000Z\",\n \"updated_at\": \"2024-07-29T02:10:45.000000Z\"\n }\n }" tags: - Leads requestBody: required: true content: application/json: schema: type: object properties: status: type: string description: 'The status to apply to the lead.' example: risky enum: - verified - unverified - unknown - unsubscribed - risky - inactive required: - status parameters: - in: path name: lead_id description: 'The ID or email of the lead.' example: fugit required: true schema: type: string /api/leads/bulk: delete: summary: 'Bulk delete leads by ID' operationId: bulkDeleteLeadsByID description: "Permanently delete leads and associated data\n\n**Hold on. You may not need to delete leads.**\n You may be able to simply re-upload leads instead\n\n **I mapped the wrong custom variables for these leads**\n No problem! Simply re-upload the leads and we'll update the records in place. This is especially useful if you already have lead history like conversations, campaigns, etc.\n\n **I don't to email these leads anymore**\n We recommend unsubscribing these leads instead. Bulk select -> Update Status -> Unsubscribe. This way, you can preserve the lead history and stats for future reports.\n\n **I want to update these leads with more data**\n Instead of deleting, simply re-upload the leads. We'll update the records in place. This includes all campaign emails too.\n\n **I attached the wrong tags**\n You can simply bulk select and remove tags instead of deleting the entire leads.\n\n **I don't want to use too much data**\n We have no limits on lead storage. You can store as many leads as you want. We recommend keeping the leads in your workspace for future campaigns.\n\n **Why is it recommended to not delete leads?**\n We build up history for every lead record you upload. There's no harm in keeping it in the workspace. If you delete leads, future responses from that lead will be untracked and not tied to any campaigns. This can be harder to manage for your team.\n\n The behaviour of deleting leads comes from other sequencers that charge you for lead storage. You don't need to worry about deleting leads for 99% of use cases.\n\n **If you still want to delete leads, please read below carefully**\n\n **Leads will be removed from campaigns**\n This will stop all future emails for the selected leads and remove them from all campaigns. If campaigns have no more leads remaining, they will be marked as \"completed\"\n\n **Previous campaign stats will be preserved**\n We will preserve all past campaign stats like replies, opens, emails sent, etc.\n\n **Past and future lead conversations will be affected**\n Past conversations will no longer be tied to these leads, and future emails in those conversations will show us as \"untracked.\"\n\n **Leads will no longer be accessible via API**\n If you have workflows that use these leads, they will no longer work. These leads will be deleted permanently. If you re-upload them in the future, they will be different lead records.\n\n **Future campaign stats will not be tracked**\n If any of these leads reply in the future, those emails not increment any stats. They will show up as \"untracked replies.\" This also means that any webhook workflows will also be affected.\n\n **We recommend unsubscribing these leads instead**\n If you simply don't want to email these leads anymore, we recommend unsubscribing them instead. This will preserve all data and all workflows, and there's no additional cost to you." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Lead deletion process started. This might take some time depending on how much data you have.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Lead deletion process started. This might take some time depending on how much data you have.' tags: - Leads requestBody: required: false content: application/json: schema: type: object properties: lead_ids: type: array description: 'Must match an existing stored value.' example: - 7 items: type: integer '/api/oauth-sessions/{id}': get: summary: 'View oAuth Session' operationId: viewOAuthSession description: "This endpoint allows the authenticated user to view an oAuth session.\n\nYou can use this endpoint to check the status of the session.\nPossible statues are: pending, expired, success, failure." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 uuid: a21347c0-599f-4fda-a14d-79f1ac304f53 url: 'https://accounts.google.com/o/oauth2/auth?...' type: google status: success error: null error_message: null sender_email_id: null expires_at: '2026-04-14T16:49:21.000000Z' created_at: '2026-04-14T16:39:21.000000Z' updated_at: '2026-04-14T16:39:21.000000Z' properties: data: type: object properties: id: type: integer example: 1 uuid: type: string example: a21347c0-599f-4fda-a14d-79f1ac304f53 url: type: string example: 'https://accounts.google.com/o/oauth2/auth?...' type: type: string example: google status: type: string example: success error: type: string example: null nullable: true error_message: type: string example: null nullable: true sender_email_id: type: string example: null nullable: true expires_at: type: string example: '2026-04-14T16:49:21.000000Z' created_at: type: string example: '2026-04-14T16:39:21.000000Z' updated_at: type: string example: '2026-04-14T16:39:21.000000Z' tags: - 'OAuth Sessions (beta)' parameters: - in: path name: id description: 'The id of the oAuth session.' example: 9 required: true schema: type: integer /api/oauth-sessions/microsoft: post: summary: 'Create Microsoft oAuth Session' operationId: createMicrosoftOAuthSession description: "This endpoint creates a Microsoft oAuth session, valid for 10 minutes.\n\nNote: this endpoint has a limit of 60 requests per minute." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true oauth_session: id: 1 uuid: a21347c0-599f-4fda-a14d-79f1ac304f53 url: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize?...' type: microsoft status: pending error: null error_message: null sender_email_id: null expires_at: '2026-04-14T16:49:21.000000Z' created_at: '2026-04-14T16:39:21.000000Z' updated_at: '2026-04-14T16:39:21.000000Z' properties: data: type: object properties: success: type: boolean example: true oauth_session: type: object properties: id: type: integer example: 1 uuid: type: string example: a21347c0-599f-4fda-a14d-79f1ac304f53 url: type: string example: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize?...' type: type: string example: microsoft status: type: string example: pending error: type: string example: null nullable: true error_message: type: string example: null nullable: true sender_email_id: type: string example: null nullable: true expires_at: type: string example: '2026-04-14T16:49:21.000000Z' created_at: type: string example: '2026-04-14T16:39:21.000000Z' updated_at: type: string example: '2026-04-14T16:39:21.000000Z' tags: - 'OAuth Sessions (beta)' requestBody: required: false content: application/json: schema: type: object properties: admin_consent_prompt: type: boolean description: "Will create a URL with the admin consent prompt, which needs to be completed once per tenant by an admin account. [Learn more](https://help.bisonsphere.com/en/articles/205-microsoft-need-admin-approval).\n\nNote: this will create a session with type `microsoft_admin_consent`, which does not connect the account after the redirect.\nIf you wish to connect this account as well, you need to make another session without passing in `admin_consent_prompt: true`." example: false /api/oauth-sessions/google: post: summary: 'Create Google oAuth Session' operationId: createGoogleOAuthSession description: "This endpoint creates a Google oAuth session, valid for 10 minutes.\n\nNote: this endpoint has a limit of 60 requests per minute." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true oauth_session: id: 2 uuid: a21347c0-599f-4fda-a14d-79f1ac304f53 url: 'https://accounts.google.com/o/oauth2/auth?...' type: google status: pending error: null error_message: null sender_email_id: null expires_at: '2026-04-14T16:49:21.000000Z' created_at: '2026-04-14T16:39:21.000000Z' updated_at: '2026-04-14T16:39:21.000000Z' properties: data: type: object properties: success: type: boolean example: true oauth_session: type: object properties: id: type: integer example: 2 uuid: type: string example: a21347c0-599f-4fda-a14d-79f1ac304f53 url: type: string example: 'https://accounts.google.com/o/oauth2/auth?...' type: type: string example: google status: type: string example: pending error: type: string example: null nullable: true error_message: type: string example: null nullable: true sender_email_id: type: string example: null nullable: true expires_at: type: string example: '2026-04-14T16:49:21.000000Z' created_at: type: string example: '2026-04-14T16:39:21.000000Z' updated_at: type: string example: '2026-04-14T16:39:21.000000Z' tags: - 'OAuth Sessions (beta)' /api/reply-templates: get: summary: 'Get all reply templates' operationId: getAllReplyTemplates description: "This endpoint retrieves all reply templates for the current workspace\n\nThe user must provide a valid authentication token in the request header to access this endpoint" parameters: - in: query name: search description: 'optional string Use full text search to filter reply templates.' example: 'positive reply template' required: false schema: type: string description: 'optional string Use full text search to filter reply templates.' example: 'positive reply template' responses: 200: description: success content: application/json: schema: type: object example: data: - id: 7 uuid: a043b958-0b6f-49aa-902c-ff277a332250 user_id: 6 name: 'Positive Reply Template Test' body: '

hi there john,


thank you for your interest in our products.

we are here to help you run this out.

can you send something my way?

' replyTemplateAttachments: - id: 1 uuid: a043b958-f86d-4088-ade0-632ad0cd9155 reply_template_id: 7 file_name: RBAC1.png download_url: 'http://bison.test/reply-template-attachments/a043b958-f86d-4088-ade0-632ad0cd9155/download%7D?signature=866d946e871c3315ba5a15b47ce5ed2d940850362f8a71acbb966522591cab59' size: 197265 created_at: '2025-11-02T23:48:48.000000Z' updated_at: '2025-11-02T23:48:48.000000Z' created_at: '2025-11-02T23:48:48.000000Z' updated_at: '2025-11-05T04:13:43.000000Z' - id: 4 uuid: a043b8a9-1364-4395-bd5b-8bd1835f1117 user_id: 6 name: 'test template' body: '

test body

' replyTemplateAttachments: [] created_at: '2025-11-02T23:46:53.000000Z' updated_at: '2025-11-02T23:46:53.000000Z' - id: 2 uuid: a043b832-235e-49bc-a9b7-994dcf4e4e85 user_id: 6 name: 'test name' body: '

test body

' replyTemplateAttachments: [] created_at: '2025-11-02T23:45:35.000000Z' updated_at: '2025-11-02T23:45:35.000000Z' links: first: 'http://bison.test/api/reply-templates?page=1' last: 'http://bison.test/api/reply-templates?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/reply-templates?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/reply-templates' per_page: 15 to: 3 total: 3 properties: data: type: array example: - id: 7 uuid: a043b958-0b6f-49aa-902c-ff277a332250 user_id: 6 name: 'Positive Reply Template Test' body: '

hi there john,


thank you for your interest in our products.

we are here to help you run this out.

can you send something my way?

' replyTemplateAttachments: - id: 1 uuid: a043b958-f86d-4088-ade0-632ad0cd9155 reply_template_id: 7 file_name: RBAC1.png download_url: 'http://bison.test/reply-template-attachments/a043b958-f86d-4088-ade0-632ad0cd9155/download%7D?signature=866d946e871c3315ba5a15b47ce5ed2d940850362f8a71acbb966522591cab59' size: 197265 created_at: '2025-11-02T23:48:48.000000Z' updated_at: '2025-11-02T23:48:48.000000Z' created_at: '2025-11-02T23:48:48.000000Z' updated_at: '2025-11-05T04:13:43.000000Z' - id: 4 uuid: a043b8a9-1364-4395-bd5b-8bd1835f1117 user_id: 6 name: 'test template' body: '

test body

' replyTemplateAttachments: [] created_at: '2025-11-02T23:46:53.000000Z' updated_at: '2025-11-02T23:46:53.000000Z' - id: 2 uuid: a043b832-235e-49bc-a9b7-994dcf4e4e85 user_id: 6 name: 'test name' body: '

test body

' replyTemplateAttachments: [] created_at: '2025-11-02T23:45:35.000000Z' updated_at: '2025-11-02T23:45:35.000000Z' items: type: object properties: id: type: integer example: 7 uuid: type: string example: a043b958-0b6f-49aa-902c-ff277a332250 user_id: type: integer example: 6 name: type: string example: 'Positive Reply Template Test' body: type: string example: '

hi there john,


thank you for your interest in our products.

we are here to help you run this out.

can you send something my way?

' replyTemplateAttachments: type: array example: - id: 1 uuid: a043b958-f86d-4088-ade0-632ad0cd9155 reply_template_id: 7 file_name: RBAC1.png download_url: 'http://bison.test/reply-template-attachments/a043b958-f86d-4088-ade0-632ad0cd9155/download%7D?signature=866d946e871c3315ba5a15b47ce5ed2d940850362f8a71acbb966522591cab59' size: 197265 created_at: '2025-11-02T23:48:48.000000Z' updated_at: '2025-11-02T23:48:48.000000Z' items: type: object properties: id: type: integer example: 1 uuid: type: string example: a043b958-f86d-4088-ade0-632ad0cd9155 reply_template_id: type: integer example: 7 file_name: type: string example: RBAC1.png download_url: type: string example: 'http://bison.test/reply-template-attachments/a043b958-f86d-4088-ade0-632ad0cd9155/download%7D?signature=866d946e871c3315ba5a15b47ce5ed2d940850362f8a71acbb966522591cab59' size: type: integer example: 197265 created_at: type: string example: '2025-11-02T23:48:48.000000Z' updated_at: type: string example: '2025-11-02T23:48:48.000000Z' created_at: type: string example: '2025-11-02T23:48:48.000000Z' updated_at: type: string example: '2025-11-05T04:13:43.000000Z' links: type: object properties: first: type: string example: 'http://bison.test/api/reply-templates?page=1' last: type: string example: 'http://bison.test/api/reply-templates?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/reply-templates?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/reply-templates' per_page: type: integer example: 15 to: type: integer example: 3 total: type: integer example: 3 tags: - 'Reply Templates' post: summary: 'Create a reply template' operationId: createAReplyTemplate description: 'This endpoint allows the authenticated user to create a new reply template' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 9 uuid: a04c1f16-2cef-4bb7-b90b-c5de0fc4b239 user_id: 19 name: 'new reply template' body: 'this is a message' replyTemplateAttachments: [] created_at: '2025-11-07T03:59:55.000000Z' updated_at: '2025-11-07T03:59:55.000000Z' properties: data: type: object properties: id: type: integer example: 9 uuid: type: string example: a04c1f16-2cef-4bb7-b90b-c5de0fc4b239 user_id: type: integer example: 19 name: type: string example: 'new reply template' body: type: string example: 'this is a message' replyTemplateAttachments: type: array example: [] created_at: type: string example: '2025-11-07T03:59:55.000000Z' updated_at: type: string example: '2025-11-07T03:59:55.000000Z' tags: - 'Reply Templates' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name of the new reply template.' example: 'Positive Reply Template' body: type: string description: 'The full contents of the reply template message.' example: 'Hi there, thank you for showing interest... etc.' attachments: type: array description: 'optional Array of multi-part files that you want to attach with this template. Combined max size: 25MB, individual max size: 10MB.' example: null items: type: string required: - name - body '/api/reply-templates/{id}': get: summary: 'Reply template details' operationId: replyTemplateDetails description: '' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 9 uuid: a04c1f16-2cef-4bb7-b90b-c5de0fc4b239 user_id: 19 name: 'new reply template' body: 'this is a message' replyTemplateAttachments: [] created_at: '2025-11-07T03:59:55.000000Z' updated_at: '2025-11-07T03:59:55.000000Z' properties: data: type: object properties: id: type: integer example: 9 uuid: type: string example: a04c1f16-2cef-4bb7-b90b-c5de0fc4b239 user_id: type: integer example: 19 name: type: string example: 'new reply template' body: type: string example: 'this is a message' replyTemplateAttachments: type: array example: [] created_at: type: string example: '2025-11-07T03:59:55.000000Z' updated_at: type: string example: '2025-11-07T03:59:55.000000Z' tags: - 'Reply Templates' put: summary: 'Update a reply template' operationId: updateAReplyTemplate description: "This endpoint allows the authenticated user to update an existing reply template.\nIt will override the entire previous reply template, including attachments" parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 9 uuid: a04c1f16-2cef-4bb7-b90b-c5de0fc4b239 user_id: 19 name: 'updated new reply template' body: 'updated this is a message' replyTemplateAttachments: [] created_at: '2025-11-07T03:59:55.000000Z' updated_at: '2025-11-07T03:59:55.000000Z' properties: data: type: object properties: id: type: integer example: 9 uuid: type: string example: a04c1f16-2cef-4bb7-b90b-c5de0fc4b239 user_id: type: integer example: 19 name: type: string example: 'updated new reply template' body: type: string example: 'updated this is a message' replyTemplateAttachments: type: array example: [] created_at: type: string example: '2025-11-07T03:59:55.000000Z' updated_at: type: string example: '2025-11-07T03:59:55.000000Z' tags: - 'Reply Templates' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name of the new reply template.' example: 'Positive Reply Template' body: type: string description: 'The full contents of the reply template message.' example: 'Hi there, thank you for showing interest... etc.' attachments: type: array description: 'optional Array of multi-part files that you want to attach with this template. Combined max size: 25MB, individual max size: 10MB.' example: null items: type: string required: - name - body parameters: - in: path name: id description: 'The ID of the reply template.' example: 14 required: true schema: type: integer '/api/reply-templates/{reply_template_id}': delete: summary: 'Delete reply template' operationId: deleteReplyTemplate description: 'This endpoint will permanently delete the specified reply template' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Successfully deleted reply template' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully deleted reply template' tags: - 'Reply Templates' parameters: - in: path name: reply_template_id description: 'The ID of the reply template.' example: 1 required: true schema: type: integer - in: path name: id description: 'The ID of the reply template.' example: 15 required: true schema: type: integer /api/scheduled-emails: get: summary: 'Get all scheduled emails' operationId: getAllScheduledEmails description: "This route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work\n\nThis endpoint retrieves all scheduled (campaign) emails." parameters: - in: query name: status description: 'The status of the scheduled email.' example: bounced required: false schema: type: string description: 'The status of the scheduled email.' example: bounced enum: - sent - scheduled - failed - paused - stopped - bounced - unsubscribed - in: query name: campaign_ids description: 'Campaign IDs to filter by.' example: '124' required: false schema: type: '[]integer' description: 'Campaign IDs to filter by.' example: '124' - in: query name: lead_ids description: 'Lead IDs to filter by.' example: '4123' required: false schema: type: '[]integer' description: 'Lead IDs to filter by.' example: '4123' - in: query name: sender_email_ids description: 'Sender Email IDs to filter by.' example: '533' required: false schema: type: '[]integer' description: 'Sender Email IDs to filter by.' example: '533' - in: query name: scheduled_date_local description: '' example: [] required: false schema: type: object description: '' example: [] properties: { } - in: query name: scheduled_date_local.value description: "The date the email was/is scheduled to be sent at. The timezone is the campaign's timezone. The format is YYYY-MM-DD." example: '2025-04-12' required: false schema: type: string description: "The date the email was/is scheduled to be sent at. The timezone is the campaign's timezone. The format is YYYY-MM-DD." example: '2025-04-12' - in: query name: scheduled_date_local.criteria description: 'The criteria for the scheduled_date_local.' example: '<' required: false schema: type: string description: 'The criteria for the scheduled_date_local.' example: '<' enum: - '<' - '<=' - '=' - '>' - '>=' - in: query name: pagination_type description: '' example: cursor required: false schema: type: string description: '' example: cursor enum: - cursor - length_aware responses: 200: description: success content: text/plain: schema: type: string example: "{\n {\n \"data\": [\n {\n \"id\": 2542387,\n \"campaign_id\": 76,\n \"sequence_step_id\": 99,\n \"thread_reply\": false,\n \"email_subject\": \"Hey John\",\n \"email_body\": \"Check out this offer\",\n \"status\": \"sent\",\n \"scheduled_date\": \"2025-11-25T19:12:00.000000Z\",\n \"scheduled_date_local\": \"2025-11-25T19:12:00.000000Z\",\n \"sent_at\": \"2025-11-25T19:12:26.000000Z\",\n \"opens\": 0,\n \"clicks\": 0,\n \"replies\": 0,\n \"interested\": false,\n \"unique_replies\": 0,\n \"unique_opens\": 0,\n \"raw_message_id\": \"\",\n \"campaign\": {\n \"id\": 76,\n \"uuid\": \"9ee5b81f-947a-460d-b641-9ba527dfb9b9\",\n \"sequence_id\": 41,\n \"name\": \"Red Campaign\",\n \"type\": \"outbound\",\n \"status\": \"active\",\n \"completion_percentage\": 75.07,\n \"emails_sent\": 506,\n \"opened\": 0,\n \"unique_opens\": 0,\n \"replied\": 20,\n \"unique_replies\": 18,\n \"bounced\": 6,\n \"unsubscribed\": 0,\n \"interested\": 10,\n \"total_leads_contacted\": 506,\n \"max_emails_per_day\": 1000,\n \"max_new_leads_per_day\": 1000,\n \"plain_text\": true,\n \"open_tracking\": true,\n \"total_leads\": null,\n \"can_unsubscribe\": false,\n \"unsubscribe_text\": null,\n \"include_auto_replies_in_stats\": true,\n \"created_at\": \"2025-05-13T00:05:37.000000Z\",\n \"updated_at\": \"2025-11-25T17:03:22.000000Z\"\n },\n \"lead\": {\n \"id\": 52476,\n \"first_name\": \"John\",\n \"last_name\": \"Doe\",\n \"email\": \"john@email.com\",\n \"title\": \"President\",\n \"company\": \"Red Leads\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 1,\n \"unique_replies\": 1,\n \"unique_opens\": 0\n },\n \"created_at\": \"2025-05-13T00:06:25.000000Z\",\n \"updated_at\": \"2025-06-09T17:21:59.000000Z\"\n },\n \"sender_email\": {\n \"id\": 1163,\n \"name\": \"James Doe\",\n \"email\": \"James@doe.com\",\n \"email_signature\": null,\n \"imap_server\": null,\n \"imap_port\": null,\n \"smtp_server\": null,\n \"smtp_port\": null,\n \"daily_limit\": 3,\n \"type\": \"microsoft_oauth\",\n \"status\": \"Connected\",\n \"emails_sent_count\": 52,\n \"total_replied_count\": 1,\n \"total_opened_count\": 4,\n \"unsubscribed_count\": 0,\n \"bounced_count\": 1,\n \"unique_replied_count\": 1,\n \"unique_opened_count\": 2,\n \"total_leads_contacted_count\": 35,\n \"interested_leads_count\": 0,\n \"created_at\": \"2025-05-05T03:46:05.000000Z\",\n \"updated_at\": \"2025-06-24T19:07:53.000000Z\"\n }\n },\n {\n \"id\": 2542380,\n \"campaign_id\": 76,\n \"sequence_step_id\": 98,\n \"thread_reply\": false,\n \"email_subject\": \"Hey Jane\",\n \"email_body\": \"This is our offer for you...\"\n \"status\": \"sending_paused\",\n \"scheduled_date\": \"2025-11-25T17:44:00.000000Z\",\n \"scheduled_date_local\": \"2025-11-25T17:44:00.000000Z\",\n \"sent_at\": null,\n \"opens\": 0,\n \"clicks\": 0,\n \"replies\": 0,\n \"interested\": false,\n \"unique_replies\": 0,\n \"unique_opens\": 0,\n \"raw_message_id\": \"\",\n \"campaign\": {\n \"id\": 76,\n \"uuid\": \"9ee5b81f-947a-460d-b641-9ba527dfb9b9\",\n \"sequence_id\": 43,\n \"name\": \"Blue Campaign\",\n \"type\": \"outbound\",\n \"status\": \"queued\",\n \"completion_percentage\": 75.07,\n \"emails_sent\": 506,\n \"opened\": 0,\n \"unique_opens\": \"0\",\n \"replied\": 20,\n \"unique_replies\": 18,\n \"bounced\": 6,\n \"unsubscribed\": 0,\n \"interested\": 10,\n \"total_leads_contacted\": 506,\n \"max_emails_per_day\": 1000,\n \"max_new_leads_per_day\": 1000,\n \"plain_text\": true,\n \"open_tracking\": true,\n \"total_leads\": null,\n \"can_unsubscribe\": false,\n \"unsubscribe_text\": null,\n \"include_auto_replies_in_stats\": true,\n \"created_at\": \"2025-05-13T00:05:37.000000Z\",\n \"updated_at\": \"2025-11-25T17:03:22.000000Z\"\n },\n \"lead\": {\n \"id\": 52469,\n \"first_name\": \"Jane\",\n \"last_name\": \"Doe\",\n \"email\": \"jane@email.com\",\n \"title\": \"Co-Founder\",\n \"company\": \"Blue Leads\",\n \"notes\": null,\n \"status\": \"unverified\",\n \"custom_variables\": [],\n \"overall_stats\": {\n \"emails_sent\": 1,\n \"opens\": 0,\n \"replies\": 0,\n \"unique_replies\": 0,\n \"unique_opens\": 0\n },\n \"created_at\": \"2025-05-13T00:06:25.000000Z\",\n \"updated_at\": \"2025-05-28T22:24:30.000000Z\"\n },\n \"sender_email\": {\n \"id\": 1171,\n \"name\": \"Jim Smith\",\n \"email\": \"jim@email.com\",\n \"email_signature\": null,\n \"imap_server\": null,\n \"imap_port\": null,\n \"smtp_server\": null,\n \"smtp_port\": null,\n \"daily_limit\": 3,\n \"type\": \"microsoft_oauth\",\n \"status\": \"Connected\",\n \"emails_sent_count\": 50,\n \"total_replied_count\": 1,\n \"total_opened_count\": 1,\n \"unsubscribed_count\": 0,\n \"bounced_count\": 0,\n \"unique_replied_count\": 1,\n \"unique_opened_count\": 1,\n \"total_leads_contacted_count\": 33,\n \"interested_leads_count\": 0,\n \"created_at\": \"2025-05-05T03:46:28.000000Z\",\n \"updated_at\": \"2025-06-24T18:53:58.000000Z\"\n }\n }\n ],\n \"links\": {\n \"first\": \"http://bison.test/api/scheduled-emails?page=1\",\n \"last\": \"http://bison.test/api/scheduled-emails?page=1\",\n \"prev\": null,\n \"next\": null\n },\n \"meta\": {\n \"current_page\": 1,\n \"from\": 1,\n \"last_page\": 1,\n \"links\": [\n {\n \"url\": null,\n \"label\": \"« Previous\",\n \"active\": false\n },\n {\n \"url\": \"http://bison.test/api/scheduled-emails?page=1\",\n \"label\": \"1\",\n \"active\": true\n },\n {\n \"url\": null,\n \"label\": \"Next »\",\n \"active\": false\n }\n ],\n \"path\": \"http://bison.test/api/scheduled-emails\",\n \"per_page\": 15,\n \"to\": 3,\n \"total\": 3\n }\n}" tags: - 'Scheduled Emails' '/api/scheduled-emails/{id}': get: summary: 'Get scheduled email' operationId: getScheduledEmail description: 'This endpoint retrieves a single scheduled (campaign) email.' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 2542387 campaign_id: 76 sequence_step_id: 99 thread_reply: false email_subject: 'Hey John' email_body: 'Check out this offer' status: sent scheduled_date: '2025-11-25T19:12:00.000000Z' scheduled_date_local: '2025-11-25T19:12:00.000000Z' sent_at: '2025-11-25T19:12:26.000000Z' opens: 0 clicks: 0 replies: 0 interested: false unique_replies: 0 unique_opens: 0 raw_message_id: '' campaign: id: 76 uuid: 9ee5b81f-947a-460d-b641-9ba527dfb9b9 sequence_id: 41 name: 'Red Campaign' type: outbound status: active completion_percentage: 75.07 emails_sent: 506 opened: 0 unique_opens: 0 replied: 20 unique_replies: 18 bounced: 6 unsubscribed: 0 interested: 10 total_leads_contacted: 506 max_emails_per_day: 1000 max_new_leads_per_day: 1000 plain_text: true open_tracking: true total_leads: null can_unsubscribe: false unsubscribe_text: null include_auto_replies_in_stats: true created_at: '2025-05-13T00:05:37.000000Z' updated_at: '2025-11-25T17:03:22.000000Z' lead: id: 52476 first_name: John last_name: Doe email: john@email.com title: President company: 'Red Leads' notes: null status: unverified custom_variables: [] overall_stats: emails_sent: 1 opens: 0 replies: 1 unique_replies: 1 unique_opens: 0 created_at: '2025-05-13T00:06:25.000000Z' updated_at: '2025-06-09T17:21:59.000000Z' sender_email: id: 1163 name: 'James Doe' email: James@doe.com email_signature: null imap_server: null imap_port: null smtp_server: null smtp_port: null daily_limit: 3 type: microsoft_oauth status: Connected emails_sent_count: 52 total_replied_count: 1 total_opened_count: 4 unsubscribed_count: 0 bounced_count: 1 unique_replied_count: 1 unique_opened_count: 2 total_leads_contacted_count: 35 interested_leads_count: 0 created_at: '2025-05-05T03:46:05.000000Z' updated_at: '2025-06-24T19:07:53.000000Z' properties: data: type: object properties: id: type: integer example: 2542387 campaign_id: type: integer example: 76 sequence_step_id: type: integer example: 99 thread_reply: type: boolean example: false email_subject: type: string example: 'Hey John' email_body: type: string example: 'Check out this offer' status: type: string example: sent scheduled_date: type: string example: '2025-11-25T19:12:00.000000Z' scheduled_date_local: type: string example: '2025-11-25T19:12:00.000000Z' sent_at: type: string example: '2025-11-25T19:12:26.000000Z' opens: type: integer example: 0 clicks: type: integer example: 0 replies: type: integer example: 0 interested: type: boolean example: false unique_replies: type: integer example: 0 unique_opens: type: integer example: 0 raw_message_id: type: string example: '' campaign: type: object properties: id: type: integer example: 76 uuid: type: string example: 9ee5b81f-947a-460d-b641-9ba527dfb9b9 sequence_id: type: integer example: 41 name: type: string example: 'Red Campaign' type: type: string example: outbound status: type: string example: active completion_percentage: type: number example: 75.07 emails_sent: type: integer example: 506 opened: type: integer example: 0 unique_opens: type: integer example: 0 replied: type: integer example: 20 unique_replies: type: integer example: 18 bounced: type: integer example: 6 unsubscribed: type: integer example: 0 interested: type: integer example: 10 total_leads_contacted: type: integer example: 506 max_emails_per_day: type: integer example: 1000 max_new_leads_per_day: type: integer example: 1000 plain_text: type: boolean example: true open_tracking: type: boolean example: true total_leads: type: string example: null nullable: true can_unsubscribe: type: boolean example: false unsubscribe_text: type: string example: null nullable: true include_auto_replies_in_stats: type: boolean example: true created_at: type: string example: '2025-05-13T00:05:37.000000Z' updated_at: type: string example: '2025-11-25T17:03:22.000000Z' lead: type: object properties: id: type: integer example: 52476 first_name: type: string example: John last_name: type: string example: Doe email: type: string example: john@email.com title: type: string example: President company: type: string example: 'Red Leads' notes: type: string example: null nullable: true status: type: string example: unverified custom_variables: type: array example: [] overall_stats: type: object properties: emails_sent: type: integer example: 1 opens: type: integer example: 0 replies: type: integer example: 1 unique_replies: type: integer example: 1 unique_opens: type: integer example: 0 created_at: type: string example: '2025-05-13T00:06:25.000000Z' updated_at: type: string example: '2025-06-09T17:21:59.000000Z' sender_email: type: object properties: id: type: integer example: 1163 name: type: string example: 'James Doe' email: type: string example: James@doe.com email_signature: type: string example: null nullable: true imap_server: type: string example: null nullable: true imap_port: type: string example: null nullable: true smtp_server: type: string example: null nullable: true smtp_port: type: string example: null nullable: true daily_limit: type: integer example: 3 type: type: string example: microsoft_oauth status: type: string example: Connected emails_sent_count: type: integer example: 52 total_replied_count: type: integer example: 1 total_opened_count: type: integer example: 4 unsubscribed_count: type: integer example: 0 bounced_count: type: integer example: 1 unique_replied_count: type: integer example: 1 unique_opened_count: type: integer example: 2 total_leads_contacted_count: type: integer example: 35 interested_leads_count: type: integer example: 0 created_at: type: string example: '2025-05-05T03:46:05.000000Z' updated_at: type: string example: '2025-06-24T19:07:53.000000Z' tags: - 'Scheduled Emails' parameters: - in: path name: id description: 'The ID of the scheduled email.' example: 20 required: true schema: type: integer /api/warmup/sender-emails: get: summary: 'List email accounts with warmup stats' operationId: listEmailAccountsWithWarmupStats description: "This route supports cursor pagination for faster processing. We recommend using this for traversing larger\ndatasets. More info here: https://docs.emailbison.com/get-started/pagination#how-does-cursor-pagination-work\n\nRetrieves a collection of email accounts associated with the authenticated workspace, along with\ntheir warmup stats" parameters: - in: query name: search description: 'optional Search term for filtering email accounts.' example: domain.com required: false schema: type: string description: 'optional Search term for filtering email accounts.' example: domain.com nullable: true - in: query name: tag_ids description: 'optional Array of tag IDs to filter by.' example: - 1 - 2 - 3 required: false schema: type: array description: 'optional Array of tag IDs to filter by.' example: - 1 - 2 - 3 items: type: integer - in: query name: excluded_tag_ids description: 'Must match an existing stored value.' example: - 5 required: false schema: type: array description: 'Must match an existing stored value.' example: - 5 items: type: integer - in: query name: without_tags description: 'Only show leads that have no tags attached.' example: true required: false schema: type: boolean description: 'Only show leads that have no tags attached.' example: true - in: query name: warmup_status description: 'The warmup status to filter by. Valid values: `enabled`, `disabled`' example: enabled required: false schema: type: string description: 'The warmup status to filter by. Valid values: `enabled`, `disabled`' example: enabled - in: query name: mx_records_status description: 'The mx records status to filter by. Valid values: `records missing`, `records valid`' example: 'records valid' required: false schema: type: string description: 'The mx records status to filter by. Valid values: `records missing`, `records valid`' example: 'records valid' - in: query name: start_date description: 'The start date to fetch stats (defaults to 10 days ago).' example: '2024-07-01' required: true schema: type: string description: 'The start date to fetch stats (defaults to 10 days ago).' example: '2024-07-01' - in: query name: end_date description: 'The end date to fetch stats (defaults to today).' example: '2024-07-19' required: true schema: type: string description: 'The end date to fetch stats (defaults to today).' example: '2024-07-19' - in: query name: pagination_type description: '' example: cursor required: false schema: type: string description: '' example: cursor enum: - cursor - length_aware - in: query name: filters.excluded_tag_ids description: 'Exclude email accounts by tag IDs.' example: - 1 - 2 - 3 required: false schema: type: array description: 'Exclude email accounts by tag IDs.' example: - 1 - 2 - 3 items: type: integer - in: query name: filters.without_tags description: 'Only show email accounts that have no tags attached.' example: true required: false schema: type: boolean description: 'Only show email accounts that have no tags attached.' example: true responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"id\": 25063,\n \"email\": \"gabe.laroche@bisonemails.com\",\n \"name\": \"Gabe Laroche\",\n \"domain\": \"bisonemails.com\",\n \"tags\": [],\n \"warmup_emails_sent\": 0,\n \"warmup_replies_received\": 0,\n \"warmup_emails_saved_from_spam\": 0,\n \"warmup_score\": 0,\n \"warmup_bounces_received_count\": 0,\n \"warmup_bounces_caused_count\": 0,\n \"warmup_disabled_for_bouncing_count\": 0\n },\n ],\n \"links\": {\n \"first\": \"http://bison.test/api/warmup/sender-emails?page=1\",\n \"last\": \"http://bison.test/api/warmup/sender-emails?page=1\",\n \"prev\": null,\n \"next\": null\n },\n \"meta\": {\n \"current_page\": 1,\n \"from\": 1,\n \"last_page\": 1,\n \"links\": [\n {\n \"url\": null,\n \"label\": \"« Previous\",\n \"active\": false\n },\n {\n \"url\": \"http://bison.test/api/warmup/sender-emails?page=1\",\n \"label\": \"1\",\n \"active\": true\n },\n {\n \"url\": null,\n \"label\": \"Next »\",\n \"active\": false\n }\n ],\n \"path\": \"http://bison.test/api/warmup/sender-emails\",\n \"per_page\": 15,\n \"to\": 1,\n \"total\": 1\n }\n}" tags: - Warmup /api/warmup/sender-emails/enable: patch: summary: 'Enable warmup for email accounts' operationId: enableWarmupForEmailAccounts description: 'This endpoint enables warmup for all the selected email accounts' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Enabling warmup for selected sender emails. This can take a few minutes if your list is long.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Enabling warmup for selected sender emails. This can take a few minutes if your list is long.' tags: - Warmup requestBody: required: true content: application/json: schema: type: object properties: sender_email_ids: type: array description: 'Array of sender email IDs.' example: - 1 - 2 - 3 items: type: integer required: - sender_email_ids /api/warmup/sender-emails/disable: patch: summary: 'Disable warmup for email accounts' operationId: disableWarmupForEmailAccounts description: 'This endpoint disables warmup for all the selected email accounts' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Disabling warmup for selected sender emails. This can take a few minutes if your list is long. Warmup emails will slowly ramp down over a period of 24 hours.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Disabling warmup for selected sender emails. This can take a few minutes if your list is long. Warmup emails will slowly ramp down over a period of 24 hours.' tags: - Warmup requestBody: required: true content: application/json: schema: type: object properties: sender_email_ids: type: array description: 'Array of sender email IDs.' example: - 1 - 2 - 3 items: type: integer required: - sender_email_ids /api/warmup/sender-emails/update-daily-warmup-limits: patch: summary: 'Update daily warmup limits for email accounts' operationId: updateDailyWarmupLimitsForEmailAccounts description: 'This endpoint updates the daily warmup limits for selected email accounts' parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Succesfully updated sender email daily warmup limits' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Succesfully updated sender email daily warmup limits' tags: - Warmup requestBody: required: true content: application/json: schema: type: object properties: sender_email_ids: type: array description: 'Array of sender email IDs.' example: - 1 - 2 - 3 items: type: integer daily_limit: type: integer description: 'The daily limit of warmup emails to send' example: 1 daily_reply_limit: type: int|string description: "The daily limit of warmup reply emails. You can pass an \"auto\" string to set this to auto.\n\nWARNING: You should only use this section if explicitly told by your inbox reseller. We cannot be held responsible if you experience low inbox health as a result of controlling your own reply rate." example: mollitia required: - sender_email_ids - daily_limit '/api/warmup/sender-emails/{senderEmailId}': get: summary: 'Show single email account with warmup details' operationId: showSingleEmailAccountWithWarmupDetails description: 'Retrieves a single email account (sender email) with its warmup details' parameters: - in: query name: start_date description: 'The start date to fetch stats.' example: '2024-07-01' required: true schema: type: string description: 'The start date to fetch stats.' example: '2024-07-01' - in: query name: end_date description: 'The end date to fetch stats.' example: '2024-07-19' required: true schema: type: string description: 'The end date to fetch stats.' example: '2024-07-19' responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 25063,\n \"email\": \"gabe.laroche@bisonemails.com\",\n \"name\": \"Gabe Laroche\",\n \"domain\": \"bisonemails.com\",\n \"tags\": [],\n \"warmup_emails_sent\": 0,\n \"warmup_replies_received\": 0,\n \"warmup_emails_saved_from_spam\": 0,\n \"warmup_score\": 0,\n \"warmup_bounces_received_count\": 0,\n \"warmup_bounces_caused_count\": 0,\n \"warmup_disabled_for_bouncing_count\": 0\n },\n}" tags: - Warmup parameters: - in: path name: senderEmailId description: 'The ID (or email address) of the email account.' example: 6 required: true schema: type: integer '/api/webhook-attempts/{id}': get: summary: 'Get webhook attempt' operationId: getWebhookAttempt description: "This endpoint retrieves a specific webhook attempt by its ID.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 20,\n \"uuid\": \"a21bc963-101c-4011-a755-37432886d63f\",\n \"webhook_delivery_id\": 8,\n \"webhook_url\": \"https://ancient-lightning-07.webhook.cool\",\n \"status\": \"succeeded\",\n \"response_code\": 200,\n \"event\": {...event_details_and_payload...},\n \"created_at\": \"2026-06-25T15:44:25.000000Z\",\n \"updated_at\": \"2026-06-25T15:44:25.000000Z\"\n }\n}" tags: - 'Webhook Attempts' parameters: - in: path name: id description: 'The ID of the webhook attempt.' example: 11 required: true schema: type: integer '/api/webhook-attempts/{webhook_attempt_id}/retry': post: summary: 'Retry webhook attempt' operationId: retryWebhookAttempt description: "This endpoint retries a specific webhook attempt by its ID. You can retry\nfailed or successful attempts.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Retry event sent. This may take a moment. You can use the webhook delivery ID to keep track of the status.' webhook_delivery_id: 8 properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Retry event sent. This may take a moment. You can use the webhook delivery ID to keep track of the status.' webhook_delivery_id: type: integer example: 8 tags: - 'Webhook Attempts' parameters: - in: path name: webhook_attempt_id description: 'The ID of the webhook attempt.' example: 7462726 required: true schema: type: integer - in: path name: id description: 'The ID of the webhook attempt.' example: 14 required: true schema: type: integer '/api/webhook-deliveries/{id}': get: summary: 'Get webhook delivery' operationId: getWebhookDelivery description: "This endpoint retrieves a specific webhook delivery by its ID.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"id\": 8,\n \"uuid\": \"a21bc963-0939-40e3-9871-ee76e874abb2\",\n \"event_id\": 19,\n \"webhook_url\": \"https://ancient-lightning-07.webhook.cool\",\n \"attempt_count\": 1,\n \"last_attempt_at\": \"2026-06-25T15:44:25.000000Z\",\n \"status\": \"succeeded\",\n \"webhook_attempts\": [\n {\n \"id\": 20,\n \"uuid\": \"a21bc963-101c-4011-a755-37432886d63f\",\n \"webhook_delivery_id\": 8,\n \"webhook_url\": \"https://ancient-lightning-07.webhook.cool\",\n \"status\": \"succeeded\",\n \"response_code\": 200,\n \"created_at\": \"2026-06-25T15:44:25.000000Z\",\n \"updated_at\": \"2026-06-25T15:44:25.000000Z\"\n }\n ],\n \"event\": {...event_details_and_payload...},\n \"created_at\": \"2026-06-25T15:44:25.000000Z\",\n \"updated_at\": \"2026-06-25T15:44:25.000000Z\"\n }\n}" tags: - 'Webhook Deliveries' parameters: - in: path name: id description: 'The ID of the webhook delivery.' example: 6 required: true schema: type: integer /api/webhook-events/sample-payload: get: summary: 'Get sample webhook event payload' operationId: getSampleWebhookEventPayload description: '' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": {\n \"event\": {\n \"type\": \"EMAIL_SENT\",\n \"name\": \"Email Sent\",\n \"workspace_id\": 1,\n \"workspace_name\": \"Cody's Team\"\n },\n \"data\": {\n \"scheduled_email\": {\n \"id\": 4,\n \"lead_id\": 1,\n \"sequence_step_id\": 2,\n \"email_subject\": \"test subject\",\n \"email_body\": \"

test

\",\n \"status\": \"sent\",\n \"scheduled_date_est\": \"2024-08-02T15:33:00.000000Z\",\n \"scheduled_date_local\": \"2024-08-02T15:33:00.000000Z\",\n \"local_timezone\": \"America/New_York\",\n \"sent_at\": \"2024-08-02T06:08:38.000000Z\",\n \"opens\": 0,\n \"replies\": 0,\n \"unique_opens\": 0,\n \"unique_replies\": 0,\n \"interested\": null\n },\n \"campaign_event\": {\n \"id\": 6,\n \"type\": \"sent\",\n \"created_at_local\": \"2024-08-02T06:09:35.000000Z\",\n \"local_timezone\": \"America/New_York\",\n \"created_at\": \"2024-08-02T06:09:35.000000Z\"\n },\n \"lead\": {\n \"id\": 1,\n \"uuid\": \"9f7a2718-aa56-43k2-a52b-a44dc183a622\",\n \"email\": \"cody@emailguard.io\",\n \"first_name\": \"Cody\",\n \"last_name\": \"Smith\",\n \"status\": \"unverified\",\n \"title\": \"CEO\",\n \"company\": \"EmailGuard Inc.\",\n \"custom_variables\": [\n {\n \"name\": \"phone number\",\n \"value\": \"19999999999\"\n },\n {\n \"name\": \"personalized line\",\n \"value\": \"Noticed that EmailGuard is doing very well in the health monitoring space\"\n }\n ],\n \"emails_sent\": 1,\n \"opens\": 0,\n \"unique_opens\": 0,\n \"replies\": 0,\n \"unique_replies\": 0,\n \"bounces\": 0\n },\n \"campaign\": {\n \"id\": 2,\n \"name\": \"test\"\n },\n \"sender_email\": {\n \"id\": 3,\n \"name\": \"Cody\",\n \"email\": \"cody@emailguardalpha.com\",\n \"status\": \"connected\",\n \"type\": \"google_workspace_oauth\",\n \"daily_limit\": 10,\n \"emails_sent\": 1,\n \"replied\": 0,\n \"opened\": 0,\n \"unsubscribed\": 0,\n \"bounced\": 0,\n \"unique_replies\": 0,\n \"unique_opens\": 0,\n \"total_leads_contacted\": 1,\n \"interested\": 0,\n \"created_at\": \"2024-08-02T06:06:40.000000Z\",\n \"updated_at\": \"2024-08-02T06:08:38.000000Z\"\n }\n }\n}" tags: - 'Webhook Events' requestBody: required: true content: application/json: schema: type: object properties: event_type: type: string description: 'The event type.' example: email_sent enum: - email_sent - email_send_failed - lead_first_contacted - lead_replied - lead_interested - email_opened - email_bounced - lead_unsubscribed - email_account_added - email_account_removed - email_account_disconnected - email_account_reconnected - manual_email_sent - manual_email_send_failed - untracked_reply_received - blacklisted_email_added - blacklisted_email_removed - blacklisted_domain_added - blacklisted_domain_removed required: - event_type /api/webhook-events/event-types: get: summary: 'Get all webhook event types' operationId: getAllWebhookEventTypes description: 'Shows you a list of all valid webhook event types that are supported' parameters: [] responses: 200: description: '' content: text/plain: schema: type: string example: "{\n \"data\": [\n {\n \"name\": \"Email Sent\",\n \"id\": \"email_sent\"\n },\n {\n \"name\": \"Email Send Failed\",\n \"id\": \"email_send_failed\"\n },\n {\n \"name\": \"Manual Email Sent\",\n \"id\": \"manual_email_sent\"\n },\n {\n \"name\": \"Manual Email Send Failed\",\n \"id\": \"manual_email_send_failed\"\n },\n {\n \"name\": \"Contact First Emailed\",\n \"id\": \"lead_first_contacted\"\n },\n {\n \"name\": \"Contact Replied\",\n \"id\": \"lead_replied\"\n },\n {\n \"name\": \"Contact Interested\",\n \"id\": \"lead_interested\"\n },\n {\n \"name\": \"Contact Unsubscribed\",\n \"id\": \"lead_unsubscribed\"\n },\n {\n \"name\": \"Untracked Reply Received\",\n \"id\": \"untracked_reply_received\"\n },\n {\n \"name\": \"Email Opened\",\n \"id\": \"email_opened\"\n },\n {\n \"name\": \"Email Bounced\",\n \"id\": \"email_bounced\"\n },\n {\n \"name\": \"Email Account Added\",\n \"id\": \"email_account_added\"\n },\n {\n \"name\": \"Email Account Removed\",\n \"id\": \"email_account_removed\"\n },\n {\n \"name\": \"Email Account Disconnected\",\n \"id\": \"email_account_disconnected\"\n },\n {\n \"name\": \"Email Account Reconnected\",\n \"id\": \"email_account_reconnected\"\n }\n {\n \"name\": \"Blacklisted Email Added\",\n \"id\": \"blacklisted_email_added\"\n }\n {\n \"name\": \"Blacklisted Email Removed\",\n \"id\": \"blacklisted_email_removed\"\n }\n {\n \"name\": \"Blacklisted Domain Added\",\n \"id\": \"blacklisted_domain_added\"\n }\n {\n \"name\": \"Blacklisted Domain Removed\",\n \"id\": \"blacklisted_domain_removed\"\n }\n ]\n}" tags: - 'Webhook Events' /api/webhook-events/test-event: post: summary: 'Send a test webhook event' operationId: sendATestWebhookEvent description: 'Send a test webhook for a chosen event type' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Successfully sent test webhook' payload: event: type: EMAIL_SENT name: 'Email Sent' workspace_id: 1 workspace_name: "Cody's Team" data: scheduled_email: id: 4 lead_id: 1 sequence_step_id: 2 email_subject: 'test subject' email_body: '

test

' status: sent scheduled_date_est: '2024-08-02T15:33:00.000000Z' scheduled_date_local: '2024-08-02T15:33:00.000000Z' local_timezone: America/New_York sent_at: '2024-08-02T06:08:38.000000Z' opens: 0 replies: 0 unique_opens: 0 unique_replies: 0 interested: null campaign_event: id: 6 type: sent created_at_local: '2024-08-02T06:09:35.000000Z' local_timezone: America/New_York created_at: '2024-08-02T06:09:35.000000Z' lead: id: 1 uuid: 9f7a2718-aa56-43k2-a52b-a44dc183a622 email: cody@emailguard.io first_name: Cody last_name: Smith status: unverified title: CEO company: 'EmailGuard Inc.' custom_variables: - name: 'phone number' value: '19999999999' - name: 'personalized line' value: 'Noticed that EmailGuard is doing very well in the health monitoring space' emails_sent: 1 opens: 0 unique_opens: 0 replies: 0 unique_replies: 0 bounces: 0 campaign: id: 2 name: test sender_email: id: 3 name: Cody email: cody@emailguardalpha.com status: connected type: google_workspace_oauth daily_limit: 10 emails_sent: 1 replied: 0 opened: 0 unsubscribed: 0 bounced: 0 unique_replies: 0 unique_opens: 0 total_leads_contacted: 1 interested: 0 created_at: '2024-08-02T06:06:40.000000Z' updated_at: '2024-08-02T06:08:38.000000Z' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully sent test webhook' payload: type: object properties: event: type: object properties: type: type: string example: EMAIL_SENT name: type: string example: 'Email Sent' workspace_id: type: integer example: 1 workspace_name: type: string example: "Cody's Team" data: type: object properties: scheduled_email: type: object properties: id: type: integer example: 4 lead_id: type: integer example: 1 sequence_step_id: type: integer example: 2 email_subject: type: string example: 'test subject' email_body: type: string example: '

test

' status: type: string example: sent scheduled_date_est: type: string example: '2024-08-02T15:33:00.000000Z' scheduled_date_local: type: string example: '2024-08-02T15:33:00.000000Z' local_timezone: type: string example: America/New_York sent_at: type: string example: '2024-08-02T06:08:38.000000Z' opens: type: integer example: 0 replies: type: integer example: 0 unique_opens: type: integer example: 0 unique_replies: type: integer example: 0 interested: type: string example: null nullable: true campaign_event: type: object properties: id: type: integer example: 6 type: type: string example: sent created_at_local: type: string example: '2024-08-02T06:09:35.000000Z' local_timezone: type: string example: America/New_York created_at: type: string example: '2024-08-02T06:09:35.000000Z' lead: type: object properties: id: type: integer example: 1 uuid: type: string example: 9f7a2718-aa56-43k2-a52b-a44dc183a622 email: type: string example: cody@emailguard.io first_name: type: string example: Cody last_name: type: string example: Smith status: type: string example: unverified title: type: string example: CEO company: type: string example: 'EmailGuard Inc.' custom_variables: type: array example: - { name: 'phone number', value: '19999999999' } - { name: 'personalized line', value: 'Noticed that EmailGuard is doing very well in the health monitoring space' } items: type: object properties: { name: { type: string, example: 'phone number' }, value: { type: string, example: '19999999999' } } emails_sent: type: integer example: 1 opens: type: integer example: 0 unique_opens: type: integer example: 0 replies: type: integer example: 0 unique_replies: type: integer example: 0 bounces: type: integer example: 0 campaign: type: object properties: id: type: integer example: 2 name: type: string example: test sender_email: type: object properties: id: type: integer example: 3 name: type: string example: Cody email: type: string example: cody@emailguardalpha.com status: type: string example: connected type: type: string example: google_workspace_oauth daily_limit: type: integer example: 10 emails_sent: type: integer example: 1 replied: type: integer example: 0 opened: type: integer example: 0 unsubscribed: type: integer example: 0 bounced: type: integer example: 0 unique_replies: type: integer example: 0 unique_opens: type: integer example: 0 total_leads_contacted: type: integer example: 1 interested: type: integer example: 0 created_at: type: string example: '2024-08-02T06:06:40.000000Z' updated_at: type: string example: '2024-08-02T06:08:38.000000Z' tags: - 'Webhook Events' requestBody: required: true content: application/json: schema: type: object properties: event_type: type: string description: 'The event type.' example: email_sent enum: - email_sent - email_send_failed - lead_first_contacted - lead_replied - lead_interested - email_opened - email_bounced - lead_unsubscribed - email_account_added - email_account_removed - email_account_disconnected - email_account_reconnected - manual_email_sent - manual_email_send_failed - untracked_reply_received - blacklisted_email_added - blacklisted_email_removed - blacklisted_domain_added - blacklisted_domain_removed url: type: string description: 'The URL to send the webhook to. This must be an active URL that can receive requests.' example: 'https://blue-square-32.webhook.cool' required: - event_type - url /api/webhook-url: get: summary: 'Get all webhooks' operationId: getAllWebhooks description: "Retrieve a list of all webhooks for the authenticated user's workspace." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: - id: 1 name: Slack url: 'https://your-webhook-url/webhooks' events: - email_sent - email_opened created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' links: first: 'http://bison.test/api/webhook-url?page=1' last: 'http://bison.test/api/webhook-url?page=1' prev: null next: null meta: current_page: 1 from: 1 last_page: 1 links: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/webhook-url?page=1' label: '1' active: true - url: null label: 'Next »' active: false path: 'http://bison.test/api/webhook-url' per_page: 15 to: 1 total: 1 properties: data: type: array example: - id: 1 name: Slack url: 'https://your-webhook-url/webhooks' events: - email_sent - email_opened created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' items: type: object properties: id: type: integer example: 1 name: type: string example: Slack url: type: string example: 'https://your-webhook-url/webhooks' events: type: array example: - email_sent - email_opened items: type: string created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' links: type: object properties: first: type: string example: 'http://bison.test/api/webhook-url?page=1' last: type: string example: 'http://bison.test/api/webhook-url?page=1' prev: type: string example: null nullable: true next: type: string example: null nullable: true meta: type: object properties: current_page: type: integer example: 1 from: type: integer example: 1 last_page: type: integer example: 1 links: type: array example: - url: null label: '« Previous' active: false - url: 'http://bison.test/api/webhook-url?page=1' label: '1' active: true - url: null label: 'Next »' active: false items: type: object properties: url: type: string example: null nullable: true label: type: string example: '« Previous' active: type: boolean example: false path: type: string example: 'http://bison.test/api/webhook-url' per_page: type: integer example: 15 to: type: integer example: 1 total: type: integer example: 1 tags: - 'Webhook URLs' post: summary: 'Create a new webhook' operationId: createANewWebhook description: "Store a new webhook for the authenticated user's workspace. Provide an array of events to associate with the webhook; the events included in the array will be enabled." parameters: [] responses: 201: description: '' content: application/json: schema: type: object example: data: id: 1 name: Slack url: 'https://your-webhook-url/webhooks' events: - email_sent - email_opened created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: Slack url: type: string example: 'https://your-webhook-url/webhooks' events: type: array example: - email_sent - email_opened items: type: string created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Webhook URLs' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name of the webhook.' example: Slack url: type: string description: 'The URL to send data to.' example: 'https://your-webhook-url/webhooks' events: type: array description: 'The events to subscribe to.' example: - email_sent - lead_first_contacted - lead_replied - lead_interested - email_opened - email_bounced - lead_unsubscribed - email_account_added - email_account_removed - email_account_disconnected - email_account_reconnected - manual_email_sent - untracked_reply_received items: type: object properties: email_sent: type: string description: 'A new scheduled email was sent to a contact.' example: '"email_sent"' email_send_failed: type: string description: 'A scheduled campaign email failed to send.' example: '"email_send_failed"' lead_first_contacted: type: string description: 'A contact was emailed for the first time.' example: '"lead_first_contacted"' lead_replied: type: string description: 'A contact replied to your email.' example: '"lead_replied"' lead_interested: type: string description: 'A contact sent a positive (interested) reply.' example: '"lead_interested"' email_opened: type: string description: 'A contact opened your email.' example: '"email_opened"' email_bounced: type: string description: 'You sent an email that bounced.' example: '"email_bounced"' lead_unsubscribed: type: string description: 'A contact unsubscribed from future emails.' example: '"lead_unsubscribed"' email_account_added: type: string description: 'A new email account was added to your workspace.' example: '"email_account_added"' email_account_removed: type: string description: 'An email account was removed from your workspace.' example: '"email_account_removed"' email_account_disconnected: type: string description: 'An email account disconnected from your workspace.' example: '"email_account_disconnected"' email_account_reconnected: type: string description: 'An email account successfully reconnected to your workspace.' example: '"email_account_reconnected"' manual_email_sent: type: string description: 'You sent a manual email (one-off, reply, or forward).' example: '"manual_email_sent"' manual_email_send_failed: type: string description: 'A manual email failed to send.' example: '"manual_email_send_failed"' untracked_reply_received: type: string description: 'An untracked reply was received (not tied to any lead).' example: '"untracked_reply_received"' tag_attached: type: string description: 'A tag was attached to a resource' example: '"tag_attached"' tag_removed: type: string description: 'A tag was removed from a resource (not tied to any lead).' example: '"tag_removed"' warmup_disabled_receiving_bounces: type: string description: 'An email account was disabled from warmup for receiving too many bounces.' example: '"warmup_disabled_receiving_bounces"' blacklisted_email_added: type: string description: 'A blacklisted email was added.' example: '"blacklisted_email_added"' blacklisted_email_removed: type: string description: 'A blacklisted email was removed.' example: '"blacklisted_email_removed"' blacklisted_domain_added: type: string description: 'A blacklisted domain was added.' example: '"blacklisted_domain_added"' blacklisted_domain_removed: type: string description: 'A blacklisted domain was removed.' example: '"blacklisted_domain_removed"' required: - name - url - events '/api/webhook-url/{id}': get: summary: 'Get a single webhook' operationId: getASingleWebhook description: 'Get the details of a specific webhook.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1 name: Slack url: 'https://your-webhook-url/webhooks' events: - email_sent - email_opened created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: Slack url: type: string example: 'https://your-webhook-url/webhooks' events: type: array example: - email_sent - email_opened items: type: string created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Webhook URLs' put: summary: 'Update a webhook' operationId: updateAWebhook description: "Modify an existing webhook's details. Send an array of events to modify the webhook; the events included will be enabled, and those not included will be disabled." parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: id: 1 name: 'Slack Updated' url: 'https://your-updated-webhook-url/webhooks' events: - email_bounced created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: 'Slack Updated' url: type: string example: 'https://your-updated-webhook-url/webhooks' events: type: array example: - email_bounced items: type: string created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Webhook URLs' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name of the webhook.' example: Slack url: type: string description: 'The URL to send data to.' example: 'https://your-webhook-url/webhooks' events: type: array description: 'The events to subscribe to.' example: - email_sent - lead_first_contacted - lead_replied - lead_interested - email_opened - email_bounced - lead_unsubscribed - email_account_added - email_account_removed - email_account_disconnected - email_account_reconnected - manual_email_sent - untracked_reply_received items: type: object properties: email_sent: type: string description: 'A new scheduled email was sent to a contact.' example: '"email_sent"' email_send_failed: type: string description: 'A scheduled campaign email failed to send.' example: '"email_send_failed"' lead_first_contacted: type: string description: 'A contact was emailed for the first time.' example: '"lead_first_contacted"' lead_replied: type: string description: 'A contact replied to your email.' example: '"lead_replied"' lead_interested: type: string description: 'A contact sent a positive (interested) reply.' example: '"lead_interested"' email_opened: type: string description: 'A contact opened your email.' example: '"email_opened"' email_bounced: type: string description: 'You sent an email that bounced.' example: '"email_bounced"' lead_unsubscribed: type: string description: 'A contact unsubscribed from future emails.' example: '"lead_unsubscribed"' email_account_added: type: string description: 'A new email account was added to your workspace.' example: '"email_account_added"' email_account_removed: type: string description: 'An email account was removed from your workspace.' example: '"email_account_removed"' email_account_disconnected: type: string description: 'An email account disconnected from your workspace.' example: '"email_account_disconnected"' email_account_reconnected: type: string description: 'An email account successfully reconnected to your workspace.' example: '"email_account_reconnected"' manual_email_sent: type: string description: 'You sent a manual email (one-off, reply, or forward).' example: '"manual_email_sent"' manual_email_send_failed: type: string description: 'A manual email failed to send.' example: '"manual_email_send_failed"' untracked_reply_received: type: string description: 'An untracked reply was received (not tied to any lead).' example: '"untracked_reply_received"' tag_attached: type: string description: 'A tag was attached to a resource' example: '"tag_attached"' tag_removed: type: string description: 'A tag was removed from a resource (not tied to any lead).' example: '"tag_removed"' warmup_disabled_receiving_bounces: type: string description: 'An email account was disabled from warmup for receiving too many bounces.' example: '"warmup_disabled_receiving_bounces"' warmup_disabled_causing_bounces: type: string description: 'An email account was disabled from warmup for causing too many bounces.' example: '"warmup_disabled_causing_bounces"' blacklisted_email_added: type: string description: 'A blacklisted email was added.' example: '"blacklisted_email_added"' blacklisted_email_removed: type: string description: 'A blacklisted email was removed.' example: '"blacklisted_email_removed"' blacklisted_domain_added: type: string description: 'A blacklisted domain was added.' example: '"blacklisted_domain_added"' blacklisted_domain_removed: type: string description: 'A blacklisted domain was removed.' example: '"blacklisted_domain_removed"' required: - name - url - events parameters: - in: path name: id description: 'The ID of the webhook.' example: 1 required: true schema: type: integer '/api/webhook-url/{webhook_url_id}': delete: summary: 'Delete a webhook' operationId: deleteAWebhook description: 'Remove a webhook url by its ID.' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: data: success: true message: 'Slack webhook url was successfully deleted' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Slack webhook url was successfully deleted' tags: - 'Webhook URLs' parameters: - in: path name: webhook_url_id description: 'The ID of the webhook url.' example: 1 required: true schema: type: integer - in: path name: id description: 'The ID of the webhook url.' example: 1 required: true schema: type: integer /api/workspaces: get: summary: 'List Workspaces' operationId: listWorkspaces description: "This endpoint retrieves all of the authenticated user's workspaces.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n [\n \"id\": 1,\n \"name\": \"John Doe's Team\",\n \"personal_team\": true,\n \"main\": true,\n \"parent_id\": null,\n \"warmup_filter_phrase\": \"bbgmw2lk\",\n \"webhooks_secret_key\": \"webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n ],\n [\n \"id\": 2,\n \"name\": \"John Doe's Second Team\",\n \"personal_team\": true,\n \"main\": true,\n \"parent_id\": null,\n \"warmup_filter_phrase\": \"bbgmw2lk\",\n \"webhooks_secret_key\": \"webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n ],\n }\n}" tags: - 'Workspaces v1 (deprecated)' post: summary: 'Create Workspace' operationId: createWorkspace description: "This endpoint allows the authenticated user to create a new workspace.\n\nThe user must provide a valid authentication token in the request header\nand the details of the new workspace in the request body." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 name: "John Doe's Second Team" personal_team: true main: true parent_id: null warmup_filter_phrase: bbgmw2lk webhooks_secret_key: webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: "John Doe's Second Team" personal_team: type: boolean example: true main: type: boolean example: true parent_id: type: string example: null nullable: true warmup_filter_phrase: type: string example: bbgmw2lk webhooks_secret_key: type: string example: webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Workspaces v1 (deprecated)' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The new workspace name.' example: 'New name' required: - name /api/workspaces/switch-workspace: post: summary: 'Switch Workspace' operationId: switchWorkspace description: "This endpoint allows the authenticated user to switch to a different workspace.\n\nThe user must provide a valid authentication token in the request header\nand the ID of the target workspace in the request body to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: name: "John Doe's Second Team" properties: data: type: object properties: name: type: string example: "John Doe's Second Team" tags: - 'Workspaces v1 (deprecated)' requestBody: required: true content: application/json: schema: type: object properties: team_id: type: integer description: 'The ID of the team to switch.' example: 1 required: - team_id '/api/workspaces/{team_id}': put: summary: 'Update Workspace' operationId: updateWorkspace description: "This endpoint allows the authenticated user to update their workspace information,\nspecifically the workspace name.\n\nThe user must provide a valid authentication token in the request header\nand the ID of the target workspace, along with the details of the new workspace\nin the request body to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: name: 'J.D Workspace' properties: data: type: object properties: name: type: string example: 'J.D Workspace' tags: - 'Workspaces v1 (deprecated)' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The new workspace name.' example: 'New name' required: - name get: summary: 'Workspace Details' operationId: workspaceDetails description: "This endpoint retrieves the details of the authenticated user's workspace.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 name: "John Doe's Team" personal_team: true main: true parent_id: null warmup_filter_phrase: bbgmw2lk webhooks_secret_key: webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: "John Doe's Team" personal_team: type: boolean example: true main: type: boolean example: true parent_id: type: string example: null nullable: true warmup_filter_phrase: type: string example: bbgmw2lk webhooks_secret_key: type: string example: webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Workspaces v1 (deprecated)' parameters: - in: path name: team_id description: 'The ID of the workspace.' example: 3 required: true schema: type: integer /api/workspaces/invite-members: post: summary: 'Invite Team Member' operationId: inviteTeamMember description: "This endpoint allows the authenticated user to invite a new member to their team.\n\nThe user must provide a valid authentication token in the request header\nand the email and role of the new team member in the request body." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Successfully invited example@example.com' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully invited example@example.com' tags: - 'Workspaces v1 (deprecated)' requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'The email of the new team member.' example: example@example.com role: type: string description: 'The role of the new team member.' example: admin enum: - admin - editor - client - reseller required: - email - role '/api/workspaces/accept/{team_invitation_id}': post: summary: 'Accept Workspace Invitation' operationId: acceptWorkspaceInvitation description: "This endpoint allows the user to accept an invitation to join a workspace.\n\nThe user must provide a valid authentication token in the request header\nand the ID of the workspace invitation." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Successfully accepted the invitation' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully accepted the invitation' tags: - 'Workspaces v1 (deprecated)' parameters: - in: path name: team_invitation_id description: 'The ID of the team invitation.' example: 6 required: true schema: type: integer '/api/workspaces/members/{user_id}': put: summary: 'Update Workspace Member' operationId: updateWorkspaceMember description: "This endpoint allows the authenticated user to update the role of a workspace member.\n\nThe user must provide a valid authentication token in the request header\nand the ID of the workspace member and the new role in the request body." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Successfully updated team member John Doe role' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully updated team member John Doe role' tags: - 'Workspaces v1 (deprecated)' requestBody: required: true content: application/json: schema: type: object properties: role: type: string description: 'The new role of the team member.' example: admin enum: - admin - editor - client - reseller required: - role delete: summary: 'Delete Workspace Member' operationId: deleteWorkspaceMember description: "This endpoint allows the authenticated user to remove a workspace member.\n\nThe user must provide a valid authentication token in the request header\nand the ID of the workspace member." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Successfully deleted team member John Doe' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully deleted team member John Doe' tags: - 'Workspaces v1 (deprecated)' parameters: - in: path name: user_id description: 'The ID of the team member.' example: 16 required: true schema: type: integer /api/workspaces/v1.1: get: summary: 'List Workspaces' operationId: listWorkspaces description: "This endpoint retrieves all of the authenticated user's workspaces.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n [\n \"id\": 1,\n \"name\": \"John Doe's Team\",\n \"personal_team\": true,\n \"main\": true,\n \"parent_id\": null,\n \"warmup_filter_phrase\": \"bbgmw2lk\",\n \"webhooks_secret_key\": \"webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n ],\n [\n \"id\": 2,\n \"name\": \"John Doe's Second Team\",\n \"personal_team\": true,\n \"main\": true,\n \"parent_id\": null,\n \"warmup_filter_phrase\": \"bbgmw2lk\",\n \"webhooks_secret_key\": \"webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K\",\n \"created_at\": \"2025-04-14T16:59:21.000000Z\",\n \"updated_at\": \"2025-05-18T12:53:32.000000Z\"\n ],\n }\n}" tags: - 'Workspaces v1.1' post: summary: 'Create Workspace' operationId: createWorkspace description: "This endpoint allows the authenticated user to create a new workspace.\n\nThe user must provide a valid authentication token in the request header\nand the details of the new workspace in the request body." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 name: "John Doe's Second Team" personal_team: true main: true parent_id: null warmup_filter_phrase: bbgmw2lk webhooks_secret_key: webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: "John Doe's Second Team" personal_team: type: boolean example: true main: type: boolean example: true parent_id: type: string example: null nullable: true warmup_filter_phrase: type: string example: bbgmw2lk webhooks_secret_key: type: string example: webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Workspaces v1.1' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The new workspace name.' example: 'New name' required: - name /api/workspaces/v1.1/users: post: summary: 'Create User (and add to workspace)' operationId: createUserandAddToWorkspace description: "This endpoint provides a convenient way to create a new user on your instance, and\nadd them to the current workspace. This provides an alternate flow where you want to mass\ncreate users.\n\nIf you simply want to invite users and have them accept the invitation, or accept it\nprogrammatically, consider using the other endpoints." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: name: tingz email: listkittest@example.com workspace: id: 1 name: "Cody's Team" personal_team: true main: true parent_id: null warmup_filter_phrase: qvwy7276 webhooks_secret_key: webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' profile_photo_path: null profile_photo_url: 'https://ui-avatars.com/api/?name=t&color=7F9CF5&background=EBF4FF' created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: name: type: string example: tingz email: type: string example: listkittest@example.com workspace: type: object properties: id: type: integer example: 1 name: type: string example: "Cody's Team" personal_team: type: boolean example: true main: type: boolean example: true parent_id: type: string example: null nullable: true warmup_filter_phrase: type: string example: qvwy7276 webhooks_secret_key: type: string example: webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' profile_photo_path: type: string example: null nullable: true profile_photo_url: type: string example: 'https://ui-avatars.com/api/?name=t&color=7F9CF5&background=EBF4FF' created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Workspaces v1.1' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name of the user' example: 'John Doe' password: type: string description: 'The password of the user.' example: securepasswordlol email: type: string description: 'The email of the user.' example: example@example.com role: type: string description: 'The role of the new team member.' example: admin enum: - admin - editor - client - reseller required: - name - password - email - role '/api/workspaces/v1.1/{team_id}/api-tokens': post: summary: 'Create API token for workspace' operationId: createAPITokenForWorkspace description: "This endpoint lets you create an API token for a given workspace\n\nRequires a \"super admin\" API token" parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 39 name: tingz plain_text_token: 39|RYHi6oE6o0fVuEPEDSUe6dN7tCFJwvJ6cAytBKxq69deeeee token_hash: 4d2a4cd30dbc1f30047a8c1341c5aebdfece35eafd8b43f17411e46cd4c6e36d abilities: - '*' created_at: '2025-03-10T04:29:09.000000Z' updated_at: '2025-03-10T04:29:09.000000Z' properties: data: type: object properties: id: type: integer example: 39 name: type: string example: tingz plain_text_token: type: string example: 39|RYHi6oE6o0fVuEPEDSUe6dN7tCFJwvJ6cAytBKxq69deeeee token_hash: type: string example: 4d2a4cd30dbc1f30047a8c1341c5aebdfece35eafd8b43f17411e46cd4c6e36d abilities: type: array example: - '*' items: type: string created_at: type: string example: '2025-03-10T04:29:09.000000Z' updated_at: type: string example: '2025-03-10T04:29:09.000000Z' tags: - 'Workspaces v1.1' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The name of the user' example: 'New token' required: - name parameters: - in: path name: team_id description: 'The ID of the team.' example: 1 required: true schema: type: integer /api/workspaces/v1.1/switch-workspace: post: summary: 'Switch Workspace' operationId: switchWorkspace description: "This endpoint allows the authenticated user to switch to a different workspace.\n\nThe user must provide a valid authentication token in the request header\nand the ID of the target workspace in the request body to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: name: "John Doe's Second Team" properties: data: type: object properties: name: type: string example: "John Doe's Second Team" tags: - 'Workspaces v1.1' requestBody: required: true content: application/json: schema: type: object properties: team_id: type: integer description: 'The ID of the team (workspace) to switch.' example: 14 required: - team_id '/api/workspaces/v1.1/{team_id}': delete: summary: 'Delete Workspace' operationId: deleteWorkspace description: "This endpoint allows the authenticated user to delete a workspace.\n\nThe user must provide a valid super-admin authentication token in the request header\nand the ID of the target workspace in the query parameters to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Workspace being deleted. This might take a few minutes if you have a lot of data.' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Workspace being deleted. This might take a few minutes if you have a lot of data.' tags: - 'Workspaces v1.1' put: summary: 'Update Workspace' operationId: updateWorkspace description: "This endpoint allows the authenticated user to update their workspace information,\nspecifically the workspace name.\n\nThe user must provide a valid authentication token in the request header\nand the ID of the target workspace, along with the details of the new workspace\nin the request body to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: name: 'J.D Workspace' properties: data: type: object properties: name: type: string example: 'J.D Workspace' tags: - 'Workspaces v1.1' requestBody: required: true content: application/json: schema: type: object properties: name: type: string description: 'The new workspace name.' example: 'New name' required: - name get: summary: 'Workspace Details' operationId: workspaceDetails description: "This endpoint retrieves the details of the authenticated user's workspace.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 1 name: "John Doe's Team" personal_team: true main: true parent_id: null warmup_filter_phrase: bbgmw2lk webhooks_secret_key: webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K created_at: '2025-04-14T16:59:21.000000Z' updated_at: '2025-05-18T12:53:32.000000Z' properties: data: type: object properties: id: type: integer example: 1 name: type: string example: "John Doe's Team" personal_team: type: boolean example: true main: type: boolean example: true parent_id: type: string example: null nullable: true warmup_filter_phrase: type: string example: bbgmw2lk webhooks_secret_key: type: string example: webhooks_sig_G2EKEslkjeEEZqvgTnGgVW99Vplki231K created_at: type: string example: '2025-04-14T16:59:21.000000Z' updated_at: type: string example: '2025-05-18T12:53:32.000000Z' tags: - 'Workspaces v1.1' parameters: - in: path name: team_id description: 'The ID of the team (workspace) to delete.' example: 3 required: true schema: type: integer /api/workspaces/v1.1/invite-members: post: summary: 'Invite Team Member' operationId: inviteTeamMember description: "This endpoint allows the authenticated user to invite a new member to their team.\n\nThe user must provide a valid authentication token in the request header\nand the email and role of the new team member in the request body." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: id: 11 uuid: 9e656435-3ad8-4685-9973-b07f92f7025f workspace_id: 1 email: example+teaminvite@example.com role: admin created_at: '2025-03-10T05:05:00.000000Z' updated_at: '2025-03-10T05:05:00.000000Z' properties: data: type: object properties: id: type: integer example: 11 uuid: type: string example: 9e656435-3ad8-4685-9973-b07f92f7025f workspace_id: type: integer example: 1 email: type: string example: example+teaminvite@example.com role: type: string example: admin created_at: type: string example: '2025-03-10T05:05:00.000000Z' updated_at: type: string example: '2025-03-10T05:05:00.000000Z' tags: - 'Workspaces v1.1' requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'The email of the new team member.' example: example@example.com role: type: string description: 'The role of the new team member.' example: admin enum: - admin - editor - client - reseller required: - email - role '/api/workspaces/v1.1/accept/{team_invitation_id}': post: summary: 'Accept Workspace Invitation' operationId: acceptWorkspaceInvitation description: "This endpoint allows the user to accept an invitation to join a workspace.\n\nThe user must provide a valid authentication token in the request header\nand the ID of the workspace invitation." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Successfully accepted the invitation' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully accepted the invitation' tags: - 'Workspaces v1.1' parameters: - in: path name: team_invitation_id description: 'The ID of the team invitation.' example: 13 required: true schema: type: integer '/api/workspaces/v1.1/members/{user_id}': put: summary: 'Update Workspace Member Role' operationId: updateWorkspaceMemberRole description: "This endpoint allows the authenticated user to update the role of a workspace member.\n\nThe user must provide a valid authentication token in the request header\nand the ID of the workspace member and the new role in the request body." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Successfully updated team member John Doe role' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully updated team member John Doe role' tags: - 'Workspaces v1.1' requestBody: required: true content: application/json: schema: type: object properties: role: type: string description: 'The new role of the team member.' example: admin enum: - admin - editor - client - reseller required: - role delete: summary: 'Delete Workspace Member' operationId: deleteWorkspaceMember description: "This endpoint allows the authenticated user to remove a workspace member.\n\nThis does not delete the user account. It only removes them from the workspace.\n\nThe user must provide a valid authentication token in the request header\nand the ID of the workspace member." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: success: true message: 'Successfully deleted team member John Doe' properties: data: type: object properties: success: type: boolean example: true message: type: string example: 'Successfully deleted team member John Doe' tags: - 'Workspaces v1.1' parameters: - in: path name: user_id description: 'The ID of the team member.' example: 13 required: true schema: type: integer /api/workspaces/v1.1/master-inbox-settings: get: summary: 'Get Master Inbox Settings' operationId: getMasterInboxSettings description: "This endpoint retrieves the master inbox settings for this workspace.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: sync_all_emails: true smart_warmup_filter: true auto_interested_categorization: false properties: data: type: object properties: sync_all_emails: type: boolean example: true smart_warmup_filter: type: boolean example: true auto_interested_categorization: type: boolean example: false tags: - 'Workspaces v1.1' patch: summary: 'Update Master Inbox Settings' operationId: updateMasterInboxSettings description: "This endpoint updates the master inbox settings for this workspace.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: [] responses: 200: description: success content: application/json: schema: type: object example: data: sync_all_emails: true smart_warmup_filter: true auto_interested_categorization: false properties: data: type: object properties: sync_all_emails: type: boolean example: true smart_warmup_filter: type: boolean example: true auto_interested_categorization: type: boolean example: false tags: - 'Workspaces v1.1' requestBody: required: false content: application/json: schema: type: object properties: sync_all_emails: type: boolean description: "If set to true, all emails (incoming an outgoing) will be synced.\nIf set to false, only replies to your campaign emails will be synced.\n\nOnly set to false if you are managing your master inbox in another app and want to reduce noise." example: false smart_warmup_filter: type: boolean description: "If set to true, we will check each email for hyphenated words (eg. strong-bison),\nand automatically discard them from being synced" example: true auto_interested_categorization: type: boolean description: "If set to true, we will use GPT-4o-mini to check the contents\nof your email to determine if the response is interested is not.\nThis categorization only runs for the first unique reply from a contact." example: true /api/workspaces/v1.1/stats: get: summary: 'Get workspace stats (summary)' operationId: getWorkspaceStatssummary description: "This endpoint retrieves overall stats for this workspace between two given dates.\n\nThe user must provide a valid authentication token in the request header to access this endpoint." parameters: - in: query name: start_date description: 'The start date to fetch stats.' example: '2024-07-01' required: true schema: type: string description: 'The start date to fetch stats.' example: '2024-07-01' - in: query name: end_date description: 'The end date to fetch stats.' example: '2024-07-19' required: true schema: type: string description: 'The end date to fetch stats.' example: '2024-07-19' responses: 200: description: success content: text/plain: schema: type: string example: "{\n \"data\": {\n \"emails_sent\": \"10\",\n \"total_leads_contacted\": \"5\",\n \"opened\": \"5\",\n \"opened_percentage\": \"50\",\n \"unique_opens_per_contact\": \"5\",\n \"unique_opens_per_contact_percentage\": \"50\",\n \"unique_replies_per_contact\": \"5\",\n \"unique_replies_per_contact_percentage\": \"50\",\n \"bounced\": \"0\",\n \"bounced_percentage\": \"0\",\n \"unsubscribed\": \"5\",\n \"unsubscribed_percentage\": \"50\",\n \"interested\": \"5\",\n \"interested_percentage\": \"50\",\n }\n }" tags: - 'Workspaces v1.1' /api/workspaces/v1.1/line-area-chart-stats: get: summary: 'Get full normalized stats by date' operationId: getFullNormalizedStatsByDate description: "This endpoint retrieves stats by date for a given period\n\nThe user must provide a valid authentication token in the request header to access this endpoint.\n\nEvents returned: `Replied`, `Total Opens`, `Unique Opens`, `Sent`, `Bounced`, `Unsubscribed`, `Interested`" parameters: - in: query name: start_date description: 'The start date to fetch stats.' example: '2024-07-01' required: true schema: type: string description: 'The start date to fetch stats.' example: '2024-07-01' - in: query name: end_date description: 'The end date to fetch stats.' example: '2024-07-19' required: true schema: type: string description: 'The end date to fetch stats.' example: '2024-07-19' responses: 200: description: success content: application/json: schema: type: object example: data: - label: Replied color: '#f54842' dates: - - '2025-05-03' - 0 - label: 'Total Opens' color: '#00E396' dates: - - '2025-05-03' - 0 - label: Sent color: '#3B82F6' dates: - - '2025-05-03' - 0 - label: Unsubscribed color: '#fffff2' dates: - - '2025-05-03' - 0 - label: Bounced color: '#fffff1' dates: - - '2025-05-03' - 0 - label: Interested color: '#fffff3' dates: - - '2025-05-03' - 0 - label: 'Unique Opens' color: '#00d0ff' dates: - - '2025-05-03' - 0 properties: data: type: array example: - label: Replied color: '#f54842' dates: - - '2025-05-03' - 0 - label: 'Total Opens' color: '#00E396' dates: - - '2025-05-03' - 0 - label: Sent color: '#3B82F6' dates: - - '2025-05-03' - 0 - label: Unsubscribed color: '#fffff2' dates: - - '2025-05-03' - 0 - label: Bounced color: '#fffff1' dates: - - '2025-05-03' - 0 - label: Interested color: '#fffff3' dates: - - '2025-05-03' - 0 - label: 'Unique Opens' color: '#00d0ff' dates: - - '2025-05-03' - 0 items: type: object properties: label: type: string example: Replied color: type: string example: '#f54842' dates: type: array example: - - '2025-05-03' - 0 items: type: array tags: - 'Workspaces v1.1'