---
sidebar:
  order: 1
title: HTTP API
description: >-
  Autentifică-te, descoperă instrumentele și confirmă modificările prin API-ul HTTP existent.
---

Trimite cererile API ale produsului către originea Influence de încredere, de exemplu `https://influence.so`. Domeniul documentației nu acceptă cereri API ale produsului. Folosește exact căile de mai jos, fără parametri de interogare.

## Creează o cheie API cu permisiuni limitate [#create-a-scoped-api-key]

În [setările Influence](https://influence.so/sign-in?next=%2Fapp%2Fsettings%2Faccount%23settings-developer), deschide Aplicații și automatizări → Chei API. Alege permisiunile necesare și un termen de expirare. Păstrează cheia afișată doar 1 dată în depozitul tău de secrete, ca `PUBLISH_API_TOKEN`. Trimite-o în `Authorization: Bearer …`; nu o include niciodată într-un URL, în corpul cererii sau în chat. Revoc-o când nu mai ai nevoie de ea.

## Descoperă instrumentele și citește conturile [#discover-tools-and-make-a-read]

Setează `PUBLISH_API_URL` la originea de încredere. Exemplele presupun că procesul tău are deja `PUBLISH_API_TOKEN`. `accountList` necesită `integrations:read`; urmează câmpurile sale de paginare pentru a obține paginile următoare.

```sh
export PUBLISH_API_URL="https://influence.so"
curl "$PUBLISH_API_URL/api/v1/tools" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN"

curl "$PUBLISH_API_URL/api/v1/tools/accountList/call" \
  -H "Authorization: Bearer $PUBLISH_API_TOKEN" \
  -H 'Content-Type: application/json' \
  --data '{"input":{}}'
```

## Căile cererilor [#request-paths]

| Metodă | Cale | Scop |
| --- | --- | --- |
| `GET` | `/api/v1/tools` | Listează instrumentele disponibile acestor date de acces. |
| `POST` | `/api/v1/tools/{tool}/call` | Apelează un instrument care nu necesită confirmare, inclusiv continuările autorizate ale încărcărilor. |
| `POST` | `/api/v1/tools/{tool}/prepare` | Pregătește o modificare exactă fără a o executa. |
| `POST` | `/api/v1/tools/{tool}/confirm` | Confirmă modificarea pregătită. |
| `POST` | `/api/v1/media/import` | Confirmă încărcarea binară pregătită a unei imagini mici. |

Cererile JSON ale instrumentelor folosesc `Content-Type: application/json` și un corp care conține doar `input`: `{"input":{…}}`. Obține schema de intrare a fiecărui instrument din catalogul actual.

## Pregătește și confirmă acțiunile [#prepare-and-confirm-actions]

Folosește câmpul `confirmation` din catalog: citirile nu necesită de obicei confirmare, însă actualizarea statisticilor o necesită, deși este o citire. Obținerea informațiilor despre părțile încărcării, finalizarea și anularea continuă o încărcare deja autorizată prin `/call`.

1. Trimite datele exacte ale operațiunii la `/prepare`. Un răspuns reușit conține `status: "confirmation_required"`, `confirmationCapability`, `expiresAt`, `inputDigest` și, opțional, `summary`.
2. Înainte de expirare, trimite aceleași date de intrare la `/confirm`. Pune permisul returnat în `X-Publish-Confirmation` și o cheie nouă generată de apelant în `Idempotency-Key`.
3. Păstrează împreună datele de intrare, permisul și cheia. După o confirmare întreruptă sau incertă, refolosește-le pe toate cele 3 pentru aceeași cerere. Nu pregăti o înlocuire pentru a recupera un rezultat incert.

O cheie de idempotență conține 16–200 de caractere din `A–Z`, `a–z`, `0–9`, `.`, `_`, `:` și `-`. Permisele de confirmare sunt secrete opace. O cheie trimisă la `/call` sau `/prepare` nu rezervă o modificare confirmată.

Confirmarea transportului este separată de aprobarea publicării. Pentru modificări ale publicării sau programării, prezintă verificarea curentă completă: conturi, text, setări, previzualizări sau linkuri către fișierele media reale, ora programată și fusul orar. Clientul poate raporta o aprobare umană nouă și explicită prin `approval: "approved"` pentru verificările eligibile ale postărilor sociale cu text, imagini și video; nu trebuie să inventeze consimțământul sau să trateze pregătirea ca aprobare. Influence o înregistrează ca aprobare raportată de client. Un card încorporat compatibil sau o verificare după autentificare înregistrează propria acțiune umană.

TikTok Direct acceptă alegeri explicite și consimțământ în chat prin [fluxul de verificare](/ro/developers/mcp#prepare-finished-content). Salvează toate alegerile prin `campaignReview`, apoi obține o nouă aprobare a verificării actualizate înainte de execuție. Cardul de verificare este opțional. Programarea obișnuită prin API/CLI nu consumă limita de programare prin IA; [limita separată MCP și Influence IQ](/ro/help/ai-assistants#scheduling-allowance) se aplică acelor fluxuri chiar și când o verificare IA salvată este aprobată ulterior în Influence. Celelalte cerințe ale planului și platformei rămân valabile. Citește rezultatul salvat înainte de alte acțiuni; `needs_review` cere reconciliere, nu o nouă trimitere.

## Gestionează erorile și rezultatele incerte [#handle-errors-and-uncertain-results]

Verifică atât starea HTTP, cât și corpul răspunsului. Apelurile reușite ale instrumentelor returnează `{"ok":true,"toolName":"…","output":{…}}`. Erorile instrumentelor returnează `{"ok":false,"toolName":"…","error":{"code":"…","message":"…","retryable":false}}` și pot veni cu HTTP 200. Erorile de transport folosesc `{"error":{"code":"…","message":"…","retryable":false}}`, fără `ok` sau `toolName`.

Un 401 înseamnă că autentificarea este necesară; verifică expirarea sau revocarea. O permisiune lipsă cere acordarea accesului potrivit, nu cereri repetate. Un 503 poate indica indisponibilitatea serviciului sau o altă cerere de programare care actualizează spațiul de lucru. Urmează codul de eroare și instrucțiunile de reîncercare primite; nu repeta automat o acțiune de publicare. Depășirea timpului de așteptare nu dovedește că o modificare a eșuat: păstrează datele de confirmare și citește starea curentă înainte de retrimitere. Acceptat, programat și publicat sunt rezultate diferite.

## Încarcă fișiere media [#upload-media]

Pentru fișiere locale, preferă `uploadMedia` din SDK sau `media:upload` din CLI. Folosesc aceleași instrumente de încărcare multipart și păstrează un `clientKey` stabil pentru reîncercări. Poate fi atașat doar un rezultat gata de utilizare, cu `assetId`. Pentru un link HTTPS autorizat, folosește `mediaImport` cu `url` și, opțional, `name`. Referințele reale la fișierele gazdei folosesc obiectul `file` separat; un URL public nu are nevoie de un ID inventat de fișier al gazdei. O cale de fișier local nu este un URL de descărcare. Vezi [limitele media](/ro/help/media): importul video prin HTTPS este limitat la 250 MiB, chiar dacă un MP4 pregătit mai mare ar fi permis prin încărcare directă.

`POST /api/v1/media/import` acceptă transportul existent pentru imagini mici: pregătește `mediaImport` cu descriptorul exact al încărcării, apoi trimite aceiași octeți ca `application/octet-stream`. Include `X-Publish-Confirmation`, `Idempotency-Key` și `X-Publish-Upload`, care conține descriptorul JSON codificat pentru URI. Octeții trebuie să corespundă dimensiunii și SHA-256 din descriptor. Acest transport este limitat la 3 MiB; pentru fișiere compatibile mai mari, folosește funcția de încărcare. Încărcarea nu aprobă niciodată publicarea.

[Consultă referința API](/ro/api-reference) sau [descarcă specificația OpenAPI](/specs/influence.openapi.json).
