Skip to main content

API Introduction

Learn how to use the iPaaS.com API

Overview

iPaaS.com is API-first — everything you can do in our platform can be accomplished through API calls. Our database is accessed exclusively through the API, and our UI is entirely API-driven.

Important:

If you aren't familiar with working with an API and Swagger, you may experience the following issues:

  • Incorrect API Calls: Leading to errors, unexpected responses, or failure to retrieve and submit data.

  • Data Corruption or Loss: Improperly structured requests or misunderstanding of API operations could unintentionally modify or delete critical data or configuration.

  • System Instability: Malformed requests or excessive or improper API usage could impact system performance or availability.

  • Security Vulnerabilities: Misconfiguration or misunderstanding of authentication and authorization mechanisms could expose sensitive information.

  • Wasted Time and Resources: Significant time may be lost troubleshooting issues that stem from a lack of understanding of API principles and Swagger documentation.

Proceed with caution and ensure you have the necessary skills and understanding before interacting with this system.

The iPaaS.com API enables you to:

  • Subscribers: Manage subscriptions and mapping configurations, plus perform CRUD (Create, Read, Update, and Delete) operations.

  • Integrators: Manage private and certified integrations.

  • Managed integration Service Providers (MiSPs): Automate subscriber account relationships.

Key Points:

Role-based permissions are managed via API.

  • Authenticate using username/password or API tokens.

  • Tokens must be regenerated when roles or users are updated.

Environments

Select the appropriate base URL for your environment. All API calls — authentication and data — use the selected base URL.

Environment

Base URL

Production

https://api.ipaas.com

Staging

https://stagingapi.ipaas.com

Development

https://devapi.ipaas.com

Base Paths:

Each iPaaS.com API also has its own base path that must be appended to the base URL. The full request URL follows this pattern:

{base_url}/{base_path}/v2/{endpoint}

For example, the login endpoint lives on the SSO API. On production, that resolves to:

https://api.ipaas.com/sso/v2/Auth/Login

Refer to the Swagger documentation for each API to find its base path.

Authentication

Choose between two authentication methods:

Method 1: User Credentials

Since users operate across multiple companies, authorizations are maintained at the company level, not the user level. The login response includes a JWT access_token that already contains a CompanyId claim, so the user is automatically scoped to their default company. Steps 2 and 3 are only needed if the user wants to switch to a different company.

Authentication Flow:

  1. User Login{base_url}/sso/v2/Auth/Login

    • Provide email_address and password in the request body.

    • Receive access_token, refresh_token, access_token_expiration, and user id.

  2. List Companies (optional) → {base_url}/sso/v2/User/{id}/Companies

    • Use the access token from step 1.

    • Returns the list of companies the user has access to.

  3. Switch Company{base_url}/sso/v2/User/ChangeCompany/{id}

    • Provide the target company_id in the URL and the current access_token in the Authorization header.

    • Returns a new access_token, refresh_token, and access_token_expiration scoped to the selected company. Replace all three stored values.

Example: Login Request

curl -X 'POST' \
'https://api.ipaas.com/sso/v2/Auth/Login' \
-H 'Content-Type: application/json' \
-d '{
"email_address": "user@example.com",
"password": "your_password"
}'

Example: Login Response

{
"id": 664,
"name": "User Name",
"email_address": "user@example.com",
"access_token": "eyJ...",
"access_token_expiration": "2026-05-13T17:53:12+00:00",
"refresh_token": "AQA...",
"permissions": [...]
}

Store these values after login:

  • access_token: sent in the Authorization header for all API calls.

  • access_token_expiration: checked before each call to determine if a refresh is needed.

  • refresh_token: used to obtain a new access token when the current one expires.

  • id: the user ID, needed if listing companies.

Token Refresh

Access tokens are time-limited. When the current token expires, use the refresh_token to obtain a new one without requiring the user to log in again.

POST {base_url}/sso/v2/Auth/Refresh
Content-Type: application/json

{
"refresh_token": "AQA..."
}

The response returns a new access_token and updated expiration. Store both for subsequent calls.

Pass only the refresh_token to this endpoint. Do not include the expired access_token in the request body or headers.

Token Lifecycle Rules

  1. Check expiration before each call. Compare the current time to access_token_expiration. If expired, refresh first, then make the call.

  2. The token only needs to be valid when the call starts. A long-running request that begins with a valid token will complete successfully even if the token expires mid-call.

  3. Do not refresh proactively. Avoid refreshing on a timer, before every batch, or every N records. Only refresh when the token has actually expired.

  4. 401 fallback. If a call unexpectedly returns 401 Unauthorized, refresh the token and retry the call once. If the retry also fails, surface the error.

  5. ChangeCompany replaces all token values. After switching companies, use the new access_token, refresh_token, and access_token_expiration directly. No additional refresh call is needed.

Method 2: API Key

If your company has issued an API Key, it comes preconfigured with all approved company authorizations. If you need to create an API key, see API Keys in User & Role Management for details.

Making Authorized Requests

Once you have a valid access token, include it in your request headers:

curl -X 'GET' \
'https://api.ipaas.com/subscriptions/v2/Events?pageNumber=1&pageSize=100' \
-H 'accept: text/plain' \
-H 'Authorization: {your_access_token}'

Error Handling

Error Response Format: Error messages are returned as plaintext in the response body.

HTTP Status Codes

Code

Status

Description

200

OK

Successful request

201

Created

A new resource has been successfully created

400

Bad Request

Invalid JSON, missing required fields, or validation errors encountered

401

Unauthorized

Missing, invalid, or insufficient API token permissions

404

Not Found

The requested resource does not exist at the specified API

429

Too Many Requests

The rate limit was exceeded. See Working with API Rate Limits.

5XX

Server error

There is an internal iPaaS.com server error

Rate Limits

You may encounter 429 Too Many Requests errors in two scenarios:

  1. Monthly API Limits: Based on your billing plan.

    • Plans with overage allowance: Additional charges apply beyond limits.

    • Plans without overage: API calls blocked after the limit is reached.

  2. Volume Restrictions: Temporary limits when resources are overwhelmed.

The error message will specify whether the limit is monthly or volume-based.

Pagination

Pagination metadata is returned in the X-Pagination header as JSON. For example:

{
"total_Count":165,
"page_Size":100,
"current_Page":1,
"total_Pages":2,
"previous_Page":"No",
"next_Page":"Yes"
{

Metadata Fields:

  • total_Count: Total records available

  • page_Size: Records per page

  • current_Page: Current page number

  • total_Pages: Total number of pages

  • previous_Page/next_Page: Navigation flags ("Yes"/"No")

Response Format

  • Successful requests: Return the requested, modified, or created data.

  • PUT/POST requests: Include the complete updated resource.

  • Error responses: Return error messages as plaintext.

API Versioning

  • Current Version: V2

  • Upcoming: V3 (backwards compatible with V2)

  • Compatibility: Currently, we do not expect to launch any API versions or endpoints that are not backwards compatible.

Did this answer your question?