---
sidebar:
  order: 1
title: "HTTP-API"
description: "Authenticeer, ontdek tools en bevestig wijzigingen via de bestaande HTTP-API."
---

Stuur productaanvragen naar je vertrouwde Influence-origin, zoals `https://influence.so`. Het documentatiedomein accepteert geen aanvragen voor de product-API. Gebruik onderstaande paden exact, zonder queryparameters.

## Maak een API-sleutel met beperkte rechten

Open in de [Influence-instellingen](https://influence.so/sign-in?next=%2Fapp%2Fsettings%2Faccount%23settings-developer) Apps en automatiseringen → API-sleutels. Kies de benodigde rechten en een vervaldatum. Bewaar de eenmalig getoonde sleutel in je geheimenopslag als `PUBLISH_API_TOKEN`. Verstuur hem via `Authorization: Bearer …`, nooit in een URL, aanvraaginhoud of chat. Trek hem in wanneer je hem niet meer nodig hebt.

## Ontdek tools en lees gegevens

Stel `PUBLISH_API_URL` in op de vertrouwde origin. De voorbeelden gaan ervan uit dat het proces al `PUBLISH_API_TOKEN` heeft. `accountList` vereist `integrations:read`; gebruik de pagineringsvelden om volgende pagina’s op te halen.

```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":{}}'
```

## Aanvraagpaden

| Methode | Pad | Doel |
| --- | --- | --- |
| `GET` | `/api/v1/tools` | Toont de tools die met dit toegangsbewijs beschikbaar zijn. |
| `POST` | `/api/v1/tools/{tool}/call` | Roept een tool voor alleen lezen aan. |
| `POST` | `/api/v1/tools/{tool}/prepare` | Bereidt een exacte wijziging voor zonder die uit te voeren. |
| `POST` | `/api/v1/tools/{tool}/confirm` | Bevestigt de voorbereide wijziging. |
| `POST` | `/api/v1/media/import` | Bevestigt een voorbereide kleine binaire afbeeldingsupload. |

JSON-aanvragen gebruiken `Content-Type: application/json` en bevatten alleen `input`: `{"input":{…}}`. Het invoerschema van elke tool staat in de actuele catalogus.

## Bereid wijzigingen voor en bevestig ze

1. Stuur de exacte invoer naar `/prepare`. Een geslaagd antwoord bevat `status: "confirmation_required"`, `confirmationCapability`, `expiresAt`, `inputDigest` en eventueel `summary`.
2. Stuur vóór de vervaltijd dezelfde invoer naar `/confirm`. Zet de ontvangen bevestigingswaarde in `X-Publish-Confirmation` en een nieuwe, door je client gegenereerde sleutel in `Idempotency-Key`.
3. Bewaar invoer, bevestigingswaarde en sleutel samen. Gebruik na een onderbroken of onzekere bevestiging alle drie opnieuw voor dezelfde aanvraag. Bereid geen vervangende handeling voor om een onzeker resultaat te herstellen.

Een idempotentiesleutel bevat 16–200 tekens uit `A–Z`, `a–z`, `0–9`, `.`, `_`, `:` en `-`. Bevestigingswaarden zijn geheime, ondoorzichtige tokens. Een sleutel bij `/call` of `/prepare` reserveert geen bevestigde wijziging.

Een aanvraag bevestigen staat los van publicatie goedkeuren. Maak en toon voor publicatie of planningswijzigingen de volledige actuele controle. Tekst vereist daarna een nieuwe goedkeuring. Afbeeldingen en video’s vereisen visuele goedkeuring door de persoon in een ondersteunde interface of na inloggen bij Influence. Een voorbereide controle publiceert niets. Lees vóór verdere actie het opgeslagen resultaat; bij `needs_review` moet je uitzoeken wat er is gebeurd, niet opnieuw verzenden.

## Verwerk fouten en onzekere resultaten

Controleer de HTTP-status én de inhoud. Succes geeft `{"ok":true,"toolName":"…","output":{…}}`. Een toolfout geeft `{"ok":false,"toolName":"…","error":{"code":"…","message":"…","retryable":false}}`, soms met HTTP 200. Transportfouten gebruiken `{"error":{"code":"…","message":"…","retryable":false}}` zonder `ok` of `toolName`.

401 vereist authenticatie: controleer verval of intrekking. Ontbrekende rechten vragen om passende toestemming, niet om herhaalde aanvragen. 503 betekent dat de API in die omgeving niet beschikbaar is. Volg fouten en aanwijzingen voor herhalen. Een time-out bewijst niet dat een wijziging is mislukt: bewaar de bevestigingsgegevens en lees de status vóór opnieuw verzenden. Geaccepteerd, gepland en gepubliceerd zijn verschillende resultaten.

## Upload media

Gebruik voor lokale bestanden bij voorkeur `uploadMedia` in de SDK of `media:upload` in de CLI. Ze gebruiken dezelfde tools voor uploads in delen en behouden een stabiele `clientKey` voor herhalingen. Alleen een gereed resultaat met `assetId` kun je bijvoegen. Gebruik `mediaImport` voor geautoriseerde HTTPS-bestandsverwijzingen; een lokaal pad is geen download-URL.

`POST /api/v1/media/import` ondersteunt het bestaande transport voor kleine afbeeldingen: bereid `mediaImport` voor met de exacte uploaddescriptor en stuur dezelfde bytes als `application/octet-stream`. Voeg `X-Publish-Confirmation`, `Idempotency-Key` en `X-Publish-Upload` toe, met de JSON-descriptor gecodeerd voor een URI. Grootte en SHA-256 moeten overeenkomen met de bytes. De limiet is 3 MiB; gebruik de uploadhelper voor grotere ondersteunde bestanden. Uploaden keurt publicatie nooit goed.

[Bekijk de API-referentie](/nl/api-reference) of [download de OpenAPI-specificatie](/specs/influence.openapi.json).
