This project provides a .NET client library for the PowerDNS API.
Add the NuGet package PowerDns.Client to your project. You can then create an instance of the client like this:
var client = new PowerDnsClient(
    uri: new Uri("http://example.com/"), // without /api/v1
    apiKey: "changeme");
var zonesEndpoint = client.Servers["localhost"].Zones;Get a list of all zones:
List<Zone> zones = await zonesEndpoint.ReadAllAsync();Get a specific zone:
Zone zone = await zonesEndpoint["example.org"].ReadAsync();Create a new zone:
await zonesEndpoint.CreateAsync(new Zone("example.org", /*nameservers:*/ "ns1.example.org", "ns2.example.org")
{
    RecordSets =
    {
        new RecordSet
        {
            Name = "www.example.org",
            Type = RecordType.A,
            Ttl = 10,
            Records = 
            {
                new Record(content: "1.2.3.4"),
                new Record(content: "5.6.7.8")
            }
        }
    }
});Patch a record set in a zone:
RecordSet recordSet = await zonesEndpoint["example.org"].GetRecordSetAsync("www.example.org");
recordSet.ChangeType = ChangeType.Replace;
recordSet.Records.Add(new ResourceRecord(content: "4.3.2.1"));
await zonesEndpoint["example.org"].PatchRecordSetAsync(recordSet);Delete a zone:
await zonesEndpoint["example.org"].DeleteAsync();