You can use the DescribeMObject API call to get back the list of API Fields. Specify LeadRecord as the objectName.
Here is a sample REQUEST/RESPONSE XML
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mkt="http://www.marketo.com/mktows/">
<soapenv:Header>
<mkt:AuthenticationHeader>
<mktowsUserId>XXXXXXXXXXXXXXXXXX</mktowsUserId>
<requestSignature>XXXXXXXXXXXXXXXXXX</requestSignature>
<requestTimestamp>2013-02-12T09:16:05-07:00</requestTimestamp>
</mkt:AuthenticationHeader>
</soapenv:Header>
<soapenv:Body>
<mkt:paramsDescribeMObject>
<objectName>LeadRecord</objectName>
</mkt:paramsDescribeMObject>
</soapenv:Body>
</soapenv:Envelope>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns1="http://www.marketo.com/mktows/">
<SOAP-ENV:Body>
<ns1:successDescribeMObject>
<result>
<metadata>
<name>LeadRecord</name>
<description>Composite object composed of fields from Lead, LeadInterest, and Company</description>
<isCustom>false</isCustom>
<isVirtual>true</isVirtual>
<fieldList>
<field>
<name>Email</name>
<description xsi:nil="true"/>
<displayName>Email Address</displayName>
<sourceObject>Lead</sourceObject>
<dataType>email</dataType>
<size>255</size>
<isReadonly>false</isReadonly>
<isUpdateBlocked>false</isUpdateBlocked>
<isName xsi:nil="true"/>
<isPrimaryKey>false</isPrimaryKey>
<isCustom>false</isCustom>
<isDynamic>false</isDynamic>
<dynamicFieldRef xsi:nil="true"/>
<updatedAt>2012-10-16T18:46:37-05:00</updatedAt>
</field>
<field>
...
</field>
<field>
...
</field>
</fieldList>
<updatedAt>2013-02-08T12:33:34-06:00</updatedAt>
</metadata>
</result>
</ns1:successDescribeMObject>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>