APM and the ingestion service (OTLP)
Application performance monitoring (APM) lets your backend services send traces, metrics, logs, profiles and release markers to Noxtica over OpenTelemetry (OTLP). A workspace administrator creates a scoped Ingestion API key in Backoffice; your services use it as a bearer token.
This page covers the key, the endpoint, a test request and the Backoffice explorers. Browser real-user monitoring is on Real user monitoring and Web Vitals.
Key points
- Use an Ingestion API keyOTLP routes accept a key with the sk_apm_ prefix only; a server API key (sk_prod_) is refused with apm_auth_invalid.
- One key, one project and environmentEach Ingestion API key is bound to one project and one environment and accepts just the signals you tick when you mint it.
- Copy the key onceBackoffice shows the key a single time after you press Mint key and confirm step-up MFA. Revoking a key cuts access at once.
- Read access depends on your accountThe read and export routes under /v1/apm/ need scopes that the Backoffice API-key page does not offer. Use the Backoffice APM explorers to read data.
What it is
Availability: In development.
APM capture is not open to every workspace. Where it is enabled for your organisation, the pieces below work as described. Where it is not, Noxtica refuses OTLP requests with 403 apm_purpose_disabled and the Backoffice explorers stay empty. Ask your account team whether your organisation is enabled.
Hosts and lanes
The ingestion service answers on ingest.noxtica.com. The collector host collect.noxtica.com serves the same OTLP routes. The Backoffice setup block pre-fills ingest.noxtica.com, and says to treat the collector as a failover only for connection errors that happen before a request is sent. Never switch hosts after a timeout, a lost response or an HTTP error.
| Lane | Route | Used by | You call it |
|---|---|---|---|
| OTLP traces | POST /v1/traces | OpenTelemetry SDKs and collectors | Yes |
| OTLP metrics | POST /v1/metrics | OpenTelemetry SDKs and collectors | Yes |
| OTLP logs | POST /v1/logs | OpenTelemetry SDKs and collectors | Yes |
| Profiles | POST /v1/profiles | Profiling agents and SDKs | Yes |
| Release markers | POST /v1/deployments | Your CI or deploy job | Yes |
| Browser telemetry | /client/* | The browser SDK | No, see the browser runtime |
Other products (Hunter, Spot, Pulse) use their own lanes on the same service. They are not covered here.
Which key does what
| Credential | Prefix | Use |
|---|---|---|
| Ingestion API key | sk_apm_ | Sends OTLP, profiles and release markers. Server to server only. |
| Server API key | sk_prod_ | Calls the Noxtica server API. Never accepted on OTLP routes. |
An Ingestion API key is bound to one project and one environment, and accepts only the signals you enable on it. Each key also carries a legal basis you registered for telemetry ingest.
What is not self-serve
The read and export routes under /v1/apm/ need the scopes read:apm and write:apm. Backoffice does not offer those scopes when you create a server API key, so you cannot create such a key yourself today. Whether read or export access is available to you depends on your account; ask your account team. Use the Backoffice explorers to read data.
An OTLP response means the request was accepted into a durable queue. It does not mean the data is already visible in Backoffice.
Prerequisites
- Administrator role in Backoffice. Creating and revoking keys needs a fresh step-up MFA confirmation.
- APM enabled for your organisation (see the availability line above).
- A registered legal basis for telemetry ingest. A workspace administrator registers it once; Backoffice prompts for it on the key page.
- An OpenTelemetry exporter that can send OTLP over HTTP with a custom
Authorizationheader. - Network egress from your servers to
ingest.noxtica.comover HTTPS.
Steps
1. Register the legal basis for telemetry ingest
Backoffice → Integrations & API → Ingestion API Keys.
If the page shows “Register the legal basis for telemetry ingest”, read the disclosure, tick “I have read this disclosure and assert this lawful basis for my organisation.” and press Register legal basis. Only a workspace administrator can do this. You can also review it under Backoffice → Privacy & Legal → Legal Basis Register. Without a registered legal basis, key creation is refused.
2. Create a project and an environment (optional)
On the same page, open Projects & environments.
- A project groups the services of one application. An environment separates where they run. Environment types are
production,staging,developmentandtest. - If your workspace has no project yet, your initial key creates a project named Platform with an environment named Production.
- Backoffice shows the project and environment IDs next to their names. You need the environment ID for release markers (the default is
env_production). - Archiving a project or environment stops new keys from using it. Existing keys keep working.
3. Mint an Ingestion API key
Press Mint APM ingest key and fill in the form:
- Choose the Project and Environment.
- Optionally enter a Key name (optional) of at most 80 characters, for example
web-01 agent. The name is never sent with telemetry. - Pick a Preset, then adjust the signals.
- Press Mint key and confirm step-up MFA.
| Preset | Signals it selects |
|---|---|
| Application (OpenTelemetry SDK) | Traces, Metrics, Logs |
| Host agent | Host agent, Metrics, Logs, Traces, Profiles |
| Browser or mobile RUM | RUM events |
All signals you can tick: Traces, Metrics, Logs, Profiles, Deployments, RUM events and Host agent. Add Deployments if the key will send release markers.
Copy the key from the “Copy your key now” panel. Backoffice shows it just once and cannot show it again. Press “I’ve saved it” when it is stored in your secret manager.
4. Point your exporter at the ingestion service
Set these environment variables on the service that exports OTLP over HTTP. They match the “OpenTelemetry HTTP setup” block in Backoffice:
OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.noxtica.com
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer ${NOXTICA_APM_KEY}"
Spans need a service.name resource attribute. Noxtica rejects spans that have none, and spans with all-zero trace or span IDs.
The host agent has its own settings (api_key, ingest_endpoint). Mint the key with the Host agent preset and use the “Where to use this key” panel that Backoffice shows after minting. The agent itself is distributed privately; ask your account team for access.
5. Send a test trace
This request uses the JSON form of OTLP. Run it from a Linux shell with the key in NOXTICA_APM_KEY:
NOW=$(date +%s%N)
START=$((NOW - 51000000))
END=$((NOW - 1000000))
curl -sS -i -X POST https://ingest.noxtica.com/v1/traces \
-H "Authorization: Bearer $NOXTICA_APM_KEY" \
-H "Content-Type: application/json" \
--data @- <<JSON
{
"resourceSpans": [{
"resource": { "attributes": [{ "key": "service.name", "value": { "stringValue": "checkout-api" } }] },
"scopeSpans": [{
"scope": { "name": "docs-smoke-test", "version": "1.0.0" },
"spans": [{
"traceId": "W47/95gDgQPSabYzgT/GDA==",
"spanId": "7uGbfsPBsXQ=",
"name": "GET /health",
"kind": "SPAN_KIND_SERVER",
"startTimeUnixNano": "$START",
"endTimeUnixNano": "$END",
"status": { "code": "STATUS_CODE_OK" }
}]
}]
}]
}
JSON
Trace and span IDs are base64 strings in the JSON form. Send Content-Type: application/x-protobuf for protobuf bodies. Any other content type is refused with 415. Content-Encoding: gzip and deflate are accepted.
6. Send a release marker
A release marker records that a version of a service went live in an environment. The key must have the Deployments signal. The environment value must equal the environment ID of the key:
curl -sS -i -X POST https://ingest.noxtica.com/v1/deployments \
-H "Authorization: Bearer $NOXTICA_APM_KEY" \
-H "Content-Type: application/json" \
-d '{"service":"checkout-api","version":"2026.10.27-1","environment":"env_production","commit":"3f2a9c1d","timestamp":"2026-10-27T09:00:00Z"}'
commit (7 to 64 lowercase hex characters) and timestamp (not in the future) are optional. Unknown fields are refused. The body is limited to 16 KiB.
7. Read the data in Backoffice
Backoffice → RUM & APM. The APM tabs are:
| Tab | What it shows |
|---|---|
| APM Traces | Distributed traces and span timelines |
| APM Services | Per-service latency, throughput and error summaries, and service dependencies |
| APM Releases | Health of one release at a time, plus the “Deploy markers” list for that release |
| APM Metrics | Gauge, sum and histogram series |
| APM Logs | Log records with severity and trace correlation |
| APM Profiles | CPU, wall, allocation and hang profiles with flame graphs |
APM Errors (backend exception groups) is also routed at /rum-apm/errors. In APM Releases you enter an exact release identifier; the page never lists every release for your workspace. Reading needs the Backoffice analytics permission (view.analytics, viewer role and up). Use the project and environment selectors above each tab.
8. Revoke or replace a key
On the Ingestion API Keys page, press Revoke key on a row. Any collector using that key loses access to OTLP ingest immediately. Mint a new key before you revoke if you need zero gap, and swap it in your secret manager.
9. Watch usage
Ingestion requests are metered. Backoffice → Billing & Plan → Usage & Quotas shows usage against your plan; see Usage, quotas and metering. Limits are configuration and can change; Backoffice shows the values in force.
Register the legal basis
A workspace administrator registers the legal basis for telemetry ingest on Integrations & API → Ingestion API Keys.
Create a project and environment
Optional. Your initial key creates a project named Platform with an environment named Production.
Mint an Ingestion API key
Pick a preset or tick signals, press Mint key, confirm step-up MFA and copy the key.
Point the exporter
Set the OTLP endpoint to https://ingest.noxtica.com, protocol http/protobuf and the Authorization bearer header.
Send a test trace and a release marker
POST /v1/traces returns 200; POST /v1/deployments returns 202 when the environment value matches the key.
Open the explorers
Backoffice → RUM & APM: APM Traces, Services, Releases, Metrics, Logs and Profiles.
Verify it works
- The test trace returns
200 OK. An empty JSON object{}means every span was accepted. ApartialSuccessobject reports how many spans were rejected, for example because of a missingservice.name. - The release marker returns
202withok: true, adeployment_idand the storedservice,versionandenvironment. - The key row on the Ingestion API Keys page shows state Active and the signals you chose.
- After a short delay the trace appears in APM Traces for the project and environment of the key, and the service appears in APM Services.
- In APM Releases, enter the release identifier you sent (for example
2026.10.27-1). The “Deploy markers” panel lists the marker, with the commit if you sent one.
An empty explorer with a 200 response is expected for a short time, and for workspaces where capture is not enabled yet.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
401 apm_auth_missing | No Authorization header | Send Authorization: Bearer <key>. The response carries WWW-Authenticate: Bearer realm="noxtica-otlp". |
401 apm_auth_invalid | Wrong key, a revoked key, or a server API key (sk_prod_) instead of an sk_apm_ key | Mint an Ingestion API key and use it. |
401 apm_auth_expired | The key is outside its validity window | Mint a new key. |
403 apm_scope_denied | The key does not carry the signal you sent (for example logs) | Mint a key with that signal ticked; the signals of an existing key cannot be changed. |
403 apm_purpose_disabled | APM ingest is not enabled for your organisation | Ask your account team. |
403 apm_environment_mismatch on /v1/deployments | environment differs from the environment ID of the key | Send the environment ID shown in Projects & environments. |
415 apm_unsupported_media_type | Content type is not application/json or application/x-protobuf (release markers accept JSON only) | Fix the exporter protocol. |
413 apm_body_too_large or apm_batch_too_large | A request is over the wire limit of 1 MiB, the decompressed limit of 4 MiB, or 500 spans, points or log records | Lower the exporter batch size. Release markers: 16 KiB. Profiles: 2 MiB wire, 8 MiB decompressed, 20 profiles. |
429 apm_rate_limited | More than 600 requests in 60 seconds for one tenant and project (release markers: 120 in 60 seconds) | Back off and retry after the Retry-After interval. |
503 apm_queue_unavailable or apm_authority_unavailable | Temporary platform condition | Retry with backoff. |
400 apm_malformed_otlp_json or apm_malformed_otlp_protobuf | The body does not decode as an OTLP export request | Check the encoding and the Content-Type header. |
| Backoffice refuses to mint: “No legal basis for telemetry ingest is registered” | No legal basis on record | A workspace administrator registers it on the key page (step 1). |
| Backoffice refuses to mint: “Select a project and an environment.” | The workspace has several projects | Choose the project and environment in the form. |
| Backoffice: “This project has no active environment.” | Environments are archived | Add or restore one under Projects & environments. |
| Explorer is empty, requests succeed | Data is still loading, or capture is not enabled for your organisation | Wait a few minutes; then ask your account team. |
Who it fits
These are questions APM is planned to help answer. Fit depends on what the finished scope turns out to be.
- Slow page, unclear cause. Teams could follow a slow page load to the backend request behind it.
- Behavior after a deployment. Release markers could help teams compare behavior before and after a deployment.
- Session and server data together. Teams that already use Noxtica for browser monitoring could review backend telemetry beside it.
How teams connect
Nothing here is a supported setup today. The availability note under What it is says where the steps work.
- Your services. Services that already emit OpenTelemetry data would point them at a Noxtica intake with a console-issued key. See step 3 and step 4.
- Your browser sessions. Browser sessions collected by the Noxtica browser script could be linked to backend traces through standard W3C trace context headers. Trace context would link data but would not decide which tenant it belongs to. See Custom events, session tags and request tracing.
- The Noxtica console. Results would be read in views for traces, metrics, logs and releases. See step 7.
Limits
Read Who it fits and How teams connect as a description of intent. They describe the intended design, not a released workflow.
- APM is in development. Nothing on this page is a commitment on scope or date.
- The planned focus would be linking telemetry to browser sessions, not infrastructure monitoring, general log management or continuous profiling.
- No performance or capacity claims are made on this page. Any such claim would need measurement before publication.
- Traces and logs can carry personal data. Customers would remain responsible for notice, consent, retention and what their services send.
Common questions
Can I use APM today?
No. APM is in development. You can ask about early access: see Contact.
Which standards is it planned to use?
The design uses OpenTelemetry transports and W3C trace context. Details could change before any release.
Will it replace other monitoring tools?
That is not the planned focus. See Limits.
Related
- Observability overview: RUM, replay, APM and ingest for how the observability pages fit together.
- Real user monitoring and Web Vitals for browser-side telemetry.
- Uptime checks, alerts, status reports and the status page for alert rules on APM metrics.
- Usage, quotas and metering for how ingestion is counted.
- Authentication and Errors for the server API.
- Privacy and Security for data handling.