castomAPI
Odbierz klucz
POST /v1/linkedin/posts 1 token Klucz API LinkedIn

Opublikuj post na LinkedIn jako połączony użytkownik

Opublikuj post na LinkedIn jako połączony użytkownik, opcjonalnie z jednym przesłanym obrazem, wideo lub dokumentem

POST

Żądanie

  • x-api-key: <your-api-key>
  • Content-Type: application/json

Odpowiedź

{
  "post": {
    "authorUrn": "Ada Lovelace",
    "lifecycleState": "<lifecycle state>",
    "postUrn": "example",
    "visibility": "<visibility>"
  },
  "status": "success",
  "tokensDeducted": 1
}
Odpowiedź poniżej to makieta zbudowana ze schematu endpointu — żadne żądanie nie opuszcza tej strony. Zmień treść, naciśnij Wyślij, zobacz kształt odpowiedzi. Uruchom naprawdę w panelu →

Co robi

Opublikuj post na LinkedIn jako połączony użytkownik, opcjonalnie z jednym przesłanym obrazem, wideo lub dokumentem

Żądanie

Treść

PoleTypWymaganeOpis
accountIdstringnieWhich connected LinkedIn account to post as, when more than one is connected
altTextstringnieAccessibility text, for an image
commentarystringtakThe post text. LinkedIn allows up to 3000 characters.
disableResharebooleanniePrevent other members from resharing this post
lifecycleStateenumniePUBLISHED posts immediately. DRAFT stages it invisibly; publish it later with PATCH. One of: PUBLISHED, DRAFT.
mediaTitlestringnieTitle shown with a video or document
mediaUrnstringnieA urn:li:image / urn:li:video / urn:li:document returned by POST /v1/linkedin/media/upload
visibilityenumnieWho can see the post. PUBLIC is anyone, CONNECTIONS is the member's connections, LOGGED_IN is any signed-in LinkedIn user. One of: PUBLIC, CONNECTIONS, LOGGED_IN.

Przykładowe żądanie

{
  "accountId": "acc_634126",
  "altText": "Hello from castomAPI.",
  "commentary": "<commentary>",
  "disableReshare": false,
  "lifecycleState": "PUBLISHED",
  "mediaTitle": "Quarterly report",
  "mediaUrn": "example",
  "visibility": "PUBLIC"
}

Odpowiedź

PoleTypOpis
postobject
  ↳ authorUrnstring
  ↳ lifecycleStatestring
  ↳ postUrnstring
  ↳ visibilitystring
statusstring
tokensDeductedinteger

Przykładowa odpowiedź

{
  "post": {
    "authorUrn": "Ada Lovelace",
    "lifecycleState": "<lifecycle state>",
    "postUrn": "example",
    "visibility": "<visibility>"
  },
  "status": "success",
  "tokensDeducted": 1
}

Błędy

Każdy błąd ma tę samą kopertę: status HTTP, kod maszynowy i jedno zdanie.

400Treść albo parametr nie przeszły walidacji. Tablica details wskazuje pole.
401Brak klucza, klucz cofnięty albo zły nagłówek. Wyślij x-api-key.
402Portfel nie pokrywa tego wywołania. Doładuj albo poczekaj na miesięczny przydział.
404Zasób nie istnieje albo nie jest Twój. Obie sytuacje odpowiadają identycznie i nic nie kosztują.
429Przekroczony limit na minutę dla Twojego planu. Odczekaj i ponów.
5xxUsługa nadrzędna odmówiła albo przekroczyła czas. Wywołanie nie jest rozliczane.

Kod

curl -X POST 'https://app.castomapi.com/v1/linkedin/posts' \
  -H 'x-api-key: <your-api-key>' \
  -H 'Content-Type: application/json' \
  -d '{"accountId": "acc_634126", "altText": "Hello from castomAPI.", "commentary": "<commentary>", "disableReshare": false, "lifecycleState": "PUBLISHED", "mediaTitle": "Quarterly report", "mediaUrn": "example", "visibility": "PUBLIC"}'
