Aanvragen
Problemen oplossen bij aanvragen
Waar je moet kijken als een aanvraag werd geweigerd, een uitnodiging nooit aankwam, of een workflow nog wacht op een callback die al is gebeurd.
Een fout lezen
Elke weigering bevat twee dingen: een code voor het type fout, en een details.reason voor de specifieke oorzaak.
Vertak op de code; lees de reden om te weten wat je moet oplossen. Waar het helpt, noemt details ook het betreffende
field, de sleutels die geaccepteerd zouden zijn, of de optiesleutels die een keuzevraag aanneemt.
De aanvraagmethoden gebruiken vier codes: VALIDATION_ERROR (de aanroep klopte niet), CONFLICT (de aanvraag staat
in de verkeerde toestand, of een idempotency-sleutel is hergebruikt), NOT_FOUND, en UPGRADE_REQUIRED (een
abonnementsgrens of het maandelijkse quotum). Te snel aanroepen geeft in plaats daarvan RATE_LIMITED terug, met
retryAfterMs — zie de snelheidslimiet.
{
"ok": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "No field with key \"company\".",
"details": { "reason": "UNKNOWN_FIELD_KEY", "field": "prefill.company", "validKeys": ["company_name", "company_size"] }
}
}Redenen die je kunt tegenkomen
De aanroep goed krijgen
| Reden | Wat te doen |
|---|---|
| FORM_NOT_PUBLISHED | Publiceer het formulier. Een aanvraag legt een gepubliceerde versie vast, dus die moet er zijn. |
| UNKNOWN_FIELD_KEY | Geen veld met die sleutel, of hij hoort in het andere vak. Elke context-sleutel moet een verborgen veld zijn op het gepubliceerde formulier; stuur vrij invoerbare sleutels naar metadata. Controleer fields.list; validKeys toont de geaccepteerde sleutels. |
| CONTEXT_KEY_NOT_HIDDEN_FIELD | Je hebt een zichtbare vraag — of een berekend veld — in context gestuurd. Zichtbare vragen horen in prefill; berekende velden kunnen helemaal niet worden ingesteld. |
| INVALID_PREFILL_VALUE | Verkeerde vorm voor dat vraagtype. expectedType zegt wat er verwacht werd; stuur bij keuzevragen de optiesleutel, niet het label; een matrix neemt { "row_key": "column_key" }. expectedType "not_prefillable" betekent dat het veld geen waarde van de aanroeper aanneemt — een bestand, handtekening, betaling, afspraak, of berekend veld. |
| READONLY_REQUIRES_PREFILL | Een vergrendelde sleutel heeft geen waarde. Elke sleutel in readonly moet ook in prefill staan. |
| READONLY_REQUIRED_EMPTY | Een verplicht veld is vergrendeld met een lege waarde — de ontvanger zou nooit kunnen indienen. Geef een waarde op of stop met vergrendelen. |
| LANGUAGE_NOT_PUBLISHED | Die taal is niet gepubliceerd op de huidige versie. validKeys toont welke dat wel zijn. |
| INVALID_REMINDER_SCHEDULE | Een interval kon niet worden gelezen, hetzelfde interval komt twee keer voor, of er zijn meer dan vijf stappen. Gebruik positieve hele dagen, uren of minuten: 2d, 12h, 30m. |
| EXPIRY_OUT_OF_RANGE | expiresAt ligt in het verleden of meer dan 365 dagen in de toekomst. |
| CALLBACK_URL_NOT_ALLOWED | De URL is geen HTTPS, bevat inloggegevens, of leidt naar een privéadres. Localhost werkt niet — gebruik een tunnel. |
| DOMAIN_NOT_ALLOWED | Dat aangepaste domein is niet actief, of behoort tot een andere werkruimte. |
| INVALID_DOCUMENT_TARGET | Het formulier heeft geen Documentenblok, of het heeft er meer dan één en je hebt niet met field aangegeven welke. validKeys toont de bloksleutels. |
| DOCUMENT_NOT_UPLOADED | De upload was gereserveerd maar de bytes zijn nooit aangekomen. PUT het bestand eerst naar zijn uploadUrl. |
| DOCUMENT_INVALID | De geüploade bytes komen niet overeen met de grootte, het type of de sha256 die documents.create opgaf, of het type is geen PDF of afbeelding. |
| DOCUMENTS_TOO_MANY | Het blok zou meer dan 20 documenten tonen, de vaste documenten meegeteld. |
| DOCUMENTS_TOO_LARGE | Eén aanvraag mag in totaal 100 MB aan documenten bevatten, en 25 MB per document. |
| SCOPE_REQUIRED | Aanvragen opsommen vereist een werkruimte of een formulier om de lijst tot te beperken. |
| RECIPIENT_EMAIL_REQUIRED | E-maillevering of herinneringen vereisen recipient.email. |
| UPGRADE_REQUIRED | Het abonnement bevat de functie niet — herinneringen zijn Pro of Business, en een gastaccount kan geen uitnodigingen mailen. |
| FREE_INVITATIONS_USED | Dit Free-account heeft zijn 10 gratis uitnodigingen voorgoed verbruikt. Maak de aanvraag aan met "delivery": "none" en stuur de link zelf, of upgrade naar Pro. |
| MONTHLY_ALLOWANCE_REACHED | Het quotum van deze maand voor inzendingen en aanvragen is op. Elke aanvraag kost één eenheid zodra hij wordt aangemaakt, beantwoord of niet. Aanvragen die je al hebt aangemaakt kunnen nog worden beantwoord; nieuwe wachten tot de 1e van de maand (UTC) of op een upgrade. |
Handelen op een bestaande aanvraag
| Reden | Wat te doen |
|---|---|
| REQUEST_NOT_FOUND | Geen aanvraag met dat id in een werkruimte die dit token kan bereiken. |
| REQUEST_NOT_PENDING | Al voltooid, verlopen, of geannuleerd. Je kunt een afgeronde aanvraag niet herinneren of annuleren. |
| REMINDER_TOO_SOON | Er is minder dan tien minuten geleden een handmatige herinnering verstuurd. details.retryAfterMs zegt hoe lang je moet wachten. |
| REMINDER_CAP_REACHED | Deze aanvraag heeft alle acht herinneringen gehad die hij ooit zal krijgen, handmatig en gepland samen. |
| TEST_REQUEST | Je vroeg formbase een testaanvraag te e-mailen. Daarvoor wordt nooit iets gemaild — open de link zelf in plaats daarvan. |
| REQUEST_NOT_TERMINAL | Je vroeg om een callback opnieuw af te spelen voor een aanvraag die nog in behandeling is. Er is nog niets om opnieuw af te spelen. |
| NO_CALLBACK_TO_REPLAY | De aanvraag is aangemaakt zonder callbackUrl. |
| IDEMPOTENCY_CONFLICT | Die sleutel is gebruikt voor een andere inhoud. Gebruik een nieuwe sleutel, of stuur de oorspronkelijke inhoud ongewijzigd opnieuw. |
De uitnodiging is nooit aangekomen
Open de aanvraag op de pagina Aanvragen en lees de tijdlijn. De eerste uitnodigingsregel vertelt je in welk geval je zit.
| De tijdlijn zegt | Wat het betekent | Wat te doen |
|---|---|---|
| Uitnodiging in wachtrij | Geaccepteerd, nog niet verstuurd. | Geef het een minuutje. Blijft hij in de wachtrij staan, controleer dan of de aanvraag een ontvangeradres heeft. |
| Uitnodiging afgeleverd | Overgedragen aan de e-mailprovider. | Vraag hen de spamfolder te controleren. Versturen vanaf je eigen domein helpt — zie aangepaste e-maildomeinen. |
| Uitnodiging mislukt | formbase kon hem niet versturen — of de provider heeft hem gebounced, of de ontvanger heeft hem als spam gemarkeerd. | Lees deliveryStatus via requests.get: "failed" is meestal een abonnements- of adresprobleem, dus los het op en stuur een herinnering — die bevat dezelfde link (kopieer op Free de link en stuur hem zelf). "bounced" betekent dat het adres verkeerd of dood is — maak een nieuwe aanvraag voor het juiste adres; herinneren helpt dan niet. |
Helemaal geen tijdlijnregel
Dan is er nooit om een e-mail gevraagd. De aanvraag is aangemaakt met delivery: “none” — lever de link zelf af, of maak een
nieuwe aanvraag met delivery: “email”.
Uitnodigingen en herinneringen delen een budget van tien e-mails per dag per formulier en ontvangeradres, en één aanvraag mailt zijn ontvanger nooit meer dan negen keer in zijn hele bestaan — één uitnodiging en tot acht herinneringen.
De callback is nooit binnengekomen
De sectie Callback in het aanvraagpaneel toont de URL en de uitkomst. Callback mislukt na N pogingen betekent dat formbase het heeft geprobeerd en heeft opgegeven — acht pogingen over ongeveer vier uur.
Controleer de URL. Hij wordt getoond in het paneel. De resume-URL van een workflowtool hoort bij één run, en een run die is verwijderd of opnieuw is aangemaakt, reageert daar niet meer op.
Controleer wat je endpoint heeft teruggegeven. Alles buiten 2xx is een mislukking. Een 4xx anders dan 408 of 429 stopt de pogingen onmiddellijk — formbase leest dat als “je endpoint heeft dit geweigerd”, en identieke bytes opnieuw sturen kan daar niets aan veranderen.
Herstel de ontvanger, druk dan op Opnieuw afspelen. Dezelfde payload gaat opnieuw uit met hetzelfde gebeurtenis-id, dus een ontvanger die dedupliceert is veilig.
Mislukt de handtekeningcontrole?
Bijna altijd de ruwe body. Als je de JSON parseert en opnieuw serialiseert vóór het hashen, verschillen de bytes en zal de handtekening nooit overeenkomen. Hash de body precies zoals hij binnenkwam. De andere veelvoorkomende oorzaak is een opnieuw gegenereerd signing secret dat de ontvanger nog niet heeft opgepikt — er is geen overgangsperiode.
Andere dingen waar mensen tegenaan lopen
De ontvanger zegt dat de link een melding toont, niet het formulier. De aanvraag is definitief — voltooid, verlopen, of geannuleerd. Dat is de uitkomstpagina. Maak een nieuwe aanvraag als ze nog een keer moeten.
Een automatisering matcht niet meer na een bewerking — een antwoord ontbrak in de callback, of
requests.createbegon een sleutel te weigeren metUNKNOWN_FIELD_KEY. Een gepubliceerde veldsleutel is verdwenen: iemand heeft hem herschreven, of de vraag verwijderd en er een nieuwe voor in de plaats gezet. Hertitelen is veilig; beide andere niet. Typ de oude sleutel op het veld (sleutelicoon in de werkbalk → Sleutels) en publiceer opnieuw. Publiceren waarschuwt hiervoor voordat het gebeurt — zie Wanneer een gepubliceerde sleutel op het punt staat te verdwijnen.Vooraf invullen voor een bestandsupload of een handtekening wordt geweigerd. Die kunnen niet door een aanroeper worden aangeleverd —
fields.listmarkeert ze metprefillable: false.Er verschenen twee aanvragen voor één workflowrun. De run is opnieuw geprobeerd zonder
idempotencyKey. Geef de uitvoerings-id op als sleutel.