Is it possible to add CardDav account programmatically as it can be done by manually using Mail,Contacts,Calendras -> Add Account option in Set
Yes, you can create a "configuration profile": a plist in which you can specify the CardDav account profile. You can find info about the format on the Apple Documentation under Card Dav payload.
Here is an example:
PayloadVersion
1
PayloadUUID
randomUUID
PayloadType
Configuration
PayloadIdentifier
com.example.carddav
Label
A Carddav Profile
PayloadContent
CardDAVAccountDescription
A Carddav Description
CardDAVHostName
carddav.example.com
CardDAVPrincipalURL
/principals/userid/
CardDAVUsername
userId
CardDAVPassword
password
PayloadDescription
Configures CardDAV account
PayloadIdentifier
com.example.carddav
PayloadOrganization
A nice company
PayloadType
com.apple.carddav.account
PayloadUUID
randomUUID
PayloadVersion
1
Remember to save the file with ".mobileconfig". extension.
Then if you are interested on how you can open a configuration profile programmatically, you can look at this question https://stackoverflow.com/questions/2338035/installin g-a-configuration-profile-on-iphone-programmatically