Skip to main content
POST
/
log
PlexPHP
declare(strict_types=1);

require 'vendor/autoload.php';

use LukeHagar\Plex_API;

$sdk = Plex_API\PlexAPI::builder()
    ->setSecurity(
        '<YOUR_API_KEY_HERE>'
    )
    ->build();

$request = 'level=4&message=Test%20message%201&source=postman\n' .
'level=3&message=Test%20message%202&source=postman\n' .
'level=1&message=Test%20message%203&source=postman';

$response = $sdk->log->logMultiLine(
    request: $request
);

if ($response->statusCode === 200) {
    // handle response
}
require 'plex_ruby_sdk'

s = ::PlexRubySDK::PlexAPI.new(
      security: Models::Shared::Security.new(
        access_token: "<YOUR_API_KEY_HERE>",
      ),
    )

req = "level=4&message=Test%20message%201&source=postman\n" +
"level=3&message=Test%20message%202&source=postman\n" +
"level=1&message=Test%20message%203&source=postman"

res = s.log.log_multi_line(req)

if res.status_code == 200
  # handle response
end
package main

import(
	"context"
	"github.com/LukeHagar/plexgo"
	"os"
	"log"
)

func main() {
    ctx := context.Background()

    s := plexgo.New(
        plexgo.WithSecurity("<YOUR_API_KEY_HERE>"),
    )

    example, fileErr := os.Open("example.file")
    if fileErr != nil {
        panic(fileErr)
    }

    res, err := s.Log.WriteLog(ctx, example)
    if err != nil {
        log.Fatal(err)
    }
    if res != nil {
        // handle response
    }
}
package hello.world;

import dev.plexapi.sdk.PlexAPI;
import dev.plexapi.sdk.models.operations.WriteLogResponse;
import dev.plexapi.sdk.utils.Utils;
import java.io.FileInputStream;
import java.lang.Exception;

public class Application {

    public static void main(String[] args) throws Exception {

        PlexAPI sdk = PlexAPI.builder()
                .token(System.getenv().getOrDefault("TOKEN", ""))
            .build();

        byte[] req = Utils.readBytesAndClose(new FileInputStream("example.file"));

        WriteLogResponse res = sdk.log().writeLog()
                .request(req)
                .call();

    }
}
import { PlexAPI } from "@lukehagar/plexjs";
import { openAsBlob } from "node:fs";

const plexAPI = new PlexAPI({
  token: "<YOUR_API_KEY_HERE>",
});

async function run() {
  await plexAPI.log.writeLog(await openAsBlob("example.file"));


}

run();
curl --request POST \
  --url https://{IP-description}.{identifier}.plex.direct:{port}/log \
  --header 'Content-Type: text/plain' \
  --header 'X-Plex-Token: <api-key>'
import requests

url = "https://{IP-description}.{identifier}.plex.direct:{port}/log"

headers = {
    "X-Plex-Token": "<api-key>",
    "Content-Type": "text/plain"
}

response = requests.post(url, headers=headers)

print(response.text)
const options = {
  method: 'POST',
  headers: {'X-Plex-Token': '<api-key>', 'Content-Type': 'text/plain'}
};

fetch('https://{IP-description}.{identifier}.plex.direct:{port}/log', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));

Authorizations

X-Plex-Token
string
header
required

The token which identifies the user accessing the PMS. This can be either:

  • A traditional access token obtained from plex.tv
  • A JWT token obtained through the JWT authentication flow

JWT tokens provide better security with:

  • Short-lived tokens (7 days expiration)
  • Public-key cryptography (ED25519)
  • Better clock synchronization
  • Individual device revocation capability

Response

OK