API-skanning

API-skanning gör om en PDF till en trovärdig skannad kopia med ett REST-anrop, vilket passar automatiserade flöden och integrationer i appar. Skapa jobbet, ladda upp PDF:en och polla statusen eller vänta på webhooken: tre steg, från vilken miljö eller vilket språk som helst som kan skicka en HTTP-förfrågan. Färgrymd, upplösning, rotation, oskärpa, brus, ljusstyrka, kontrast och kantlinje går alla att ställa in.

Så går ett anrop till

  1. Skapa jobbet

    POST /v1/scan-jobs

    Skicka din config och eventuellt en webhookUrl; du får tillbaka ett jobID och en försignerad uploadURL.

  2. Ladda upp PDF:en

    PUT {uploadURL}

    Gör PUT av filen direkt till den försignerade S3-adressen från föregående steg — ingen token behövs.

  3. Hämta den skannade kopian

    GET /v1/scan-jobs/{jobID}

    Polla statusen eller vänta på webhooken; när jobbet är completed hämtar du filen från downloadURL.

Var det passar

Massproduktion i backend

Avtal, fakturor och rapporter som skapas på servern går direkt genom skanningseffekten, utan att någon gör om samma sak för hand på webbsidan.

I ett befintligt system

Lägg till en åtgärd för att exportera en skannad kopia i ett CRM, ett affärssystem eller ett ärendesystem, och låt den anropa API:et.

Automatiseringskedjor

CI, n8n, Zapier och liknande startar ett jobb vid en händelse, och webhooken lämnar över till nästa steg när det är klart.

Stora köer av filer

Jobben är asynkrona: när de väl skapats bearbetas vart och ett för sig, och förloppet går att följa via status och createdAfter.

Språk och miljöer

TypeScriptfetch / axios
Node.jsfetch / undici
Pythonrequests / httpx
Gonet/http
PHPcURL / Guzzle
Rubynet/http
JavaHttpClient
cURLKommandorad / CI
MerVilken HTTP-klient som helst

API:et är vanlig HTTP och JSON, så vilket språk eller vilken automatiseringsplattform som helst som kan skicka en förfrågan kan anropa det.

Kodexempel

API Bearer Token

Token hör till ditt konto och kan genereras om när som helst. API-skanning kräver ett Pro-konto: utan en giltig token svarar API:et 401, och utan Pro-rollen svarar det 403.

Prova

Ställ in parametrarna, se hur förfrågans innehåll följer med och kör sedan de tre anropen mot API:et.

Skanningsparametrar

En provkörning anropar API:et med din token och kräver ett Pro-konto; parametrarna och förfrågans innehåll är fria att titta på.

POST/v1/scan-jobs
{
  "config": {
    "rotate": 1,
    "rotate_var": 0.5,
    "colorspace": "gray",
    "blur": 0,
    "noise": 0,
    "border": false,
    "brightness": 1.3,
    "contrast": 1.3,
    "resolution": 150,
    "output_format": "image/jpeg"
  }
}

Skanningsjobb Information

exempel
{
  "jobID": "3f9c1e64-0000-4000-8000-00000000a71b",
  "userID": "8f21c4b0-0000-4000-8000-000000004a17",
  "createdAt": 1724409600,
  "status": "completed",
  "inputUploadedAt": 1724409601,
  "completedAt": 1724409602,
  "numPages": 6,
  "downloadURL": "https://…/output/3f9c.pdf?X-Amz-…"
}

API-referens

MetodSökvägBeskrivning
POST/v1/scan-jobsSkapar ett skanningsjobb. Skicka config och eventuellt webhookUrl; du får tillbaka jobbobjektet med statusen created och en försignerad uploadURL.
PUT{uploadURL}Den försignerade S3-adressen från föregående steg, som inte ligger på api.lookscanned.ioLaddar upp käll-PDF:en med Content-Type: application/pdf och Content-Length. Adressen bär sin egen signatur, så lägg inte till någon Authorization-header.
GET/v1/scan-jobs/{jobID}Läser ett enskilt jobb, för pollning. Vid created innehåller det uploadURL, vid completed downloadURL.
GET/v1/scan-jobsListar dina egna jobb, filtrerade på jobID, status eller createdAfter.
Statuscreatedprocessingcompletedfailed
  • 401 ingen giltig token
  • 403 kontot är inte Pro
  • 404 jobbet finns inte

