Skip to main content

API wrapper for ActiveCampaign written in Python

Project description

activecampaign-python

ActiveCampaign API wrapper written in python.

This library supports the latest API version 3. If you are looking for API version 1 which is also supported by ActiveCampaign then check below.

Installing (API v3)

pip install activecampaign-python

Requirements

- requests

Usage

Client instantiation

from activecampaign.client import Client
client = Client(URL, API_KEY)

Automations

List all automations

response = client.automations.list_all_automations()

Contacts

Create a contact

data = {
	"contact": {
		"email": "johndoe@example.com",
		"firstName": "John",
		"lastName": "Doe",
		"phone": "7223224241"
	}
}
response = client.contacts.create_a_contact(data)

Create or update contact

data = {
	"contact": {
		"email": "johndoe@example.com",
		"firstName": "John",
		"lastName": "Doe",
		"phone": "7223224241"
	}
}
response = client.contacts.create_or_update_contact(data)

Retrieve a contact

response = client.contacts.retrieve_a_contact("contact_id")

Update list status for a contact

data = {
    "contactList": {
        "list": 2,
        "contact": 1,
        "status": 1
    }
}
response = client.contacts.update_list_status_for_a_contact(data)

Update a contact

data = {
	"contact": {
		"email": "johndoe@example.com",
		"firstName": "John",
		"lastName": "Doe"
	}
}
response = client.contacts.update_a_contact("contact_id", data)

Delete a contact

response = client.contacts.delete_a_contact("contact_id")

List all contacts

response = client.contacts.list_all_contacts()

Additionally, you can filter a contact:
response = client.contacts.list_all_contacts(email="johndoe@example.com")

For more query params: https://developers.activecampaign.com/reference#list-all-contacts

List all automations the contact is in

response = client.contacts.list_all_automations_the_contacts_is_in("contact_id")

Retrieve a contacts score value

response = client.contacts.retrieve_a_contacts_score_value("contact_id")

Add a contact to an automation

data = {
    "contactAutomation": {
        "contact": 1,
        "automation": 1
    }
}
response = client.contacts.add_a_contact_to_an_automation(data)

Retrieve an automation a contact is in

response = client.contacts.retrieve_an_automation_a_contact_is_in("contact_automation_id")

Remove a contact from an automation

response = client.contacts.remove_a_contact_from_an_automation("contact_automation_id")

List all automations a contact is in

response = client.contacts.list_all_automations_a_contact_is_in()

Create a custom field

data = {
	"field": {
		"type": "textarea",
		"title": "Field Title",
		"descript": "Field description",
		"isrequired": 1,
		"perstag": "Personalized Tag",
		"defval": "Defaut Value",
		"visible": 1,
		"ordernum": 1
    }
}
response = client.contacts.create_a_custom_field(data)

Retrieve a custom field

response = client.contacts.retrieve_a_custom_field("field_id")

Update a custom field

data = {
	"field": {
		"type": "textarea",
		"title": "Field Title",
		"descript": "Field description",
		"isrequired": 1,
		"perstag": "Personalized Tag",
		"defval": "Defaut Value",
		"visible": 1,
		"ordernum": 1
    }
}
response = client.contacts.create_a_custom_field("field_id", data)

Delete a custom field

response = client.contacts.delete_a_custom_field("field_id")

List all custom fields

response = client.contacts.list_all_custom_fields()

Create a custom field relationship to list(s)

data = {
	"fieldRel": {
		"field": 8,
		"relid": 2
	}
}
response = client.contacts.create_a_custom_field_relationship_to_list(data)

Create custom field options

data = {
    "field": 1,
    "label": "my custom label",
    "value": 1,
    "orderid": 1,
    "isdefault": True
}
response = client.contacts.create_custom_field_options(data)

Retrieve field options

response = client.contacts.retrieve_field_options("field_id")

Create a custom field value

response = activecampaign_client.contacts.create_a_custom_field_value(data)

Retrieve a custom field value

response = activecampaign_client.contacts.retrieve_a_custom_field_value(field_value_id="some-id")

Update a custom field value for contact

response = activecampaign_client.contacts.update_a_custom_field_value_for_contact(data, field_value_id="some-id")

Delete a custom field value

response = activecampaign_client.contacts.delete_a_custom_field_value(field_value_id="some-id")

List all custom field values

response = activecampaign_client.contacts.list_all_custom_field_values()

Retrieve a contact's field values

response = activecampaign_client.contacts.retrieve_a_contacts_field_values(contact_id="some-id")

Retrieve a contact's tracking logs

