Developer Hub

Build on CrowdEngine

Integrate institutional-grade capital raising capabilities directly into your application. Our RESTful API gives you full control over users, offerings, and investments.

curl request
curl -X POST \
  https://api.crowdengine.com/v1/investors \
  -u "user:pass" \
  -d '{
    "email": "[email protected]",
    "first_name": "Jane",
    "last_name": "Doe"
  }'

CrowdEngine API Introduction

CrowdEngine's CRUD API allows you to securely CREATE, READ, UPDATE, and DELETE your investment platform's data in the database.

  CrowdEngine's API operations represent the most common operations that can be performed on data in a system. With CrowdEngine's API, you can perform these operations through HTTP requests.

  ## What You Can Accomplish

  - **Create new data:** You can use a POST request to create new data in a system. For example, you might use a POST request to create a new investor profile.
  - **Retrieve existing data:** You can use a GET request to retrieve data from a system. For example, you might use a GET request to retrieve a list of all the investments on a specific offering.
  - **Update existing data:** You can use a PUT request to update data in a system. For example, you might use a PUT request to update AML information.
  - **Delete existing data:** You can use a DELETE request to delete data from a system. For example, you might use a DELETE request to delete a test investment on an offering.

  ## Integration Use Cases

  You can use CrowdEngine's API to sync customer data between a customer relationship management (CRM) system and your investment platform. Whenever an investor creates an account or makes an investment on your investment platform, a POST request can be sent to the CRUD API to create or update the corresponding investor's record in the CRM system.

  You can use CrowdEngine's API to build triggers that automate certain actions based on changes to the data in a system. For example, you can set up a trigger that sends an email notification whenever a new customer record is created in a CRM system, or that updates an accounting management system whenever an investment is completed on your investment platform.

  Overall, CrowdEngine's API provides a flexible and powerful way to manage data and automate processes across different systems, making it a valuable tool for developers and businesses alike.

Authentication

