Getting Started
Resources
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.
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!
### 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.
### 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 CollectionSDK Libraries
Accelerate your integration with our official client libraries. These SDKs provide typed interfaces, automatic authentication handling, and helper methods for common operations.
API Resources
Users
/v1/usersUsers 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
/v2/usersCreate a new user
/usersGet all users
/users/{id}Get a specific user by ID
/users/{id}Update a user
/users/{id}Delete a user
Parameters
| Name | Type | Description |
|---|---|---|
| id | integer | Integer set at creation used to identify the user. AKA user_id |
| string | The email is related to the user, not the profile. Used to log in | |
| password | string | Used by the user to access your investment portal |
| first_name | string | First name, data is not saved to the user but to their profile |
| last_name | string | Last name, data is not saved to the user but to their profile |
| country | string | The country your user lives in spelled out 'United States', 'Mexico', etc... |
| last_login_date | datetime | Last time the user logged into the investment portal |
| sign_up_date | datetime | Date the user was created |
| ip | string | The last IP that the user logged in from |
Profiles
/v1/profilesProfiles 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
/v2/profilesCreate a new profile
/profilesGet all profiles
/profiles/type/{type}Get profiles by type
/profiles/{id}Get a specific profile by ID
/profiles/{id}Update a profile
/profiles/{id}Delete a profile
Parameters
| Name | Type | Description |
|---|---|---|
| id | integer | Integer created when the profile is created, used to identify the profile in the system. AKA profile_id |
| user_id | integer | The ID of the user this profile belongs to |
| bio | string | Bio of profile set by the user |
| business_type | string | Text string, typically used for organization type, i.e. LLC, S Corporation, C Corporation, Limited Partnership |
| city | string | Domicile city |
| company_name | string | Name of Entity |
| contact_email | string | Email specific to the profile, separate from the User's email |
| date_of_birth | date | The date of birth for an individual profile |
| accreditation_status | string | Current accreditation status (e.g., 'verified', 'pending') |
| kyc_status | string | Know Your Customer verification status |
Projects
/v1/projectsProjects 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
/v2/projectsCreate a new project/offering
/projectsGet all projects
/projects/issuer/{issuer_id}Get projects by issuer
/projects/{id}Get a specific project by ID
/projects/{id}Update a project
/projects/{id}Delete a project
Parameters
| Name | Type | Description |
|---|---|---|
| id | integer | Unique identifier for the project |
| owner_profile_uuid | string | UUID of the issuer profile that owns this project |
| project_template_id | integer | ID of the template used for this project |
| title | string | Title of the project/offering |
| teaser | string | Short description or teaser text |
| video_url | string | URL to project video |
| status | string | Current status of the project (e.g., 'draft', 'active', 'closed') |
Project Collaborators
/v1/project-collaboratorsProject Collaborators represent team members and collaborators associated with projects/offerings. This allows multiple users to work together on managing an offering.
Available Methods
/v2/project-collaboratorsAdd a collaborator to a project
/project-collaboratorsGet all project collaborators
/project-collaborators/{id}Get a specific collaborator by ID
/project-collaborators/{id}Update a collaborator
/project-collaborators/{id}Remove a collaborator
Parameters
| Name | Type | Description |
|---|---|---|
| id | integer | Unique identifier for the collaborator relationship |
| project_id | integer | ID of the project |
| user_id | integer | ID of the user who is a collaborator |
| role | string | Role of the collaborator (e.g., 'editor', 'viewer') |
Investments
/v1/investmentsManage investment records, including status, amount, and associated offering. Investments represent the transactions where investors commit capital to projects/offerings on your platform.
Available Methods
/v2/investmentsCreate a new investment
/investmentsGet all investments
/investments/{id}Get a specific investment by ID
/investments/{id}Update an investment
/investments/{id}Delete an investment
Parameters
| Name | Type | Description |
|---|---|---|
| id | integer | Unique identifier for the investment |
| project_id | integer | The ID of the project/offering being invested in |
| profile_id | integer | The ID of the investor profile making the investment |
| amount | decimal | The amount of the investment |
| status | string | Current status of the investment (e.g., 'pending', 'cleared', 'rejected') |
| transaction_id | string | Unique identifier for the payment transaction |
| created_at | datetime | Timestamp when the investment was created |
AML (Anti-Money Laundering)
/v1/amlAML 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
/v2/amlCreate AML record
/amlGet all AML records
/aml/{id}Get a specific AML record by ID
/aml/{id}Update AML information
/aml/{id}Delete AML record
Parameters
| Name | Type | Description |
|---|---|---|
| id | integer | Unique identifier for the AML record |
| profile_id | integer | ID of the profile being verified |
| verification_status | string | Status of verification (e.g., 'pending', 'approved', 'rejected') |
| document_type | string | Type of verification document |
| verified_at | datetime | Timestamp when verification was completed |
Distribution Accounts
/v1/distribution-accountsDistribution Accounts manage account information for distributing returns, dividends, or other payments to investors. This enables automated distribution of earnings to investor accounts.
Available Methods
/v2/distribution-accountsCreate distribution account
/distribution-accountsGet all distribution accounts
/distribution-accounts/{id}Get specific distribution account
/distribution-accounts/{id}Update distribution account
/distribution-accounts/{id}Delete distribution account
Parameters
| Name | Type | Description |
|---|---|---|
| id | integer | Unique identifier for the distribution account |
| profile_id | integer | ID of the profile owning this account |
| account_type | string | Type of account (e.g., 'bank', 'wire') |
| account_number | string | Account number for distributions |
| routing_number | string | Bank routing number |
Earnings
/v1/earningsEarnings endpoints track returns, dividends, and other financial distributions to investors. This provides transparency and record-keeping for all earnings generated by investments.
Available Methods
/v2/earningsCreate earnings record
/earningsGet all earnings
/earnings/{id}Get specific earnings record
/earnings/{id}Update earnings record
/earnings/{id}Delete earnings record
Parameters
| Name | Type | Description |
|---|---|---|
| id | integer | Unique identifier for the earnings record |
| investment_id | integer | ID of the related investment |
| amount | decimal | Amount of earnings |
| type | string | Type of earning (e.g., 'dividend', 'interest', 'capital_gain') |
| distribution_date | date | Date when earnings will be distributed |
Payment Accounts
/v1/payment-accountsPayment Accounts manage the payment methods and accounts used for processing investment transactions. This enables secure payment processing for investments on your platform.
Available Methods
/v2/payment-accountsCreate payment account
/payment-accountsGet all payment accounts
/payment-accounts/{id}Get specific payment account
/payment-accounts/{id}Update payment account
/payment-accounts/{id}Delete payment account
Parameters
| Name | Type | Description |
|---|---|---|
| id | integer | Unique identifier for the payment account |
| profile_id | integer | ID of the profile owning this account |
| payment_method | string | Type of payment method (e.g., 'ach', 'wire', 'credit_card') |
| account_holder_name | string | Name on the account |
| is_verified | boolean | Whether the payment account has been verified |
Pledges
/v1/pledgesPledges 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
/v2/pledgesCreate a pledge
/pledgesGet all pledges
/pledges/{id}Get specific pledge
/pledges/{id}Update a pledge
/pledges/{id}Delete a pledge
Parameters
| Name | Type | Description |
|---|---|---|
| id | integer | Unique identifier for the pledge |
| project_id | integer | ID of the project being pledged to |
| profile_id | integer | ID of the investor profile making the pledge |
| amount | decimal | Pledged amount |
| status | string | Status of the pledge (e.g., 'active', 'converted', 'expired') |
| expires_at | datetime | When the pledge expires |
Versions
/v1/versionsVersions endpoint provides information about API versioning, allowing you to track changes and ensure compatibility with your integration as the API evolves.
Available Methods
/versionsGet API version information
Parameters
| Name | Type | Description |
|---|---|---|
| version | string | API version number |
| release_date | date | Date when this version was released |
| changelog | string | Summary of changes in this version |
