diff --git a/producer/api/c/include/asapo/producer_c.h b/producer/api/c/include/asapo/producer_c.h
index d96f278aa3de7e3796d1f530e38ab2aff0aab5af..5e992bce3276a01233f54d3f3ec40e1e46857e32 100644
--- a/producer/api/c/include/asapo/producer_c.h
+++ b/producer/api/c/include/asapo/producer_c.h
@@ -53,6 +53,17 @@ enum AsapoRequestHandlerType {
     kFilesystem
 };
 
+//! c version of asapo::IngestModeFlags
+enum AsapoIngestModeFlags {
+  kTransferData = 1 << 0,
+  kTransferMetaDataOnly = 1 << 1,
+  kStoreInFilesystem = 1 << 2,
+  kStoreInDatabase = 1 << 3,
+};
+
+const uint64_t kDefaultIngestMode = kTransferData | kStoreInFilesystem | kStoreInDatabase;
+
+
 //! c version of asapo::MetaIngestOp
 enum AsapoMetaIngestOp {
     kInsert = 1,
diff --git a/tests/automatic/producer/c_api/producer_api.c b/tests/automatic/producer/c_api/producer_api.c
index 8c60a637ccc635dab948a4d07a25adf1f06001b3..6e85eab748dd078756edfd4f9ec3aa5b2292de7a 100644
--- a/tests/automatic/producer/c_api/producer_api.c
+++ b/tests/automatic/producer/c_api/producer_api.c
@@ -65,6 +65,33 @@ std::unique_ptr<asapo::Producer> CreateProducer(const Args& args) {
 
  */
 
+void callback(AsapoRequestCallbackPayloadHandle payload, AsapoErrorHandle error) {
+    EXIT_IF_ERROR("error after callback", error);
+    AsapoMessageDataHandle data_handle = asapo_request_callback_payload_get_data(payload);
+    AsapoStringHandle response = asapo_request_callback_payload_get_response(payload);
+    const struct AsapoGenericRequestHeader* header = asapo_request_callback_payload_get_original_header(payload);
+
+    printf("%d\n",(int)header->data_id);
+
+    asapo_free_handle(&data_handle);
+    asapo_free_handle(&response);
+}
+
+void test_send(AsapoProducerHandle producer) {
+    AsapoErrorHandle err = asapo_new_handle();
+    AsapoMessageHeaderHandle message_header = NULL;
+
+    char data[] = "hello";
+    int res = asapo_producer_send(producer,
+                            message_header,
+                            data,
+                            kDefaultIngestMode,
+                            "default",
+                            callback,
+                            &err);
+
+}
+
 int main(int argc, char* argv[]) {
     if (argc <4) {
         abort();
@@ -80,12 +107,12 @@ int main(int argc, char* argv[]) {
                                                                         "", source, "");
 
     AsapoProducerHandle producer = asapo_create_producer(endpoint,2,kTcp, cred,60000,&err);
+    EXIT_IF_ERROR("create producer", err);
 
     asapo_producer_enable_local_log(producer, 1);
     asapo_producer_set_log_level(producer, Debug);
 
-
-    EXIT_IF_ERROR("create producer", err);
+    test_send(producer);
 
     asapo_free_handle(&err);
     asapo_free_handle(&cred);