CrowdEngine uses Basic Auth for API authentication.

  ### Getting Your Credentials

  CrowdEngine makes setting up your API connection simple:

  1. Login into your investment platform as an admin
  2. Navigate to `{your-domain}/admin/api_credentials`
  3. Click **Reset Credentials**
  4. Retrieve your platform credentials (username and password)
  5. Use these credentials in the system you're connecting to

  ### Authentication Headers

  Include your credentials in the Authorization header using Basic Auth:

  ```
  Authorization: Basic {base64_encoded_credentials}
  ```

  ### Expected Responses

  | Status Code | Description |
  |-------------|-------------|
  | **200** | Everything OK |
  | **401** | Authentication failed |
  | **404** | Not found |
  | **500** | Server error |

  ### Testing with Postman

  To test the CRUD API, create a Postman fork and environment:

  1. Import the CrowdEngine Postman collection
  2. Click **Environments** in the left menu
  3. Create a new environment with variables:
     - `platform_domain` - Your portal URL (without https://)
     - `user_name` - Your API username
     - `password` - Your API password
  4. Select your environment to have credentials prefilled

  Your CrowdEngine API is now connected!

Webhooks

Webhooks enable real-time communication between different systems or applications. They allow one application to send data to another application whenever a specific event or trigger occurs. Instead of periodically polling for updates, the receiving application will be notified instantly when new data becomes available.

  ### Setting Up a Webhook

  Setting up your webhook is easy:

  1. Retrieve the **Destination URL** where the webhook should send data
  2. Log into your admin dashboard
  3. Click on the left menu item **Configurations**
  4. Select **Global Settings**
  5. In Global Settings select **Integrations**
  6. Scroll down to the bottom of Integration and place the **Destination URL** in the **Webhook URL** field
  7. Click the **Save Changes** button

  ### Available Events

  CrowdEngine supports the following webhook events:

  | Event | Description |
  |-------|-------------|
  | `new_user` | Triggered when a new user registers |
  | `new_profile` | Triggered when a new profile is created |
  | `update_profile` | Triggered when a profile is updated |
  | `new_project` | Triggered when a new offering/project is created |
  | `updated_project` | Triggered when a project is updated |
  | `completed_investment` | Triggered when an investment is successfully completed |

  ### Webhook Payload

  Each webhook event will send a JSON payload to your destination URL containing relevant data about the event. The payload structure varies by event type and includes all relevant information needed to process the event in your system.

Postman Collection

Get started quickly by importing our official Postman collection. It includes pre-configured requests for all major endpoints, environment variables for authentication, and example payloads.

Download Postman Collection

SDK Libraries

Accelerate your integration with our official client libraries. These SDKs provide typed interfaces, automatic authentication handling, and helper methods for common operations.

Node.js
Official Node.js client for CrowdEngine API
npm install @crowdengine/node-sdk
Python
Official Python client for CrowdEngine API
pip install crowdengine-sdk
PHP
Official PHP client for CrowdEngine API
composer require crowdengine/sdk

API Resources

Users

/v1/users

Users are at the top of the data architecture in your investment platform and are interlinked throughout the database tables. The user can be any of the following: admin, moderator, investor, or issuer. Every user is required to have a profile and every profile is required to have a connected user.

Available Methods

POST
/v2/users

Create a new user

GET
/users

Get all users

GET
/users/{id}

Get a specific user by ID

PUT
/users/{id}

Update a user

DELETE
/users/{id}

Delete a user

Parameters

NameTypeDescription
idintegerInteger set at creation used to identify the user. AKA user_id
emailstringThe email is related to the user, not the profile. Used to log in
passwordstringUsed by the user to access your investment portal
first_namestringFirst name, data is not saved to the user but to their profile
last_namestringLast name, data is not saved to the user but to their profile
countrystringThe country your user lives in spelled out 'United States', 'Mexico', etc...
last_login_datedatetimeLast time the user logged into the investment portal
sign_up_datedatetimeDate the user was created
ipstringThe last IP that the user logged in from

Profiles

/v1/profiles

Profiles are used to store data of ownership for placed investments and offerings. There are 5 different profile types: Individual (store User data and place investments), Entity (place investments as entity, stakeholders linked by AML), Custodian (place investments as IRA or Trust, beneficiaries linked by AML), Issuers (hold ownership data of entity that owns the Offering/Project), and Joint (place investments for two individuals investing together).

Available Methods

POST
/v2/profiles

Create a new profile

GET
/profiles

Get all profiles

GET
/profiles/type/{type}

Get profiles by type

GET
/profiles/{id}

Get a specific profile by ID

PUT
/profiles/{id}

Update a profile

DELETE
/profiles/{id}

Delete a profile

Parameters

NameTypeDescription
idintegerInteger created when the profile is created, used to identify the profile in the system. AKA profile_id
user_idintegerThe ID of the user this profile belongs to
biostringBio of profile set by the user
business_typestringText string, typically used for organization type, i.e. LLC, S Corporation, C Corporation, Limited Partnership
citystringDomicile city
company_namestringName of Entity
contact_emailstringEmail specific to the profile, separate from the User's email
date_of_birthdateThe date of birth for an individual profile
accreditation_statusstringCurrent accreditation status (e.g., 'verified', 'pending')
kyc_statusstringKnow Your Customer verification status

Projects

/v1/projects

Projects contain data pertaining to the offerings on your investment platform. Each project represents a fundraising offering or investment opportunity that issuers can create and investors can invest in.

Available Methods

POST
/v2/projects

Create a new project/offering

GET
/projects

Get all projects

GET
/projects/issuer/{issuer_id}

Get projects by issuer

GET
/projects/{id}

Get a specific project by ID

PUT
/projects/{id}

Update a project

DELETE
/projects/{id}

Delete a project

Parameters

NameTypeDescription
idintegerUnique identifier for the project
owner_profile_uuidstringUUID of the issuer profile that owns this project
project_template_idintegerID of the template used for this project
titlestringTitle of the project/offering
teaserstringShort description or teaser text
video_urlstringURL to project video
statusstringCurrent status of the project (e.g., 'draft', 'active', 'closed')

Project Collaborators

/v1/project-collaborators

Project Collaborators represent team members and collaborators associated with projects/offerings. This allows multiple users to work together on managing an offering.

Available Methods

POST
/v2/project-collaborators

Add a collaborator to a project

GET
/project-collaborators

Get all project collaborators

GET
/project-collaborators/{id}

Get a specific collaborator by ID

PUT
/project-collaborators/{id}

Update a collaborator

DELETE
/project-collaborators/{id}

Remove a collaborator

Parameters

NameTypeDescription
idintegerUnique identifier for the collaborator relationship
project_idintegerID of the project
user_idintegerID of the user who is a collaborator
rolestringRole of the collaborator (e.g., 'editor', 'viewer')

Investments

/v1/investments

Manage investment records, including status, amount, and associated offering. Investments represent the transactions where investors commit capital to projects/offerings on your platform.

Available Methods

POST
/v2/investments

Create a new investment

GET
/investments

Get all investments

GET
/investments/{id}

Get a specific investment by ID

PUT
/investments/{id}

Update an investment

DELETE
/investments/{id}

Delete an investment

Parameters

NameTypeDescription
idintegerUnique identifier for the investment
project_idintegerThe ID of the project/offering being invested in
profile_idintegerThe ID of the investor profile making the investment
amountdecimalThe amount of the investment
statusstringCurrent status of the investment (e.g., 'pending', 'cleared', 'rejected')
transaction_idstringUnique identifier for the payment transaction
created_atdatetimeTimestamp when the investment was created

AML (Anti-Money Laundering)

/v1/aml

AML endpoints manage compliance and verification data for Know Your Customer (KYC) and Anti-Money Laundering requirements. This ensures your platform meets regulatory compliance standards.

Available Methods

POST
/v2/aml

Create AML record

GET
/aml

Get all AML records

GET
/aml/{id}

Get a specific AML record by ID

PUT
/aml/{id}

Update AML information

DELETE
/aml/{id}

Delete AML record

Parameters

NameTypeDescription
idintegerUnique identifier for the AML record
profile_idintegerID of the profile being verified
verification_statusstringStatus of verification (e.g., 'pending', 'approved', 'rejected')
document_typestringType of verification document
verified_atdatetimeTimestamp when verification was completed

Distribution Accounts

/v1/distribution-accounts

Distribution Accounts manage account information for distributing returns, dividends, or other payments to investors. This enables automated distribution of earnings to investor accounts.

Available Methods

POST
/v2/distribution-accounts

Create distribution account

GET
/distribution-accounts

Get all distribution accounts

GET
/distribution-accounts/{id}

Get specific distribution account

PUT
/distribution-accounts/{id}

Update distribution account

DELETE
/distribution-accounts/{id}

Delete distribution account

Parameters

NameTypeDescription
idintegerUnique identifier for the distribution account
profile_idintegerID of the profile owning this account
account_typestringType of account (e.g., 'bank', 'wire')
account_numberstringAccount number for distributions
routing_numberstringBank routing number

Earnings

/v1/earnings

Earnings endpoints track returns, dividends, and other financial distributions to investors. This provides transparency and record-keeping for all earnings generated by investments.

Available Methods

POST
/v2/earnings

Create earnings record

GET
/earnings

Get all earnings

GET
/earnings/{id}

Get specific earnings record

PUT
/earnings/{id}

Update earnings record

DELETE
/earnings/{id}

Delete earnings record

Parameters

NameTypeDescription
idintegerUnique identifier for the earnings record
investment_idintegerID of the related investment
amountdecimalAmount of earnings
typestringType of earning (e.g., 'dividend', 'interest', 'capital_gain')
distribution_datedateDate when earnings will be distributed

Payment Accounts

/v1/payment-accounts

Payment Accounts manage the payment methods and accounts used for processing investment transactions. This enables secure payment processing for investments on your platform.

Available Methods

POST
/v2/payment-accounts

Create payment account

GET
/payment-accounts

Get all payment accounts

GET
/payment-accounts/{id}

Get specific payment account

PUT
/payment-accounts/{id}

Update payment account

DELETE
/payment-accounts/{id}

Delete payment account

Parameters

NameTypeDescription
idintegerUnique identifier for the payment account
profile_idintegerID of the profile owning this account
payment_methodstringType of payment method (e.g., 'ach', 'wire', 'credit_card')
account_holder_namestringName on the account
is_verifiedbooleanWhether the payment account has been verified

Pledges

/v1/pledges

Pledges represent investment commitments or reservations made by investors before completing the full investment process. This allows investors to express interest and reserve their allocation.

Available Methods

POST
/v2/pledges

Create a pledge

GET
/pledges

Get all pledges

GET
/pledges/{id}

Get specific pledge

PUT
/pledges/{id}

Update a pledge

DELETE
/pledges/{id}

Delete a pledge

Parameters

NameTypeDescription
idintegerUnique identifier for the pledge
project_idintegerID of the project being pledged to
profile_idintegerID of the investor profile making the pledge
amountdecimalPledged amount
statusstringStatus of the pledge (e.g., 'active', 'converted', 'expired')
expires_atdatetimeWhen the pledge expires

Versions

/v1/versions

Versions endpoint provides information about API versioning, allowing you to track changes and ensure compatibility with your integration as the API evolves.

Available Methods

GET
/versions

Get API version information

Parameters

NameTypeDescription
versionstringAPI version number
release_datedateDate when this version was released
changelogstringSummary of changes in this version