Utvecklare

    Lumenbase API-referens

    REST-endpoints för kontakter, företag, affärer, uppgifter, fakturor och aktiviteter. JSON in, JSON ut, autentiserat med en API-nyckel för arbetsytan.

    Snabbstart

    1. Steg 1

      Skapa en nyckel

      Ge bara de scopes som integrationen använder. Nyckeln visas en gång.

      InställningarFöretagsinställningarAPI
    2. Steg 2

      Skicka ett anrop

      Lägg nyckeln i Authorization-huvudet i varje anrop.

      Bearer lmb_…
    3. Steg 3

      Läs svarskuvertet

      Kontrollera success, läs data och logga meta.request_id för supporten.

      meta.request_id

    Bas-URL

    https://api.lumenbase.io/functions/v1
    Varje anrop skickar
    Authorization: Bearer <YOUR_API_KEY>
    Content-Type: application/json

    Valfria huvuden

    • X-Idempotency-Key Gör ett omförsök av en import säkert. Se Idempotens.
    • X-Request-Id Ditt eget spårnings-id, som returneras i meta.request_id.

    Varje svar

    Lyckat
    {
      "success": true,
      "data": { ... },
      "meta": {
        "request_id": "req_...",
        "api_version": "1",
        "timestamp": "..."
      }
    }
    Fel
    {
      "success": false,
      "error": {
        "code": "VALIDATION_ERROR",
        "message": "...",
        "details": { "field": "..." }
      },
      "meta": { ... }
    }

    Autentisering

    Varje anrop bär en API-nyckel för arbetsytan som Bearer-token. Ingen annan form accepteras.

    Authorization: Bearer lmb_0f2a...

    Vad varje anrop passerar

    1. API-nyckel

      Saknas, felformaterad eller återkallad

      401
    2. Scope

      Nyckeln saknar scope för det här anropet

      403
    3. Anropsgräns

      Hinken är full

      429
    4. Validering

      Felaktigt fält, okänt id eller posten finns inte

      400404409
    5. Klart

      Skapad, läst, uppdaterad eller borttagen

      200201202
    • En nyckel är lmb_ följt av 64 hexadecimala tecken.
    • Nycklar lagras hashade. Vi kan inte visa en igen, så spara den när du skapar den.
    • Återkallelsen gäller från nästa anrop. Skapa ersättaren först, så blir rotationen utan avbrott.
    • En nyckel hör till en arbetsyta. Den kan bara läsa poster i den arbetsytan, och bara länka till dem.
    • Poster som en nyckel skapar tillskrivs personen som skapade nyckeln, eller en admin i arbetsytan om personen har lämnat.

    Scopes

    Varje nyckel har ett eller flera scopes. Ge bara det som integrationen använder.

    ScopeBeskrivning
    contacts:readLäs och lista kontakter
    contacts:writeSkapa, uppdatera och radera kontakter
    companies:readLäs och lista företag
    companies:writeSkapa, uppdatera och radera företag
    deals:readLäs och lista affärer
    deals:writeSkapa, uppdatera och radera affärer
    tasks:readLäs och lista tasks
    tasks:writeSkapa, uppdatera och radera tasks
    invoices:readLäs och lista fakturor
    invoices:writeSkapa, uppdatera och radera fakturor
    activities:readLäs och lista aktiviteter
    activities:writeSkapa och radera aktiviteter
    inbound:submitSkicka formulärsvar till ett Inbound-formulär, inget annat. Nyckeln kan inte läsa eller ändra någon post.
    readLäsåtkomst till alla entitetstyper
    adminFull åtkomst till alla slutpunkter

    contact_ingest och activity_ingest är äldre namn som fortfarande fungerar. Vart och ett ger läs- och skrivåtkomst till kontakter respektive aktiviteter.

    Paginering

    Alla listendpoints tar de här frågeparametrarna.

    FältTypBeskrivning
    pageintegerSidnummer (standard: 1)
    per_pageintegerObjekt per sida, max 100 (standard: 25)
    sort_bystringFält att sortera efter (varierar per entitet)
    sort_orderstring"asc" eller "desc" (standard: "desc")
    searchstringFritextsökning över nyckelfält
    Paginerat svar
    {
      "success": true,
      "data": {
        "items": [ ... ],
        "pagination": { "page": 1, "per_page": 25, "total": 142, "total_pages": 6 }
      },
      "meta": { ... }
    }

    Resurser

    Kontakter

    Skapa eller importera en kontakt

    POST/v1-public-contacts
    Scopecontacts:writeellercontact_ingest

    Skapar en kontakt, eller uppdaterar den kontakt den matchar. Kan skapa eller länka företaget via namn eller domän.

    Begärandekropp
    {
      "first_name": "John",
      "last_name": "Doe",
      "email": "john.doe@example.com",
      "phone": "+1-555-123-4567",
      "title": "Product Manager",
      "company_name": "Acme Inc",
      "company_domain": "acme.com",
      "source": "website_form",
      "signal_strength": 75,
      "message": "Interested in your enterprise plan"
    }
    FältTypBeskrivning
    first_namestringKontaktens förnamn
    last_namestringKontaktens efternamn
    emailstringMatchar en befintlig kontakt
    phonestringTelefonnummer
    titlestringJobbtitel
    company_namestringSkapar företaget om det är nytt
    company_domainstringMatchar eller skapar företaget
    sourcestringEtikett för leadkälla
    signal_strengthnumberIntentionspoäng, 0 till 100 (standard: 50)
    messagestringFritextmeddelande, till exempel från ett formulär
    tagsstring[]Upp till 20 etiketter
    Svar
    {
      "success": true,
      "data": {
        "contact_id": "uuid",
        "company_id": "uuid",
        "is_new_contact": true,
        "is_new_company": false
      },
      "meta": { ... }
    }

    201 när en kontakt skapas, 200 när en befintlig uppdateras.

    Batchimportera kontakter

    POST/v1-public-contacts-batch
    Scopecontacts:writeellercontact_ingest

    Upp till 100 kontakter per anrop, var och en med samma fält som en enskild import.

    Begärandekropp
    {
      "contacts": [
        { "email": "a@example.com", "first_name": "Alice" },
        { "email": "b@example.com", "first_name": "Bob" }
      ],
      "options": { "stop_on_error": false }
    }

    201 när alla skrevs, 207 när några misslyckades (läs results[].success), 400 när ingen skrevs. Max 500 KB.

    Hämta eller lista kontakter

    GET/v1-public-contacts-crud?id={uuid}

    En kontakt via id, med dess företag.

    GET/v1-public-contacts-crud?page=1&per_page=25

    En sida med kontakter.

    Scopecontacts:read
    FilterTypBeskrivning
    emailstringExakt e-post
    company_iduuidKontakter på det här företaget
    sourcestringExakt leadkälla
    searchstringOrd i förnamn, efternamn eller e-post

    Sortera efter: created_at, updated_at, first_name, last_name, email

    Uppdatera en kontakt

    PATCH/v1-public-contacts-crud?id={uuid}
    Scopecontacts:write
    Begärandekropp
    { "title": "Senior Product Manager", "phone": "+1-555-999-0000" }

    Uppdaterbara: first_name, last_name, email, phone, title, company_id, source, birthday. Skicka bara det som ändras.

    Ta bort en kontakt

    DELETE/v1-public-contacts-crud?id={uuid}
    Scopecontacts:write
    Svar
    { "success": true, "data": { "deleted": true, "id": "uuid" } }

    Företag

    Skapa ett företag

    POST/v1-public-companies
    Scopecompanies:write

    Ett företag med samma domän uppdateras i stället, och anropet svarar 200. Annars skapas ett nytt (201), vilket kräver ett namn.

    Begärandekropp
    {
      "name": "Acme Inc",
      "domain": "acme.com",
      "industry": "Technology",
      "size": "51-200",
      "website": "https://acme.com",
      "city": "San Francisco",
      "country": "US"
    }
    FältTypBeskrivning
    namestringKrävs vid skapande
    domainstringMatchar ett befintligt företag
    industrystringBransch
    sizestringStorleksintervall, till exempel 51-200
    websitestringWebbplats-URL
    phonestringTelefonnummer
    citystringStad
    statestringDelstat eller region
    countrystringLandskod

    Hämta eller lista företag

    GET/v1-public-companies?id={uuid}
    GET/v1-public-companies?page=1&per_page=25
    Scopecompanies:read
    FilterTypBeskrivning
    domainstringExakt domän
    industrystringExakt bransch
    searchstringOrd i namn eller domän

    Sortera efter: created_at, updated_at, name, domain

    Uppdatera ett företag

    PATCH/v1-public-companies?id={uuid}
    Scopecompanies:write
    Begärandekropp
    { "industry": "SaaS", "size": "201-500" }

    Uppdaterbara: alla fält ovan. Skicka bara det som ändras.

    Ta bort ett företag

    DELETE/v1-public-companies?id={uuid}
    Scopecompanies:write

    Affärer

    Skapa en affär

    POST/v1-public-deals
    Scopedeals:write

    Kräver en rubrik, och ett värde eller ett company_id.

    Begärandekropp
    {
      "title": "Enterprise License: Acme",
      "value": 50000,
      "currency": "USD",
      "stage": "Proposal",
      "expected_close_date": "2026-04-15",
      "company_id": "uuid",
      "contact_id": "uuid"
    }
    FältTypBeskrivning
    titlestring (obligatoriskt)Affärens rubrik
    valuenumberAffärens belopp
    currencystringValutakod (standard: arbetsytans valuta)
    stagestringStegnamn eller steg-id (standard: första steget)
    statusstringopen, won eller lost (standard: open)
    probabilitynumberVinstsannolikhet, 0 till 100
    expected_close_datedateYYYY-MM-DD
    company_iduuidKopplat företag
    contact_iduuidKopplad kontakt
    pipeline_iduuidPipeline (standard: arbetsytans standardpipeline)
    assigned_touuidÄgare, en medlem i arbetsytan (standard: nyckelns skapare)
    notesstringFritext

    Hämta eller lista affärer

    GET/v1-public-deals?id={uuid}
    GET/v1-public-deals?page=1&per_page=25
    Scopedeals:read
    FilterTypBeskrivning
    stagestringExakt stegnamn
    statusstringopen, won eller lost
    company_iduuidAffärer på det här företaget
    pipeline_iduuidAffärer i den här pipelinen
    searchstringOrd i rubriken

    Sortera efter: created_at, updated_at, title, value, expected_close_date

    Uppdatera en affär

    PATCH/v1-public-deals?id={uuid}
    Scopedeals:write
    Begärandekropp
    { "stage": "Negotiation", "probability": 80 }

    Ett nytt pipeline_id utan steg flyttar affären till den pipelinens första steg.

    Ta bort en affär

    DELETE/v1-public-deals?id={uuid}
    Scopedeals:write

    Uppgifter

    Skapa en uppgift

    POST/v1-public-tasks
    Scopetasks:write
    Begärandekropp
    {
      "title": "Follow up with Acme",
      "description": "Send proposal by Friday",
      "priority": "high",
      "due_date": "2026-03-01",
      "contact_id": "uuid",
      "deal_id": "uuid"
    }
    FältTypBeskrivning
    titlestring (obligatoriskt)Uppgiftens rubrik
    descriptionstringUppgiftens beskrivning
    statusstringopen eller completed (standard: open)
    prioritystringlow, medium eller high (standard: medium)
    task_typestringtodo, email, call, meeting, linkedin_message, linkedin_connection eller custom
    due_datedateYYYY-MM-DD
    assigned_touuidEn medlem i arbetsytan (standard: nyckelns skapare)
    contact_iduuidKopplad kontakt
    company_iduuidKopplat företag
    deal_iduuidKopplad affär

    Hämta eller lista uppgifter

    GET/v1-public-tasks?id={uuid}
    GET/v1-public-tasks?page=1&per_page=25
    Scopetasks:read
    FilterTypBeskrivning
    statusstringopen eller completed
    prioritystringlow, medium eller high
    assigned_touuidUppgifter för den här medlemmen
    contact_iduuidUppgifter på den här kontakten
    company_iduuidUppgifter på det här företaget
    deal_iduuidUppgifter på den här affären
    searchstringOrd i rubriken

    Sortera efter: created_at, updated_at, title, due_date, priority

    Uppdatera en uppgift

    PATCH/v1-public-tasks?id={uuid}
    Scopetasks:write
    Begärandekropp
    { "status": "completed", "description": "Proposal sent" }

    Skicka status completed för att slutföra en uppgift och open för att öppna den igen. En uppgift med öppna deluppgifter kan inte slutföras.

    Ta bort en uppgift

    DELETE/v1-public-tasks?id={uuid}
    Scopetasks:write

    Fakturor

    Skapa en faktura

    POST/v1-public-invoices
    Scopeinvoices:write

    Kräver invoice_number och total. Numret måste vara unikt i arbetsytan.

    Begärandekropp
    {
      "invoice_number": "INV-2026-001",
      "status": "draft",
      "issue_date": "2026-02-19",
      "due_date": "2026-03-19",
      "subtotal": 5000,
      "tax_amount": 500,
      "total": 5500,
      "currency": "USD",
      "company_id": "uuid",
      "notes": "Net 30"
    }
    FältTypBeskrivning
    invoice_numberstring (obligatoriskt)Unikt i arbetsytan
    totalnumber (obligatoriskt)Totalbelopp
    statusstringdraft, sent, paid, partially_paid, overdue eller cancelled (standard: draft)
    issue_datedateYYYY-MM-DD (standard: i dag)
    due_datedateYYYY-MM-DD
    subtotalnumberDelsumma
    tax_amountnumberSkattebelopp
    currencystringValutakod
    company_iduuidFakturerat företag
    notesstringFritext
    line_itemsjsonFakturarader, sparas som de skickas

    Hämta eller lista fakturor

    GET/v1-public-invoices?id={uuid}
    GET/v1-public-invoices?page=1&per_page=25
    Scopeinvoices:read
    FilterTypBeskrivning
    statusstringExakt status
    company_iduuidFakturor för det här företaget
    searchstringFakturanumret innehåller

    Sortera efter: created_at, updated_at, invoice_number, due_date, total, issue_date

    Uppdatera en faktura

    PATCH/v1-public-invoices?id={uuid}
    Scopeinvoices:write
    Begärandekropp
    { "status": "sent", "due_date": "2026-04-01" }

    Ta bort en faktura

    DELETE/v1-public-invoices?id={uuid}
    Scopeinvoices:write

    Aktiviteter

    Skapa eller importera en aktivitet

    POST/v1-public-activities
    Scopeactivities:writeelleractivity_ingest

    Registrerar en händelse från Jira, ett supportverktyg, ett formulär eller valfri webhook, på tidslinjen för den kontakt, det företag eller den affär den matchar.

    Begärandekropp
    {
      "type": "jira_issue",
      "entity_email": "john.doe@example.com",
      "entity_domain": "acme.com",
      "title": "PROJ-123: New Feature Request",
      "description": "Customer requested dashboard export",
      "timestamp": "2026-01-15T10:30:00Z",
      "data": { "issue_key": "PROJ-123", "priority": "high" }
    }

    type är en av dessa. Allt annat lagras som external_activity.

    jira_issuesupport_ticketform_submissioncontact_submissionwebhookexternal_activity

    Länkning

    • entity_emailKontakten med den här e-postadressen
    • entity_domainFöretaget med den här domänen
    • contact_id · company_id · deal_idDen posten, om den finns i din arbetsyta

    Utan matchning registreras händelsen ändå, activity_id är null och inget visas på någon tidslinje.

    Hämta eller lista aktiviteter

    GET/v1-public-activities-crud?id={uuid}
    GET/v1-public-activities-crud?page=1&per_page=25
    Scopeactivities:read
    FilterTypBeskrivning
    typestringTidslinjetyp, till exempel note, call, email, meeting eller task
    contact_iduuidPå den här kontakten
    company_iduuidPå det här företaget
    deal_iduuidPå den här affären
    searchstringOrd i rubriken

    Sortera efter: created_at, type, title

    Ta bort en aktivitet

    DELETE/v1-public-activities-crud?id={uuid}
    Scopeactivities:write

    Inbound-formulärsvar

    Skicka ett formulärsvar

    POST/v1-public-inbound-submissions
    Scopeinbound:submit

    För ett formulär på din egen webbplats eller i ett annat formulärverktyg. Varje svar sparas först och kör sedan leadflödet som är inställt i Inbound: kontakt, företag, Leads-tavlan, ägare, notis, svarsmål och uppföljningsuppgift. Skapa formuläret under Inbound, Forms, New form, Connect an external form, och publicera det.

    Begärandekropp
    {
      "form_id": "website-contact",
      "external_id": "wpforms-48213",
      "email": "anna.larsen@northwind.example",
      "name": "Anna Larsen",
      "company": "Northwind Advisory",
      "phone": "+46 70 123 45 67",
      "message": "We need a CRM for 20 sellers.",
      "budget": "10-20k",
      "utm": { "utm_source": "linkedin", "utm_medium": "paid" },
      "page_url": "https://northwind.example/contact"
    }
    FältTypBeskrivning
    form_idstring (obligatoriskt)Formulärets ID från fliken Connection: det läsbara Form ID om ett sådant är satt, annars det långa id:t. Båda fungerar.
    external_idstringDitt eget id för svaret. Skickas det igen blir svaret 200 duplicate och inget nytt sparas. Högst 200 tecken.
    emailstring (obligatoriskt)Personens e-post. Krävs, direkt eller via något av namnen nedan.
    namestringHela namnet. Eller skicka first_name och last_name.
    companystringFöretagets namn.
    company_domainstringFöretagets webbplats. Utan den används e-postdomänen, om det inte är en gratis e-posttjänst.
    phone, titlestringSätts på en ny kontakt. En befintlig kontakt, matchad på e-post, ändras inte.
    message, …stringAlla andra nycklar, till exempel message eller budget, sparas som svar på formulärsvaret och på kontaktens tidslinje.
    fieldsobjectSvar kan också ligga här, eller djupare nästlade. Nästlade värden läses via punktsökväg, till exempel contact.email.
    utmobjectutm_source, utm_medium och resten, för attribution.
    page_url, referrerstringSidan formuläret låg på, och varifrån besökaren kom.

    Namn som läses utan inställning

    • emailemaile_mailemail_addressyour_emailmailwork_email
    • namenamefull_namefullnameyour_namecontact_name
    • first_namefirst_namefirstnamefirstgiven_namefname
    • last_namelast_namelastnamelastfamily_namesurnamelname
    • companycompanycompany_nameorganizationorganisationbusinessaccount
    • company_domaincompany_domaindomainwebsitecompany_websiteurlsite
    • phonephonephone_numbertelephonetelyour_phonemobile
    • titletitlejob_titleroleposition
    • messagemessageyour_messagecommentscommentinquiryenquirybodytextnotenotesquestion

    Nycklar matchas utan hänsyn till versaler, och mellanslag, punkter och bindestreck läses som understreck, så Your-Email räknas som your_email. Andra namn mappar du en gång på formulärets flik Fields. Inget ändras på din sida.

    Svar (202)
    {
      "success": true,
      "data": { "submission_id": "0b6f1c9e-4d2a-4e8b-9a7c-5f3e2d1c0b9a", "status": "accepted" },
      "meta": { "request_id": "req_...", "api_version": "1", "timestamp": "2026-09-28T10:00:00.000Z" }
    }

    Svar

    StatusKodBetydelse
    202acceptedSparat, och leadflödet kördes.
    202heldSparat, men hållet som trolig spam tills någon granskar det i Datahygien.
    200duplicateDetta external_id har redan tagits emot för formuläret. Inget nytt sparades.
    400VALIDATION_ERRORIngen giltig e-post hittades, eller så är form_id felaktigt. details.unmapped_keys listar det som skickades men inte lästes.
    403EXTERNAL_FORMS_DISABLEDExterna formulär är avstängda under Inbound, Setup, Lead capture.
    404NOT_FOUNDInget formulär med detta form_id i nyckelns arbetsyta.
    409FORM_NOT_EXTERNALFormuläret är byggt i Lumenbase. Det använder sin inbäddningskod, inte den här slutpunkten.
    409FORM_NOT_PUBLISHEDFormuläret är ett utkast eller arkiverat. Publicera det först.

    Svaret nämner formulärsvaret och inget annat. En nyckel som bara kan skicka får inte veta vilka poster som finns.

    Skicka från din server, aldrig från sidans kod: vem som helst kan läsa en nyckel i webbläsaren. Försök igen vid 503 med samma external_id, så kan svaret inte sparas två gånger.

    Fel

    StatusKodBetydelse
    400VALIDATION_ERROREtt fält saknas, är felformaterat eller är inte tillåtet. details.field anger vilket, när det finns ett.
    401UNAUTHORIZEDAPI-nyckeln saknas, är felformaterad eller återkallad. Skicka Authorization: Bearer <nyckel>.
    403FORBIDDENNyckeln saknar scopet. details.required_scope anger vilket.
    404NOT_FOUNDPosten finns inte i den här arbetsytan, eller så har den tagits bort.
    405METHOD_NOT_ALLOWEDEndpointen stöder inte den här metoden.
    409CONFLICTDet finns redan en post med det här unika värdet, till exempel ett fakturanummer.
    410GONEEn pensionerad äldre endpoint vars sunset-datum har passerat. Svarskroppen anger efterträdaren.
    413PAYLOAD_TOO_LARGEKroppen överskrider storleksgränsen: 50 KB, eller 500 KB för batch. Vissa endpoints rapporterar detta som 400.
    429RATE_LIMIT_EXCEEDEDHinken för anropsgränsen är full. Vänta i Retry-After sekunder.
    500INTERNAL_ERROREtt fel hos oss. Skicka oss meta.request_id.
    503SERVICE_UNAVAILABLEEtt databassteg svarade inte i tid. Läs Anropsgränser innan du gör om ett skapande anrop.

    Förgrena på error.code, inte på meddelandet. Meddelanden är skrivna för människor och kan ändras; koder är en del av avtalet.

    Anropsgränser

    Gränserna gäller per arbetsyta och räknas i fönster på en minut. Varje resurs har sin egen hink.

    • Alla resurser: 100 anrop per minut. Batchimport förbrukar kontakternas hink.
    • Kontakter: dessutom 10 000 anrop per dygn.
    • Aktiviteter: dessutom 50 000 anrop per dygn.
    • Ett batchanrop räknas en gång mot dygnstaket, oavsett hur många kontakter det bär.

    Lyckade svar bär

    • X-RateLimit-LimitTillåtna anrop per minut i den här hinken.
    • X-RateLimit-RemainingAnrop kvar den här minuten.
    • X-RateLimit-ResetNär minuten nollställs, i Unix-sekunder.
    • X-DailyLimit-RemainingAnrop kvar i dag. Endast kontakter och aktiviteter.
    • X-DailyLimit-ResetNär dygnet nollställs, i Unix-sekunder. Endast kontakter och aktiviteter.
    • Retry-AfterVid en 429, väntetiden i sekunder.

    En 503 SERVICE_UNAVAILABLE betyder att ett databassteg inte svarade i tid. Läsningar går säkert att göra om. Ett skapande anrop kan redan ha skrivits, så gör om en import med samma X-Idempotency-Key, och läs först innan du gör om något annat skapande anrop.

    Idempotens

    Skicka X-Idempotency-Key så att ett omförsök efter en timeout inte kan skapa en dubblett. Samma nyckel inom 24 timmar ger tillbaka det ursprungliga resultatet i stället för att skriva igen.

    Gäller bara POST /v1-public-contacts och POST /v1-public-activities. Alla andra endpoints ignorerar huvudet, så gör de omförsöken säkra genom att läsa först.

    X-Idempotency-Key: 7d3f9c1e-2b84-4a17-9f0d-6c5e8a2b1d34

    Använd 8 till 128 tecken, unikt per operation. En UUID fungerar. En nyckel utanför den längden ignoreras, den avvisas inte.

    Nycklar gäller per arbetsyta och resurs och varar i 24 timmar. En upprepning svarar 200 med det första svaret. Idempotency-Key fungerar som alias.

    Matchning och kopplingar

    • Kontakter matchas på e-post, sedan telefon.
    • Företag matchas på domän (hämtas från en jobbadress när ingen skickas), sedan webbplats, sedan namn.
    • En aktivitet utan deal_id kopplas till företagets senaste öppna affär.
    • En koppling mappar dina egna fältnamn till de här fälten för importendpointarna. Kapslad JSON använder punktnotation, till exempel user.profile.email.

    Versionshantering

    Versionen ligger i sökvägen och upprepas i varje svar som meta.api_version och huvudet X-API-Version.

    Nya fält kan dyka upp i ett svar när som helst och räknas inte som en brytande ändring. Tolka defensivt och ignorera fält du inte känner igen, i stället för att validera mot en exakt form.

    En brytande ändring innebär ett nytt sökvägsprefix. Det befintliga fortsätter fungera genom processen nedan.

    Programversionen som visas på andra ställen i produkten är ett releasedatum, inte en API-version. De två rör sig oberoende av varandra.

    Policy för utfasning

    När en endpoint ska fasas ut säger den det i sina egna svar innan den slutar fungera.

    En endpoint under utfasning returnerar

    • Deprecationtrue
    • Sunsetdatumet då den slutar svara, som ett HTTP-datum.
    • Linkersättaren, med rel som pekar på efterföljande version.

    Sunset-datumet ligger minst sex månader efter att utfasningen aviserats. När det passerats returnerar endpointen 410 Gone och namnger sin ersättare.

    Under utfasning nu

    • POST /public-contactsPOST /v1-public-contactsSunset 26 november 2026
    • POST /public-activitiesPOST /v1-public-activitiesSunset 31 mars 2027

    Logga dessa huvuden. De är den tidigaste varning du får, och de kommer på svar som i övrigt lyckas.

    OpenAPI-beskrivning

    Hela avtalet publiceras som ett OpenAPI 3.1-dokument. Importera det i Postman eller Insomnia, generera en klient, eller jämför det mellan releaser för att se exakt vad som ändrats.

    Dokumentets adress
    https://lumenbase.io/api/openapi.json
    Hämta det
    curl -s https://lumenbase.io/api/openapi.json -o lumenbase-openapi.json

    Bästa praxis

    1. 1Ge varje integration en egen nyckel, så kan du återkalla en utan att bryta resten.
    2. 2Skicka en e-postadress med varje kontakt. Det är den mest tillförlitliga matchningen.
    3. 3Skicka X-Idempotency-Key när du gör om en import.
    4. 4Läs in kontakter i bulk via batch-endpointen.
    5. 5Skicka webbformulär till POST /v1-public-inbound-submissions med en nyckel som bara har inbound:submit. En läckt nyckel kan då bara skicka formulärsvar.
    6. 6Håll koll på X-RateLimit-Remaining, och vänta Retry-After vid en 429.
    7. 7Logga meta.request_id från varje svar. Supporten hittar ditt anrop med det.

    Kända begränsningar

    Beteende som inte stämmer med vad resten av den här sidan får dig att förvänta dig. Det står här eftersom det är sämre att upptäcka det i drift.

    • Två anrop med samma X-Idempotency-Key som skickas i samma ögonblick kan båda skriva.
    • activity_id i svaret från en kontaktimport kan inte hämtas via endpointarna för aktiviteter.
    • En importerad aktivitet behåller sin typ bara i importloggen. På tidslinjen är typen note.
    • Anrop som avvisas av minutgränsen räknas ändå mot dygnstaket.
    • Inbound-formulärsvar delar X-Idempotency-Key med kontakterna. En nyckel som redan använts på POST /v1-public-contacts ger samma svar igen. Skicka external_id i stället, det sparas per formulär.

    Inte en utvecklare?

    Använd Zapier för att koppla Lumenbase till 6 000+ appar, eller bläddra i Hjälpcentret.

    Hjälpcenter

    Behöver du en API-nyckel? Logga in och öppnaInställningarFöretagsinställningarAPI

    Kom igång