const res = await fetch('https://app.castomapi.com/v1/linkedin/posts', {
  method: 'POST',
  headers: { 'x-api-key': '<your-api-key>', 'Content-Type': 'application/json' },
  body: JSON.stringify({"accountId": "acc_634126", "altText": "Hello from castomAPI.", "commentary": "<commentary>", "disableReshare": false, "lifecycleState": "PUBLISHED", "mediaTitle": "Quarterly report", "mediaUrn": "example", "visibility": "PUBLIC"})
});
const data = await res.json();
console.log(data);
import { request } from 'node:https';

// Node 18+ has fetch built in
const res = await fetch('https://app.castomapi.com/v1/linkedin/posts', {
  method: 'POST',
  headers: { 'x-api-key': '<your-api-key>', 'Content-Type': 'application/json' },
  body: JSON.stringify({"accountId": "acc_634126", "altText": "Hello from castomAPI.", "commentary": "<commentary>", "disableReshare": false, "lifecycleState": "PUBLISHED", "mediaTitle": "Quarterly report", "mediaUrn": "example", "visibility": "PUBLIC"})
});
const data = await res.json();
console.log(data);
import requests

res = requests.post(
    'https://app.castomapi.com/v1/linkedin/posts',
    headers={'x-api-key': '<your-api-key>'},
    json={"accountId": "acc_634126", "altText": "Hello from castomAPI.", "commentary": "<commentary>", "disableReshare": False, "lifecycleState": "PUBLISHED", "mediaTitle": "Quarterly report", "mediaUrn": "example", "visibility": "PUBLIC"},
    timeout=30,
)
print(res.json())
<?php
$ch = curl_init('https://app.castomapi.com/v1/linkedin/posts');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['x-api-key: <your-api-key>', 'Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode(['accountId' => 'acc_634126', 'altText' => 'Hello from castomAPI.', 'commentary' => '<commentary>', 'disableReshare' => false, 'lifecycleState' => 'PUBLISHED', 'mediaTitle' => 'Quarterly report', 'mediaUrn' => 'example', 'visibility' => 'PUBLIC']),
]);
$data = json_decode(curl_exec($ch), true);
print_r($data);

Koszt i limity

Ta operacja kosztuje 1 token. Nieudane wywołanie nigdy nie jest rozliczane. Każde konto dostaje 1000 darmowych tokenów miesięcznie; opłacone saldo nie wygasa.

Limity żądań na minutę

Bez klucza10
Free60
Pro300
Enterprise1200

Dokumentacja → Cennik

Pytania

Ile kosztuje Opublikuj post na LinkedIn jako połączony użytkownik?

1 token za udane wywołanie, pobierane z portfela po odpowiedzi. Nieudane wywołania są bezpłatne. Każde konto dostaje 1000 darmowych tokenów miesięcznie.

Jak się uwierzytelnić?

Wyślij klucz w nagłówku x-api-key. Jeden klucz obejmuje każdy rozliczany endpoint; niczego nie trzeba włączać osobno.

Czy mogę wysłać nagłówek Authorization: Bearer zamiast klucza?

Nie dla rozliczanego endpointu — te przyjmują wyłącznie nagłówek x-api-key. Tokeny Bearer należą do strony konta: panel i API konta przyjmują sesję JWT, a castomapi-auth wydaje je standardowym uzgodnieniem OAuth2, z grantami authorization code, client credentials i refresh. Opisuje to strona usługi auth.

Jakie są limity?

10 żądań na minutę z jednego IP zupełnie bez klucza, 60 na minutę w planie Free, 300 w Pro, 1200 w Enterprise. Powyżej poziomu bez klucza limit jest na konto, łącznie dla wszystkich endpointów.

OpenAPI: https://app.castomapi.com/docs/json