Public API

Plug LinkJet into the tools your team already uses.

Create projects from another app, read setup status, and receive signed webhooks without asking a user to click around the dashboard.

Base URL
https://backlinkjet.ai/api/v1
Bearer API keys
Signed webhook delivery
Importable OpenAPI schema

Create one automation key

Open Integrations in the dashboard and create an automation key. It includes projects:read and projects:write for project creation and status checks.

Send each new project

When a new project, client, or site arrives in another tool, POST the domain to LinkJet. Existing domains are reused instead of duplicated.

Follow progress automatically

Poll the status endpoint or add webhooks so your tool knows when setup progress, next actions, and site checks change.

Create a project

Requires an automation key with projects:write.

# Requires projects:write
curl -X POST \
  -H "Authorization: Bearer $LINKJET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"https://example.com","name":"Example"}' \
  https://backlinkjet.ai/api/v1/projects

Check status

Requires projects:read.

curl -H "Authorization: Bearer $LINKJET_API_KEY" \
  https://backlinkjet.ai/api/v1/projects/{projectId}/status

Import the API

Use this URL in tools that accept OpenAPI schemas. It includes the project endpoints and webhook event contracts.

https://backlinkjet.ai/api/v1/openapi.json

Verify webhooks

Use this before trusting a signed webhook delivery.

import crypto from "node:crypto";

export function verifyLinkJetWebhook(rawBody, headers, secret) {
  const signature = headers["LinkJet-Signature"] || headers["linkjet-signature"] || "";
  const parts = Object.fromEntries(signature.split(",").map((part) => part.split("=")));
  const timestamp = parts.t;
  const expected = crypto.createHmac("sha256", secret).update(timestamp + "." + rawBody).digest("hex");
  const actualBuffer = Buffer.from(parts.v1 || "", "hex");
  const expectedBuffer = Buffer.from(expected, "hex");
  return actualBuffer.length === expectedBuffer.length && crypto.timingSafeEqual(actualBuffer, expectedBuffer);
}

Works with automation tools

Zapier, Make, n8n, Retool, internal dashboards, and client portals can call the same endpoints. Use the OpenAPI JSON when a tool asks for an API schema.

Open Integrations