HTTP REST API

You can use Better Stack even if there's no official library for your programming language by sending your logs to our HTTP API.

This endpoint allows you to log a single event or a list of events. The events can be encoded in JSON or preferably in a more efficient MessagePack.

POST https://in.logs.betterstack.com

Headers

Content-Type
required string
Authorization
required string

Body parameters

Multiple events
required array
Single event
required object
202
403

Response body

Unauthorized
406

Response body

Couldn't parse JSON content.


Example: Single event

Send a single log line using cURL:

JSON MessagePack
curl -X POST https://in.logs.betterstack.com \
     -H "Authorization: Bearer $SOURCE_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"message":"logs is ready","nested":{"values":123}}'
curl -X POST https://in.logs.betterstack.com \
     -H "Authorization: Bearer $SOURCE_TOKEN" \
     -H "Content-Type: application/msgpack" \
     -d "\x82\xA7message\xB0logs is ready\xA6nested\x81\xA6values{"

Example: Multiple events

Send multiple log lines using cURL:

JSON MessagePack
curl -X POST https://in.logs.betterstack.com \
     -H "Authorization: Bearer $SOURCE_TOKEN" \
     -H "Content-Type: application/json" \
     -d '[{"message":"A"},{"message":"B"}]'
curl -X POST https://in.logs.betterstack.com \
     -H "Authorization: Bearer $SOURCE_TOKEN" \
     -H "Content-Type: application/msgpack" \
     -d "\x92\x81\xA7message\xA1A\x81\xA7message\xA1B"

Sending timestamps

By default, the time of the event will be the time of receiving it. You can override this by including a field dt containing the event time either as:

  • UNIX time  in whole seconds, milliseconds, or nanoseconds.
    1672490759, 1672490759123, 1672490759123456000
  • String formatted according to RFC 3339 .
    2022-12-31T13:45:59.123456Z, 2022-12-31 13:45:59.123456+02:00

Alternatively, you can use ISO 8601, as it will most likely use a format compatible with RFC 3339. In MessagePack, you can also use the timestamp extension type .

In case the timestamp can't be parsed, we save it as a string, but revert to using the reception time as the event time.

JSON
curl -X POST https://in.logs.betterstack.com \
     -H "Authorization: Bearer $SOURCE_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"message":"I have arrived on time","dt":"2023-08-09 07:03:30+00:00"}'