POST
/
api
/
applications
/
{application_id}
/
submit
Submit Application
curl --request POST \
  --url https://monitoring.safeturf.ai/api/applications/{application_id}/submit \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '{
  "force": true
}'
Validates all checks are complete, then queues the import flow to write the business to Snowflake. The backend reads all data from the database — nothing from this request is sent to the flow. If a callback_url was set when the application was created, the backend fires a POST to that URL after a successful submit (see callback body below).
application_id
string
required
Application UUID.
force
boolean
default:"false"
Skip the pending-verification check. Use if Middesk is taking too long.
curl -X POST "https://monitoring.safeturf.ai/api/applications/550e8400.../submit" \
  -H "Authorization: Bearer <token>" \
  -d '{"force": false}'
{
  "application_id": "550e8400-e29b-41d4-a716-446655440000",
  "business_uuid": "biz-snowflake-uuid",
  "flow_run_id": "3fa85f64-..."
}
Returns 409 if a check is still pending and force is false.

Callback Webhook

If callback_url was provided at application creation, the backend sends a POST request to it after submit succeeds:
{
  "event": "application.submitted",
  "application_id": "550e8400-e29b-41d4-a716-446655440000",
  "business_uuid": "550e8400-e29b-41d4-a716-446655440000",
  "source": "PALMETTO",
  "flow_run_id": "3fa85f64-...",
  "form_data": {
    "business_name": "Acme LLC",
    "ein": "123456789",
    "principals": [...],
    "bank_accounts": [...],
    "locations": [...],
    "licenses": [...]
  }
}
The callback is best-effort — a failure does not block the submit response. Your endpoint should return a 2xx status code.