# Other platforms & raw HTTP > https://docs.errora.org/en/platforms/other Any platform with an official Sentry SDK works with Errora. Install it as documented by Sentry and set the DSN to your Errora project — that is the only change. ## Common one-liners ```java // Java / Kotlin (sentry-java) Sentry.init(options -> { options.setDsn("https://@/"); options.setEnvironment("production"); options.setTracesSampleRate(0.2); }); ``` ```csharp // .NET SentrySdk.Init(o => { o.Dsn = "https://@/"; o.Environment = "production"; o.TracesSampleRate = 0.2; }); ``` ```ruby # Ruby Sentry.init do |config| config.dsn = ENV["SENTRY_DSN"] config.traces_sample_rate = 0.2 end ``` ```rust // Rust let _guard = sentry::init((std::env::var("SENTRY_DSN")?, sentry::ClientOptions { release: sentry::release_name!(), traces_sample_rate: 0.2, ..Default::default() })); ``` Mobile SDKs (`sentry-android`, `sentry-cocoa`, Flutter, React Native) work the same way — set the DSN and, for release builds, upload your symbols/source maps per release. ## No SDK at all Every product is reachable over plain HTTP. See [Ingestion API](/en/api/ingest) for the full reference; the short version: ```bash ERRORA=https://errora.example.com PROJECT_ID= KEY= # 1. An error event curl -X POST "$ERRORA/api/$PROJECT_ID/store/" \ -H "Content-Type: application/json" \ -H "X-Sentry-Auth: Sentry sentry_version=7, sentry_key=$KEY" \ -d '{"event_id":"9a1f…","timestamp":"2026-01-01T00:00:00Z","platform":"other", "level":"error", "exception":{"values":[{"type":"BackupFailed","value":"disk full"}]}}' # 2. Anything else (logs, transactions, metrics, feedback…) as an envelope curl -X POST "$ERRORA/api/$PROJECT_ID/envelope/" \ -H "Content-Type: application/x-sentry-envelope" \ -H "X-Sentry-Auth: Sentry sentry_version=7, sentry_key=$KEY" \ --data-binary @envelope.txt # 3. A cron check-in from a crontab line curl -X POST "$ERRORA/api/$PROJECT_ID/cron/nightly-backup/$KEY/?status=ok" # 4. A statsd metric line printf 'jobs.processed@none:1|c|#queue:ingest\n' | \ curl -X POST "$ERRORA/api/$PROJECT_ID/envelope/" --data-binary @- ``` An envelope is newline-delimited JSON: a header line, then one `{"type": "..."}` item header plus its payload per item. ```text {"event_id":"9a1f…","dsn":"https://@/"} {"type":"log","item_count":1,"content_type":"application/vnd.sentry.items.log+json"} {"items":[{"timestamp":1767225600.0,"level":"info","body":"backup finished","attributes":{"host":{"value":"db-1","type":"string"}}}]} ``` ## Choosing a platform value for the project The project's `platform` field (`python`, `php`, `php-laravel`, `node`, `javascript`, `go`, `other`) only drives the icon and the suggested snippet in the UI. Ingestion, grouping and every product behave identically regardless — pick `other` when nothing fits.