API Reference

Complete endpoint documentation for the SOAPless REST proxy.

Base URL

https://soapless.miravy.com

All endpoints require HTTPS. HTTP requests are redirected to HTTPS automatically.

Proxy Endpoint

POST/api/v1/{accountId}/{serviceSlug}/{operationName}
GET/api/v1/{accountId}/{serviceSlug}/{operationName}?a=2&b=3

GET is optional. It is exposed for read-style operations with simple query-safe inputs, or when you explicitly enable GET for that operation in the dashboard on a paid plan.

Per-operation method policies in the dashboard are Inherit, POST, GET, and GET + POST.

When both are available, you can choose the one that fits your client. Use POST for body-based requests, and use GET when query parameters or caching behavior are a better fit.

Find your accountId in dashboard Settings. It is a stable public account identifier such as ab12cd34ef.

Proxies a REST JSON request to the corresponding SOAP operation on the upstream service.

Path Parameters

ParameterTypeDescription
accountIdstringYour stable public Account ID from Settings.
serviceSlugstringThe slug assigned to your registered SOAP service.
operationNamestringThe SOAP operation name as defined in the WSDL.

Request Headers

HeaderRequiredDescription
X-API-KeyYesYour SOAPless API key (sl_live_...).
Content-TypeYesMust be application/json.

Request Body

A JSON object whose fields correspond to the SOAP operation's input parameters. SOAPless maps these to the appropriate SOAP XML elements automatically.

Request bodyjson
{
  "userId": 42
}

Success Response (200)

200 OKjson
{
  "result": {
    "id": 42,
    "name": "Alice Johnson",
    "email": "alice@acme.com",
    "department": "Engineering"
  },
  "meta": {
    "service": "my-erp",
    "operation": "GetUser",
    "latencyMs": 245,
    "cached": false
  }
}

Response Codes

CodeStatusDescription
200OKRequest proxied successfully. The SOAP response has been converted to JSON.
400Bad RequestInvalid JSON body, missing required fields, or request validation failed.
401UnauthorizedMissing or invalid API key. Check your X-API-Key header.
404Not FoundService slug or operation name not found. Verify the URL path.
429Too Many RequestsRate limit exceeded. Check the X-RateLimit-* headers for limit details.
502Bad GatewayThe upstream SOAP service returned an error or is unreachable. Check the error message for details.

Error Types

The error.type field in error responses uses one of the following values:

TypeCodeDescription
VALIDATION_ERROR400Request body failed validation against the WSDL schema.
AUTHENTICATION_ERROR401API key is missing, invalid, or revoked.
SERVICE_NOT_FOUND404No service matches the provided slug.
OPERATION_NOT_FOUND404The operation does not exist for the given service.
RATE_LIMIT_EXCEEDED429Monthly quota or per-minute rate limit exceeded.
UPSTREAM_ERROR502The upstream SOAP service returned a SOAP fault or is unreachable.
INTERNAL_ERROR500An unexpected error occurred. Contact support if this persists.

OpenAPI Spec Endpoint

GET/api/services/{serviceId}/openapi

Returns an auto-generated OpenAPI 3.0 specification for a registered SOAP service. This is a paid-plan feature (Starter and Pro).

Authentication

This endpoint supports two authentication methods:

  • Session cookie (primary) — Authenticated via the dashboard session. Used when accessing from a browser.
  • API key (fallback) — Pass your key in the X-API-Key header. Ideal for curl, CI pipelines, and programmatic access.

Path Parameters

ParameterTypeDescription
serviceIdUUIDThe unique ID of your registered SOAP service.

Example

Fetch OpenAPI spec via API keybash
curl -H "X-API-Key: sl_live_abc123" \
  https://soapless.miravy.com/api/services/550e8400-e29b-41d4-a716-446655440000/openapi

Response Codes

CodeDescription
200Returns the OpenAPI 3.0 JSON specification.
401Not authenticated. Provide a session cookie or valid API key.
403Free plan. Upgrade to Starter or Pro to access OpenAPI specs.
404Service not found or does not belong to your account.

Rate Limit Headers

Every proxy response includes rate limit headers to help you manage usage programmatically.

HeaderTypeDescription
X-RateLimit-LimitintegerCall limit for the current plan.
X-RateLimit-RemainingintegerNumber of calls remaining in the current billing period.
X-RateLimit-Resetstring (ISO 8601)Timestamp when the current limit window resets. Free plans reset monthly, while paid plans follow the active billing period.
Example headershttp
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9542
X-RateLimit-Reset: 2026-04-01T00:00:00Z

Versioning

The SOAPless API is versioned via the URL path. The current version is v1.

https://soapless.miravy.com/api/v1/{accountId}/{serviceSlug}/{operationName}
  • Breaking changes will be released under a new version (e.g., v2).
  • Non-breaking additions (new fields, new optional parameters) may be added to the current version without a version bump.
  • Deprecated versions will be supported for at least 6 months after a new version is released.

Example: SOAP to REST Transformation

Here is a complete example showing how SOAPless transforms a SOAP operation into a REST API call.

Original SOAP Request

SOAP XML requestxml
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:usr="http://example.com/users">
  <soap:Header>
    <usr:AuthToken>ws-sec-token-xyz</usr:AuthToken>
  </soap:Header>
  <soap:Body>
    <usr:GetUser>
      <usr:userId>42</usr:userId>
    </usr:GetUser>
  </soap:Body>
</soap:Envelope>

Original SOAP Response

SOAP XML responsexml
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:usr="http://example.com/users">
  <soap:Body>
    <usr:GetUserResponse>
      <usr:user>
        <usr:id>42</usr:id>
        <usr:name>Alice Johnson</usr:name>
        <usr:email>alice@acme.com</usr:email>
        <usr:department>Engineering</usr:department>
      </usr:user>
    </usr:GetUserResponse>
  </soap:Body>
</soap:Envelope>

SOAPless REST Request

REST JSON requestbash
curl -X POST https://soapless.miravy.com/api/v1/ab12cd34ef/user-service/GetUser \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sl_live_abc123" \
  -d '{"userId": 42}'

SOAPless REST Response

REST JSON responsejson
{
  "result": {
    "id": 42,
    "name": "Alice Johnson",
    "email": "alice@acme.com",
    "department": "Engineering"
  },
  "meta": {
    "service": "user-service",
    "operation": "GetUser",
    "latencyMs": 312,
    "cached": false
  }
}