response = activecampaign_client.contacts.retrieve_a_contacts_tracking_logs(contact_id="some-id")

Retrieve a contact's data

response = activecampaign_client.contacts.retrieve_a_contacts_data(contact_id="some-id")

Retrieve a contact's bounce logs

response = activecampaign_client.contacts.retrieve_a_contacts_bounce_logs(contact_id="some-id")

Retrieve a contact's geo ips

response = activecampaign_client.contacts.retrieve_a_contacts_geo_ips(contact_id="some-id")

Retrieve a contact's organization

response = activecampaign_client.contacts.retrieve_a_contacts_organization(contact_id="some-id")

Retrieve a contact's account contacts

response = activecampaign_client.contacts.retrieve_a_contacts_account_contacts(contact_id="some-id")

Retrieve a contact's automation entry counts

response = activecampaign_client.contacts.retrieve_a_contacts_automation_entry_counts(contact_id="some-id")

Add a tag to a contact

data = {
    "contactTag": {
        "contact": "1",
        "tag": "20"
    }
}
response = client.contacts.add_a_tag_to_contact(data)

Remove a tag from a contact

response = client.contacts.remove_a_tag_from_a_contact("contact_tag_id")

Retrieve contact tags

response = client.contacts.retrieve_contact_tags("contact_id")

Deals

Create a deal

data = {
  "deal": {
    "contact": "51",
    "description": "This deal is an important deal",
    "currency": "usd",
    "group": "1",
    "owner": "1",
    "percent": None,
    "stage": "1",
    "status": 0,
    "title": "AC Deal",
    "value": 45600
  }
}
response = client.deals.create_a_deal(data)

Retrieve a deal

response = client.deals.retrieve_a_deal("deal_id")

Update a deal

data = {
  "deal": {
    "contact": "51",
    "description": "This deal is an important deal",
    "currency": "usd",
    "group": "1",
    "owner": "1",
    "percent": None,
    "stage": "1",
    "status": 0,
    "title": "AC Deal",
    "value": 45600
  }
}
response = client.deals.update_a_deal(data)

Delete a deal

response = client.deals.delete_a_deal("deal_id")

List all deals

response = client.deals.list_all_deals()

Additionally, you can filter a deal:
query = {
    "filters[stage]": 1
}
response = client.deals.list_all_deals(**query)

For more query params: https://developers.activecampaign.com/reference#list-all-deals

Create a deal note

data = {
  "note": {
    "note": "Note for the deal"
  }
}
response = client.deals.create_a_deal_note("deal_id", data)

Update a deal note

data = {
  "note": {
    "note": "Update with more info"
  }
}
response = client.deals.update_a_deal_note("deal_id", "note_id", data)

List all pipelines

response = client.deals.list_all_pipelines()

Additionally, you can filter a pipeline:
query = {
    "filters[title]": "My pipeline"
}
response = client.deals.list_all_pipelines(**query)

For more query params: https://developers.activecampaign.com/reference#list-all-pipelines

List all stages

response = client.deals.list_all_stages()

Additionally, you can filter a stage:
query = {
    "filters[d_groupid]": 1
}
response = client.deals.list_all_stages(**query)

For more query params: https://developers.activecampaign.com/reference#list-all-deal-stages

Lists

Create a list

data = {
	"list": {
		"name": "Name of List",
		"stringid": "Name-of-list",
		"sender_url": "http://activecampaign.com",
		"sender_reminder": "You are receiving this email as you subscribed to a newsletter when making an order on our site.",
		"send_last_broadcast": 0,
		"carboncopy": "",
		"subscription_notify": "",
		"unsubscription_notify": "",
		"user": 1
	}
}
response = client.lists.create_a_list(data)

Retrieve a list

response = client.lists.retrieve_a_list("list_id")

Delete a list

response = client.lists.delete_a_list("list_id")

Retrieve all lists

response = client.lists.retrieve_all_lists()

Create a list group permission

data = {
	"listGroup": {
		"listid": 19,
		"groupid": 1
	}
}
response = client.lists.create_a_list_group_permission(data)

Notes

Create a note

data = {
	"note": {
		"note": "This is the text of the note",
		"relid": 2,
		"reltype": "Subscriber"
	}
}
response = client.notes.create_a_note(data)

Retrieve a note

response = client.notes.retrieve_a_note("note_id")

Update a note

data = {
	"note": {
		"note": "This is the text of the note",
		"relid": 2,
		"reltype": "Subscriber"
	}
}
response = client.notes.update_a_note("note_id", data)

Delete a note

response = client.notes.delete_a_note("note_id")

Tasks

Create a task

