API-first EDI.
Build without limits.

The ECGrid REST API connects your application to the global B2B network — provision mailboxes, route any-to-any documents, and embed enterprise EDI directly into your platform.

One REST gateway to the entire ECGrid network

ECGrid is the API-first EDI communication switch trusted by ISVs, SaaS platforms, and integration providers worldwide. The REST API exposes the same network capabilities through a clean, modern interface — JSON in, JSON out, callable from any language or platform.

What you can do

A complete control plane for B2B communications — from onboarding a new trading partner to monitoring every interchange in flight.

Self-service mailbox management

Create, configure, and manage trading partner mailboxes programmatically. No support tickets, no waiting.

Real-time document tracking

Track every interchange end-to-end. Eliminate blind spots with live status, delivery receipts, and event callbacks.

Universal connectivity

AS2, SFTP, FTPS, OFTP, X.400, ebXML, and X12.56 VAN interconnects — all behind a single API.

Any-to-any document routing

X12, EDIFACT, XML, JSON, and custom user-defined formats. Route between trading partners without format constraints.

Embed and white-label

Brand the experience as your own. Integrate provisioning, monitoring, and operations directly into your platform UI.

Workflow automation

Define automated workflows that trigger on document arrival, error conditions, or trading partner events.

The full ECGrid platform story

Architecture, capabilities, customer outcomes, and why ISVs build on ECGrid — all on the platform site.

Visit ECGrid.com →

Quick start

Hit GET /v2/users/me to retrieve the account info tied to your API key — a quick way to confirm credentials are working. Replace YOUR_API_KEY with your token.

curl https://rest.ecgrid.io/v2/users/me \
  -H "X-API-Key: YOUR_API_KEY"
using System.Net.Http;

using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-API-Key", "YOUR_API_KEY");

var response = await http.GetAsync("https://rest.ecgrid.io/v2/users/me");
response.EnsureSuccessStatusCode();

var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

HttpClient http = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://rest.ecgrid.io/v2/users/me"))
    .header("X-API-Key", "YOUR_API_KEY")
    .GET()
    .build();

HttpResponse<String> response =
    http.send(request, HttpResponse.BodyHandlers.ofString());

System.out.println(response.body());
const response = await fetch("https://rest.ecgrid.io/v2/users/me", {
  headers: { "X-API-Key": "YOUR_API_KEY" }
});

if (!response.ok) throw new Error(`HTTP ${response.status}`);

const body = await response.json();
console.log(body);
type User = {
  // Match the /users/me schema in Swagger UI
  [key: string]: unknown;
};

const response = await fetch("https://rest.ecgrid.io/v2/users/me", {
  headers: { "X-API-Key": "YOUR_API_KEY" }
});

if (!response.ok) throw new Error(`HTTP ${response.status}`);

const user: User = await response.json();
console.log(user);
import requests

response = requests.get(
    "https://rest.ecgrid.io/v2/users/me",
    headers={"X-API-Key": "YOUR_API_KEY"}
)
response.raise_for_status()
print(response.json())
<?php
$ch = curl_init("https://rest.ecgrid.io/v2/users/me");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "X-API-Key: YOUR_API_KEY"
]);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($status !== 200) {
    throw new Exception("HTTP $status");
}

$user = json_decode($response, true);
print_r($user);
package main

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    req, _ := http.NewRequest("GET", "https://rest.ecgrid.io/v2/users/me", nil)
    req.Header.Set("X-API-Key", "YOUR_API_KEY")

    resp, err := http.DefaultClient.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}

Bearer tokens are also supported — use Authorization: Bearer <token> after authenticating via POST /v2/auth/login.

Where to next

Pick your path — live API reference, advanced control, or the full platform site.