Skip to main content

EDI API: parse, validate and exchange EDI over REST

The SignalEDI EDI API lets your software parse, validate and exchange EDI documents over plain REST and JSON. Base URL: https://api.signaledi.com/v1. Authenticate with a Bearer API key. The free tier includes 5,000 calls a month with no credit card; after that each call is $0.0015, where a call is one parse or one validate request. Partners still receive standard EDI over the connection they require, so your application stays API-first without failing the mandate.
REST and JSONBearer-key authFree tier, no card

Verify before you start

HIPAA safeguards, BAA availableAudit trailsSOC 2

What is an EDI API?

An EDI API is a web interface to EDI. Instead of building X12 files by hand and managing connections to each partner, your application sends and receives JSON over HTTPS. The API parses incoming EDI into structured data, validates documents against the standard, and hands outbound documents to the route a trading partner requires.

An API does not remove the partner's requirements. Many retailers and payers still mandate EDI documents and specific connections such as AS2 or SFTP. The API is how your systems talk to EDI; for the concept, see the EDI API guide. To compare EDI with direct partner APIs, read EDI vs API.

Quick facts

Base URL https://api.signaledi.com/v1
Format JSON over HTTPS; raw X12 goes inside a JSON field
Authentication Authorization: Bearer <API key>
Key lanes sk_lab_ (Lab), sk_cert_ (Certification), sk_live_ (Production); a key can address only its own lane
Rate limit 120 requests per minute per API key on /parse and /validate
Free tier 5,000 calls per month, no credit card
After the free tier $0.0015 per call (one call = one parse or one validate request)

Authentication

Every secured request carries your key as a Bearer token. Create a key through the developer sign-up (free tier, no card) and keep it in an environment variable such as SIGNALEDI_API_KEY. Never put a key in client-side code or a public repository.

Lab keys validate in your own account without contacting a partner. Certification keys run the same request against the real partner route. Production keys require the connection to be promoted first. Because each key addresses a single lane, a test key cannot send live documents by mistake.

Your first call: parse an X12 file

This sends an X12 850 purchase order interchange (shortened here) to /v1/parse and gets structured JSON back.

curl https://api.signaledi.com/v1/parse \
  -H "Authorization: Bearer $SIGNALEDI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content":"ISA*...complete X12 interchange...~IEA*...~"}'

The response (abridged) has this shape:

{
  "ok": true,
  "validation": { "sourceFormat": "X12", "transactionSet": "850", "valid": true, "issues": [] },
  "json": { "...": "structured parser output" },
  "envelope": { "...": "interchange details" }
}

/v1/validate takes the same {"content": "..."} body and returns diagnostics only. A missing or empty content returns HTTP 400 with fieldErrors; a body over the size cap returns 413; going over the rate limit returns 429 with a Retry-After header.

Send a document

To send a document, post typed JSON (or exact raw EDI) to /v1/documents/outbound. An Idempotency-Key header (8 to 128 characters) makes retries safe: the same key with the same body replays, the same key with a different body returns 409.

curl -X POST https://api.signaledi.com/v1/documents/outbound \
  -H "Authorization: Bearer $SIGNALEDI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "environment": "LAB",
    "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 }]
    }
  }'

In Lab, a successful call returns HTTP 202:

{
  "ok": true,
  "documentId": "doc_01HXYZ…",
  "status": "validated",
  "environment": "LAB",
  "partnerContacted": false
}

Certification and Production calls also name the trading partner (partnerId) and report admission, routing, transport and acknowledgement states on the document receipt.

Endpoint reference

The documented endpoints (see the full API reference):

Method Endpoint What it does
POST /v1/documents/outbound Send typed JSON or exact raw X12/EDIFACT through an authorized account integration
POST /v1/documents/inbound Submit raw partner-to-customer EDI
POST /v1/documents/batch Submit up to 100 outbound documents with per-item results
GET /v1/documents/{documentId} Read the multi-stage document receipt
GET /v1/documents/{documentId}/payload Pull raw, structured, typed or mapped payload views
GET /v1/document-types Discover supported document types and capabilities (public registry)
GET /v1/transactions List your recent transactions, newest first
GET /v1/transactions/{id} Get one transaction with full status
POST /v1/parse Parse a raw X12 interchange into structured JSON plus diagnostics
POST /v1/validate Validate a raw X12 interchange against envelope rules