data = {
  "dealTask": {
    "title":null,
    "ownerType":"contact",
    "relid":"7",
    "status":0,
    "note":"Testing Task",
    "duedate":"2017-02-25T12:00:00-06:00",
    "edate":"2017-02-25T12:15:00-06:00",
    "dealTasktype":"1"
  }
}
response = client.tasks.create_a_task(data)

Retrieve a task

response = client.tasks.retrieve_a_task("task_id")

Update a task

data = {
  "dealTask": {
    "title":null,
    "ownerType":"contact",
    "relid":"7",
    "status":0,
    "note":"Testing Task",
    "duedate":"2017-02-25T12:00:00-06:00",
    "edate":"2017-02-25T12:15:00-06:00",
    "dealTasktype":"1"
  }
}
response = client.tasks.update_a_task("task_id", data)

Delete a task

response = client.tasks.delete_a_task("task_id")

List all tasks

response = client.tasks.list_all_tasks()

Additionally, you can filter a task:
query = {
    "filters[title]": "My task"
}
response = client.deals.list_all_tasks(**query)

For more query params: https://developers.activecampaign.com/reference#list-all-tasks

Users

Create a user

response = client.users.create_a_user(data)

Retrieve a user

response = client.users.retrieve_a_user("user_id")

Retrieve a user by email

response = client.users.retrieve_a_user_by_email("email")

Retrieve a user by username

response = client.users.retrieve_a_user_by_username("username")

Retrieve logged-in user

response = client.users.retrieve_logged_in_user()

Update a user

response = client.users.update_a_user("user_id", data)

Delete a user

response = client.users.delete_a_user("user_id")

List all users

response = client.users.list_all_users()

Webhooks

Create a webhook

data = {
    "webhook": {
        "name": "My Hook",
        "url": "http://example.com/my-hook",
        "events": [
            "subscribe",
            "unsubscribe",
            "sent"
        ],
        "sources": [
            "public",
            "system"
        ]
    }
}
response = client.webhooks.create_a_webhook(data)

Retrieve a webhook

response = client.webhooks.retrieve_a_webhook("webhook_id")

Delete a webhook

response = client.webhooks.delete_a_webhook("webhook_id")

List all webhooks

response = client.webhooks.list_all_webhooks()

Additionally, you can filter a webhook:
query = {
    "filters[name]": "My webhook"
}
response = client.deals.list_all_webhooks(**query)

For more query params: https://developers.activecampaign.com/reference#get-a-list-of-webhooks

List all webhook events

response = client.webhooks.list_all_webhook_events()

Tags

Create a tag

data = {
    "tag":{
        "tag": "My Tag",
        "tagType": "contact",
        "description": "Description"
    }
}
response = client.tags.create_a_tag(data)

Retrieve a tag

response = client.tags.retrieve_a_tag("tag_id")

Update a tag

data = {
    "tag":{
        "tag": "My Tag",
        "tagType": "contact",
        "description": "Description"
    }
}
response = client.tags.update_a_tag("tag_id", data)

Delete a tag

response = client.tags.delete_a_tag("tag_id")

List all tags

response = client.tags.list_all_tags(search='Tag Name')

Custom Objects

Create a schema

data = {
  "schema": {
    "slug": "object-name",
    "labels": {
      "singular": "ObjectName",
      "plural": "ObjectNames"
    },
    "description": "Some Description",
    "fields": [
      {
        "id": "some-field-id",
        "labels": {
          "singular": "ID",
          "plural": "IDs"
        },
        "type": "text",
        "required": True,
      },
    ],
    "relationships": [
      {
        "id": "primary-contact",
        "labels": {
          "singular": "Primary Contact",
          "plural": "Primary Contacts"
        },
        "description": "Primary contact to this object",
        "namespace": "contacts",
        "hasMany": False
      }
    ]
  }
}
response = client.customobjects.create_a_schema(data=data)

Retrieve a schema

response = client.customobjects.retrieve_a_schema(schema_id="some-id", show_all_fields=False)

Update a schema

data = {
  "schema": {
    "slug": "object-name",
    "labels": {
      "singular": "ObjectName",
      "plural": "ObjectNames"
    },
    "description": "Some Description",
    "fields": [
      {
        "id": "some-field-id",
        "labels": {
          "singular": "ID",
          "plural": "IDs"
        },
        "type": "text",
        "required": True,
      },
      {
        "id": "some-other-field-id",
        "labels": {
          "singular": "OtherID",
          "plural": "OtherIDs"
        },
        "type": "text",
        "required": True,
      },
    ],
    "relationships": [
      {
        "id": "primary-contact",
        "labels": {
          "singular": "Primary Contact",
          "plural": "Primary Contacts"
        },
        "description": "Primary contact to this object",
        "namespace": "contacts",
        "hasMany": False
      }
    ]
  }
}
response = client.customobjects.update_a_schema(schema_id="some-schema-id", data=data, show_all_fields=False)