Förfrågans innehåll

FältTypStandardBeskrivning
webhookUrlstring · —Anropas en gång när jobbet är klart, så du slipper polla efter det.
config.colorspace'gray' | 'sRGB' · graygrayFärgrymd för bilden som skapas; gray ger en svartvit skannad kopia.
config.resolutionnumber · 7272Upplösning på bilden som skapas, i dpi.
config.rotatenumber · —Rotation av hela dokumentet, i grader.
config.rotate_varnumber · —Spannet för den slumpmässiga rotationen per sida, i grader — intrycket av ett papper som lagts snett.
config.blurnumber · 00Mängden oskärpa.
config.noisenumber · 00Mängden brus.
config.brightnessnumber · 11Ljusstyrka; 1 lämnar den oförändrad.
config.contrastnumber · 11Kontrast; 1 lämnar den oförändrad.
config.borderboolean · falsefalseOm sidan ska få en kantlinje från skanningen.
config.output_format'image/png' | 'image/jpeg' · image/jpegimage/jpegBildformatet som sidorna renderas till.

Alla fält får utelämnas. Startvärdena i ”Prova” — upplösning 150, rotation 1, ljusstyrka och kontrast 1,3 — är den kombination webbappen rekommenderar, inte API:ets standardvärden.

Fält i jobbobjektet att hålla ögonen på

status
created / processing / completed / failed — avgör om de två adresserna nedan finns med.
uploadURL
Bara medan jobbet är created. En försignerad uppladdningsadress som går ut.
downloadURL
Först när jobbet är completed. En försignerad nedladdningsadress som går ut.
inputUploadedAt / completedAt
När uppladdningen av källan blev klar och när jobbet blev klart; skillnaden är bearbetningstiden.

Vanliga frågor

Kräver API-skanning Pro?

Ja. Utan en giltig token svarar API:et 401, och ett konto utan Pro-rollen får 403. När du uppgraderat och loggat in finns token på den här sidan.

Hur vet jag när ett jobb är klart?

På två sätt: polla GET /v1/scan-jobs/{jobID}, eller skicka med en webhookUrl när du skapar jobbet och låt tjänsten höra av sig en gång.

Blir resultatet detsamma som när man skannar på webbsidan?

Ja. Båda använder samma implementation av skanningseffekten, och färgrymd, upplösning, rotation, oskärpa, brus, ljusstyrka, kontrast och kantlinje i config motsvarar webbsidans likalydande inställningar: samma parametrar ger samma resultat. Det enda som skiljer är var arbetet sker — lokalt på sidan, på distans via API:et.

Kan jag spara uppladdnings- och nedladdningsadresserna och återanvända dem?

Helst inte. uploadURL och downloadURL är försignerade adresser med begränsad livslängd; när de gått ut måste du läsa jobbet igen för att få nya.

Hur lång tid tar ett jobb?

Det beror på antalet sidor och upplösningen. Några få sidor brukar vara klara inom sekunder, medan högre upplösning och längre dokument tar längre tid. Skillnaden mellan inputUploadedAt och completedAt ger den faktiska tiden.

Vad gör jag om ett jobb misslyckas?

Statusen blir failed. De vanliga orsakerna är en fil som inte är en giltig PDF, kryptering som spärrar filen eller en avbruten uppladdning. Kontrollera att filen går att öppna och skapa ett nytt jobb.

Kan jag se tidigare jobb?

Ja. GET /v1/scan-jobs listar dina egna jobb och går att filtrera på jobID, status och createdAfter, vilket räcker för avstämning eller en ny nedladdning.