Typical ceilings per API key: 120 requests a minute on parse, validate, outbound, inbound and document reads, and 60 a minute on batch. The document-types registry allows 300 a minute per client IP.

Webhooks and acknowledgements

When a trading partner returns a functional acknowledgement (997, 999 or TA1), SignalEDI delivers a signed webhook. In Certification and Production that is document.acknowledgement_received.v1; a terminal failure sends document.delivery_failed.v1. Verify the X-SignalEDI-Signature header (an HMAC-SHA256 over the timestamp and raw body) and use X-SignalEDI-Delivery-ID to make your handler idempotent. The signed webhooks guide has Node and Python code, and the 997/999 guide covers reading the result.

Pricing

Developer API usage is metered separately from the core EDI plans.

Plan Price Includes
Free $0 5,000 calls a month, no credit card; platform API key and playground; MCP server and TypeScript SDK; signed webhooks
Pay as you go $0.0015 per call After your first 5,000 calls each month; usage-based and billed through Stripe; no seats
Scale Custom Committed-volume rates and priority support

A billable call is one parse or one validate request. For example, 20,000 parse and validate calls in a month is 15,000 billable calls at $0.0015, or $22.50. Full terms are on developer API pricing. Business EDI subscriptions for trading partners (Seasonal, Starter, Growth, Enterprise) are on the pricing page.

SDKs, playground and MCP

Try calls without writing code in the API playground. The SDKs page lists language samples, and SignalEDI publishes an MCP server (@signaledi/mcp-server) for compatible agent tools. The public MCP release is for synthetic evaluation only. The developer hub links all of it.

From first call to a live partner

  1. Create a free key and run /v1/parse with the sample above.
  2. Send a Lab outbound document and read the receipt.
  3. Move to Certification with a sk_cert_ key and your partner binding, and watch for the partner's acknowledgement webhook.
  4. Promote to Production when the partner approves.

The quickstart and go-live checklist walk through each step. Partners control their own testing and approval calendars, so plan around them.

Evaluate without a sales call

Most buyers are not ready to buy on the first visit. Start with a free tool or requirement check — then trial when you are ready.

EDI API FAQ

What is an EDI API?

An EDI API is a web interface for exchanging EDI documents. Your application sends and receives JSON over HTTPS while the platform parses, validates and delivers standard EDI such as X12 to your trading partners.

What is the SignalEDI API base URL?

The base URL is https://api.signaledi.com/v1. Parse and validate are at /v1/parse and /v1/validate, and outbound documents go to /v1/documents/outbound.

How do I authenticate to the EDI API?

Send your API key as a Bearer token in the Authorization header. Keys are issued per lane: sk_lab_ for Lab, sk_cert_ for Certification and sk_live_ for Production, and a key can address only its own lane.

How much does the EDI API cost?

The free tier includes 5,000 calls a month with no credit card. After that each call is $0.0015, where one call is one parse or one validate request. Committed-volume pricing is available on the Scale plan.

Does an EDI API replace EDI?

No. An API makes EDI easier for your software to use, but many trading partners still require EDI documents and connections such as AS2 or SFTP. The platform keeps your side API-first while the partner receives the format it requires.

Can I test the EDI API without a trading partner?

Yes. A Lab key validates your payload and mapping in your own account without contacting a partner. Move to Certification when you are ready to test the real partner route.

What are the EDI API rate limits?

Parse and validate allow 120 requests a minute per API key, outbound and inbound documents allow 120, and batch allows 60 with up to 100 documents per call. A 429 response includes a Retry-After header.

Make your first call with synthetic data

Create a free developer key, no credit card, and run a parse or validate request in the playground or with curl.

© 2026 SignalEDI Inc. All rights reserved.