Delete a schema

response = client.customobjects.delete_a_schema(schema_id="some-id")

WARNING: This deletes all associated records

List all schemas

response = client.customobjects.list_all_schemas(schema_relationship="contact", limit=20, offset=0, ordering=None, show_all_fields=False)

Delete field in schema

response = client.customobjects.delete_a_field(schema_id="some-id", field_id="some-field-id", show_all_fields=False)

Create a public schema

data = {

}
response = client.customobjects.create_a_public_schema(data=data)

Create a child schema

response = client.customobjects.create_a_child_schema(parent_id="some-parent-schema-id")

Upsert custom object record

data = {
  "record": {
    "fields": [
      {
        "id": "some-field-id",
        "value": "asdf-1234"
      },
      {
        "id": "some-other-field-id",
        "value": "asdf-5678"
      },
    ]
  }
}
response = client.customobjects.create_or_update_record(schema_id="some-id", data=data)

Retrieve a record

response = client.customobjects.retrieve_a_record(schema_id="some-id", record_id="some-record-id")

Retrieve a record by external id

response = client.customobjects.retrieve_a_record_by_external_id(schema_id="some-id", external_id="some-record-id")

Delete a record

response = client.customobjects.delete_a_record(schema_id="some-id", record_id="some-record-id")

Delete a record by external id

response = client.customobjects.delete_a_record_by_external_id(schema_id="some-id", external_id="some-record-id")

List all records

response = client.customobjects.list_all_records(
        schema_id="some-id", contact_id="some-contact-id", deal_id=None, account_id=None,
        limit=20, offset=0)

Addresses

Create an address

response = activecampaign_client.addresses.create_an_address(data)

Retrieve an address

response = activecampaign_client.addresses.retrieve_address(address_id="some-id")

Update an address

response = activecampaign_client.addresses.update_address(data, address_id="some-id")

Delete an address

response = activecampaign_client.addresses.delete_address(address_id="some-id")

Delete an address associated with a user group

response = activecampaign_client.addresses.delete_address_associated_with_user_group(group_id="some-id")

Delete an address associated with a list

response = activecampaign_client.addresses.delete_address_associated_with_list(list_id="some-id")

Retrieve all addresses

response = activecampaign_client.addresses.retrieve_all_addresses()

Campaigns

List all campaigns

response = activecampaign_client.campaigns.list_all_campaigns()

Retrieve a link associated campaign

response = activecampaign_client.campaigns.retrieve_a_link_associated_campaign(campaign_id="some-id")

Retrieve a campaign

response = activecampaign_client.campaigns.retrieve_a_campaign(campaign_id="some-id")

Brandings

Retrieve a branding

response = activecampaign_client.brandings.retrieve_a_branding(branding_id="some-id")

Update a branding

response = activecampaign_client.brandings.update_a_branding(data, branding_id="some-id")

List all brandings

response = activecampaign_client.brandings.list_all_brandings()

About API v1

You can clone and checkout our tag v0.1.1.

$ git clone https://github.com/GearPlug/activecampaign-python.git
$ git checkout tags/v0.1.1 -b <branch_name>

Also you can install this version in pip

$ pip install activecampaign-python=0.1.1

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

activecampaign_python-1.0.10.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

activecampaign_python-1.0.10-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file activecampaign_python-1.0.10.tar.gz.

File metadata

File hashes

Hashes for activecampaign_python-1.0.10.tar.gz
Algorithm Hash digest
SHA256 1226c06e54f1b7dd1b9be8db7c57ef9d2cc08d2a3551adb1db22b01c1282c580
MD5 3f77f4664c9b873eb0a1ed7a802c8762
BLAKE2b-256 5eef3932be3848a88b27f32caf148d44917a7c4485cd8b6c885aac6c2e9a56ce

See more details on using hashes here.

File details

Details for the file activecampaign_python-1.0.10-py3-none-any.whl.

File metadata

File hashes

Hashes for activecampaign_python-1.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 2e6cca1a5be80de80ce174a3e0e5bd91c90f92048e1302e978644962c1fb528a
MD5 b9123115d4e27d7edb0589536fba62bd
BLAKE2b-256 0e71d7c12cec370a33159796b334833ba170d9d4dcc9bdc4954a5c15a0e05bcd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page