XML-RPC

XML-RPC is a lightweight protocol that lets a program on one machine call a procedure on another by sending an HTTP POST whose body is a small XML document. The request names a method and lists its parameters; the server runs the method and returns an XML response containing either a result value or a fault. The design goal was deliberate simplicity: a single, easy-to-implement wire format that any language with an XML parser and an HTTP client could support.

The protocol was created by Dave Winer of UserLand Software and first implemented in UserLand Frontier in 1998. The canonical specification at xmlrpc.com is credited to Dave Winer and dated 15 June 1999, with later update notes through 2003, one of which removed the word “ASCII” from the definition of the string type. The spec defines a compact set of value types, including int, boolean, double, string, dateTime.iso8601, base64, plus arrays and structs, keeping the type system small enough to map cleanly onto most programming languages.

XML-RPC arose from a collaboration between Winer and Microsoft. The work that produced XML-RPC fed directly into the early drafts of SOAP, and Winer was a co-author of the original SOAP specification. Where XML-RPC stayed minimal, SOAP grew into a far more elaborate and extensible framework with envelopes, headers, and the WS-* stack. The two protocols thus represent a fork in the road: XML-RPC kept the simple RPC-over-HTTP idea, while SOAP pursued enterprise extensibility.

Because it was so easy to implement, XML-RPC spread quickly across languages and platforms in the late 1990s and early 2000s. It became the foundation of several widely used interfaces, most famously the blogging and content-management APIs such as the Blogger and MetaWeblog APIs, and the pingback mechanism between weblogs. Many of these XML-RPC endpoints remained in service in publishing software like WordPress long after newer styles of API became fashionable.

XML-RPC’s lasting significance is as a conceptual bridge. It demonstrated that ordinary HTTP plus a tiny serialization format was enough to build cross-platform remote calls, an idea that SOAP elaborated, that REST reframed around resources, and that JSON-RPC later restated with JSON in place of XML. Its philosophy of doing the simplest thing that could work foreshadowed the broader shift toward lightweight web APIs.

Sources

Last verified June 8, 2026