REST, not a black box
POST JSON to /api/v1/documents/outbound with a partnerId and documentTypeCode. You get back a documentId and status — no X12 in your codebase.
Trade with retailers, payers, and logistics partners over plain HTTPS. Send JSON, get back validation, acknowledgements, and delivery status as webhooks — no VAN, no X12 in your codebase, no six-week integration.
curl -X POST https://signaledi.com/api/v1/documents/outbound \
-H "Authorization: Bearer $SIGNALEDI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"partnerId": "your-partner-id",
"documentTypeCode": "850",
"payload": {
"purchaseOrderNumber": "PO-1042",
"shipTo": {
"id": "DC-01",
"name": "RetailMart DC 01"
},
"lines": [
{
"lineNumber": 1,
"sku": "SKU-100",
"quantity": 24,
"unitPrice": 12.5
}
]
}
}'SignalEDI is plain REST and webhooks, so it runs anywhere your code does — serverless functions, edge routes, or a long-running service. If you can make an HTTPS request, you can do EDI.
The API has a genuine free tier: 5,000 calls / month free every month with sandbox and production keys, then $0.0015 / call pay-as-you-go. No seats, no per-document fees, no credit card to start. (SMB subscription plans are separate — flat monthly tiers with a 30-day free trial.)
The same outbound contract in cURL, Node, Python, and Go. Send business fields; we handle the segments, qualifiers, and partner-specific envelope.
curl -X POST https://signaledi.com/api/v1/documents/outbound \
-H "Authorization: Bearer $SIGNALEDI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"partnerId": "your-partner-id",
"documentTypeCode": "850",
"payload": {
"purchaseOrderNumber": "PO-1042",
"shipTo": {
"id": "DC-01",
"name": "RetailMart DC 01"
},
"lines": [
{
"lineNumber": 1,
"sku": "SKU-100",
"quantity": 24,
"unitPrice": 12.5
}
]
}
}'{
"ok": true,
"data": {
"documentId": "doc_01HXYZ…",
"status": "queued"
}
}{
"ok": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "partnerId is required",
"fields": [{ "path": "partnerId", "message": "required" }]
}
}POST JSON to /api/v1/documents/outbound with a partnerId and documentTypeCode. You get back a documentId and status — no X12 in your codebase.
Every delivery is HMAC-SHA256 signed over timestamp.body and replay-protected. Verify in a few lines of Node or Python.
Build against sandbox keys, then promote to production once a partner is certified. Same contract, scoped credentials.
Field-level errors are mapped to each partner's rules and returned as JSON — catch a bad segment before it ever reaches the partner.
Inbound X12 lands as clean, consistent JSON the moment it arrives — your app reads business fields, not loops and qualifiers.
997, 999, and 277 acknowledgements surface as JSON and webhook events, so engineering and operations share one lifecycle.
Building EDI parsing in-house typically takes 3–6 months before your first production partner file — transaction-set parsing, partner envelopes, validation rules, acknowledgements, retry states, webhook signing, and audit history. SignalEDI exposes those primitives as REST, SDK, webhook, and MCP surfaces so your application can stay focused on business fields.
Validation results, acknowledgements, and delivery status arrive as events. Each one is HMAC-SHA256 signed over timestamp.body — verify it in a handful of lines before you trust the payload.
import crypto from "node:crypto";
function verifySignalEdiWebhook(input: {
rawBody: string;
signatureHeader: string;
timestampHeader: string;
secret: string;
}): boolean {
const provided = input.signatureHeader.replace(/^sha256=/i, "").toLowerCase();
const expected = crypto
.createHmac("sha256", input.secret)
.update(`${input.timestampHeader}.${input.rawBody}`, "utf8")
.digest("hex");
// Use a timing-safe compare so signature checks do not leak partial matches.
return crypto.timingSafeEqual(Buffer.from(provided, "hex"), Buffer.from(expected, "hex"));
}Give any MCP client the SignalEDI engine as tools — parse, validate, send, and inspect EDI right inside a conversation or agent loop. No EDI logic in your prompt, just a key.
Published as @signaledi/mcp-server — runs over npx, authed by your platform key. Same metered usage as the API.
{
"mcpServers": {
"signaledi": {
"command": "npx",
"args": ["-y", "@signaledi/mcp-server"],
"env": { "SIGNALEDI_API_KEY": "sk_live_…" }
}
}
}Typed client that mirrors the REST API. Install with npm i @signaledi/sdk and call the same endpoints with full types.
SDK examples →
Drop @signaledi/mcp-server into Claude, Cursor, or Windsurf and parse, validate, and send EDI as tools — same key, same metered usage. New to MCP? It's a protocol that lets AI assistants call your API as structured tools.
Set up MCP →
Authentication, endpoints, rate limits, and webhook payload schemas — documented to match the live API.
Read the docs →
5,000 calls / month free, then $0.0015 / call. Pay through us, or install through a marketplace that bills you and remits to us.
See pricing →
Create a sandbox key, POST your first 850, and receive a 997 webhook — copy-paste samples in four languages.
Start the quickstart →
Send an 850, parse an 856 ASN, verify signed webhooks, map JSON to X12, and run the go-live checklist.
Browse guides →
Usage-based — no seats, no per-document fees. Pay through us on Stripe, or install through a marketplace you already use and let it bill you and remit to us. Same API, SDK, and MCP server either way.
Sign up, issue a scoped key in the developer console, and add a card. We meter your usage and bill you through Stripe — you hold the relationship with SignalEDI.
Already build on Vercel, GitHub, or AWS? Add SignalEDI the same way you added your last integration. The marketplace bills you on the invoice you already pay and remits to us — one less vendor relationship to set up.
Spin up sandbox credentials in the dashboard — no sales call, no onboarding gate.
Send JSON to /api/v1/documents/outbound. We translate to X12 and validate against partner rules.
Receive validation results, acknowledgements, and delivery status as signed webhooks.
5,000 calls / month free, then $0.0015 / call. Minutes to your first API call — add billing only when you pass the free tier.
© 2026 SignalEDI Inc. All rights reserved.