Skip to content

Signerade uppladdningstoken

Signerade uppladdningstoken är tidsbegränsade autentiseringsuppgifter designade för klientuppladdningar. De tillåter webbläsare och mobilappar att ladda upp filer direkt till IPFS Ninja utan att exponera din API-nyckel.

Ett typiskt flöde: din server genererar en signerad token med din API-nyckel, skickar den till klienten, och klienten använder den för att ladda upp filer. Tokenen förfaller automatiskt efter angiven varaktighet.

Sida för uppladdningstoken för att generera tidsbegränsade uppladdningstoken

Generera signerad token

POST /upload/signed-url

Skapa en ny signerad uppladdningstoken.

ParameterTypObligatoriskBeskrivning
namestringNejEtikett för tokenen (t.ex. "Mobilappuppladdningar").
expiresInnumberJaTokenlivstid i sekunder.

Exempelbegäran

bash
curl -X POST https://api.ipfs.ninja/upload/signed-url \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"name": "Mobile app", "expiresIn": 3600}'

Svar 201 Created

json
{
  "token": "sup_a1b2c3d4e5f6789012345678abcdef01...",
  "tokenId": "tok_9876543210abcdef",
  "tokenPrefix": "sup_a1b2c3d4",
  "tokenName": "Mobile app",
  "expiresAt": 1711040400000
}

WARNING

Den fullständiga tokenen returneras bara en gång vid skapandet. Förvara den säkert eller skicka den direkt till din klient.

Lista signerade token

GET /signed-tokens

Returnerar alla signerade token för ditt konto, inklusive användningsstatistik.

Exempelbegäran

bash
curl https://api.ipfs.ninja/signed-tokens \
  -H "X-Api-Key: bws_your_api_key_here"

Svar 200 OK

json
[
  {
    "tokenId": "tok_9876543210abcdef",
    "tokenPrefix": "sup_a1b2c3d4",
    "tokenName": "Mobile app",
    "expiresAt": 1711040400000,
    "useCount": 15,
    "lastUsedAt": 1711038600000,
    "createdAt": 1711036800000
  }
]

Återkalla signerad token

DELETE /signed-tokens/:tokenId

Återkalla omedelbart en signerad token. Alla efterföljande uppladdningsförsök med denna token avvisas.

ParameterTypObligatoriskBeskrivning
tokenIdstringJaToken-ID att återkalla (t.ex. "tok_9876543210abcdef").

Exempelbegäran

bash
curl -X DELETE https://api.ipfs.ninja/signed-tokens/tok_9876543210abcdef \
  -H "X-Api-Key: bws_your_api_key_here"

Svar 200 OK

json
{
  "message": "Token revoked"
}

Använda en signerad token

För att ladda upp med en signerad token, skicka den via Authorization-rubriken med Signed-schemat:

bash
curl -X POST https://api.ipfs.ninja/upload/new \
  -H "Authorization: Signed sup_a1b2c3d4e5f6789012345678abcdef01..." \
  -H "Content-Type: application/json" \
  -d '{"content": {"name": "example"}, "description": "Client upload"}'

Begärankroppen och svarsformatet är identiska med en standard filuppladdning.

Användningsspårning

Varje gång en signerad token används ökas useCount och lastUsedAt uppdateras. Du kan övervaka tokenaktivitet via GET /signed-tokens.

Signerade token registreras med sitt prefix i analysens API_KEY_PREFIX-fält. Detta innebär att du kan filtrera analyser efter signerat tokenprefix på samma sätt som du filtrerar efter API-nyckelprefix. Se Analys för detaljer.

Exempel: Webbläsaruppladdning

Generera en token på din server och använd den i klientsidig JavaScript:

javascript
// Serversida: generera en token giltig i 1 timme
const res = await fetch("https://api.ipfs.ninja/upload/signed-url", {
  method: "POST",
  headers: {
    "X-Api-Key": "bws_your_server_key",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ name: "Web form", expiresIn: 3600 })
});
const { token } = await res.json();
// Skicka `token` till klienten

// Klientsida: ladda upp en fil med den signerade tokenen
const file = document.getElementById("fileInput").files[0];
const reader = new FileReader();
reader.onload = async () => {
  const base64 = reader.result.split(",")[1];
  const uploadRes = await fetch("https://api.ipfs.ninja/upload/new", {
    method: "POST",
    headers: {
      "Authorization": `Signed ${token}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      content: base64,
      description: "User upload"
    })
  });
  const data = await uploadRes.json();
  console.log("Uploaded:", data.cid);
};
reader.readAsDataURL(file);