Fout-envelop
{
"error": {
"code": "asset_not_found",
"message": "No asset with id 42 for this shop",
"status": 404,
"request_id": "req_..."
}
}
Vermeld de request id wanneer u contact opneemt met de ondersteuning.
Veelvoorkomende foutcodes
| HTTP | Code | Betekenis |
|---|---|---|
| 400 | invalid_request | Ongeldige JSON of ontbrekend veld. |
| 400 | idempotency_key_required | Schrijfverzoek zonder Idempotency-Key. |
| 401 | unauthorized | Ontbrekend, ongeldig, onbekend of ingetrokken token. |
| 402 | plan_required | De winkel heeft het Free-abonnement. De externe API vereist een betaald abonnement. Bij een productupdatemelding betekent het ook dat het abonnement van de winkel niet actief is, en een campagne die om een van beide redenen is gestopt nadat ze in de wachtrij stond, meldt error: plan_required bij GET /notifications/{id}. |
| 403 | forbidden | De externe API is uitgeschakeld (de globale noodschakelaar), de API-sleutel mist een scope die het verzoek nodig heeft, of Alva heeft op de routes voor productupdatemeldingen die meldingen als noodrem uitgeschakeld. Neem contact met ons op als een sleutel met de juiste scopes dit antwoord krijgt. |
| 403 | notifications_suspended | Productupdatemeldingen zijn voor deze shop opgeschort na spamklachten over eerdere campagnes. Opnieuw proberen helpt niet — neem contact op met de ondersteuning. |
| 404 | asset_not_found, mapping_not_found, order_not_found, category_not_found, job_not_found | De resource ontbreekt of hoort bij een andere shop. |
| 404 | notification_not_found | De productupdatemelding ontbreekt of hoort bij een andere shop. |
| 409 | idempotency_conflict | Dezelfde sleutel is hergebruikt met een ander verzoek. |
| 409 | stamping_in_progress | Opnieuw verzenden is geblokkeerd zolang het PDF-stempelen nog loopt. |
| 409 | delivery_not_yet_released | Voor het product is een vertraagde downloadlevering ingesteld en de bestanden van de koper zijn nog niet vrijgegeven. error.details.release_at is het ISO 8601-tijdstip waarop ze vrijkomen; de merchant kan de bestelling eerder vrijgeven met het grant-downloads-endpoint. |
| 409 | notification_not_cancellable | Alleen een productupdatemelding in de wachtrij kan worden geannuleerd. Deze is al begonnen met verzenden, voltooid, mislukt of geannuleerd — error.details.status zegt welke. |
| 409 | app_not_installed | Alva heeft geen actieve Shopify-sessie voor de shop, meestal omdat de app is verwijderd, dus een verzoek dat Shopify nodig heeft, kan niet worden uitgevoerd — het schrijven van een koppeling, of een productupdatemelding waarvan de notitie een metaveld noemt of die variant_ids meestuurt. Open de app of installeer hem opnieuw in de Shopify-admin en probeer het daarna opnieuw. |
| 409 | multiple_mappings_match | Een Shopify-id komt overeen met meer dan één koppeling, dus Alva kan niet bepalen welke je bedoelt. Bij POST /products/{id}/notifications somt error.details.ambiguous_variant_ids de gevraagde varianten op die door meer dan één koppeling worden bediend. |
| 409 | personalized_product | Het product is gepersonaliseerd. Personalisatie geldt voor het hele product, dus POST /mappings met shopify_variant_ids kan er geen variantspecifieke koppeling aan toevoegen (er wordt niets geschreven), en POST /products/{id}/notifications kan de kopers niet op de hoogte stellen, omdat elke bestelling een eigen bestand heeft. |
| 422 | storage_quota_exceeded | De upload of import zou de opslagquota overschrijden. |
| 422 | key_limit_reached | De shop heeft al het maximum van 25 actieve API-sleutels; trek er eerst een in. |
| 422 | withdrawal_consent_required | De shop heeft toestemming voor het EU-herroepingsrecht ingeschakeld en de bestelling heeft nog geen toestemmingsrecord; download-URL's worden uitgegeven zodra de klant toestemming geeft. |
| 422 | email_disabled | Klant-e-mails staan uit in de e-mailinstellingen van de app. Wordt geretourneerd door het opnieuw versturen van een bestelmail, door POST /orders/{id}/assignments met send_email: true (er wordt niets aangemaakt), door POST /products/{id}/notifications en als het notify_customers-resultaat bij het schrijven van een koppeling (de koppeling zelf wordt wel opgeslagen). Zet ze aan en probeer het opnieuw. |
| 422 | invalid_message | De productupdatenotitie heeft een regel geschonden: leeg, te lang (ook zodra de variabelen zijn ingevuld), een onbekende of niet-gesloten variabele, meer dan vijf verschillende metavelden, een link of e-mailadres (ook in de waarde van een metaveld), of een metaveld dat ontbreekt, te lang is of een type heeft dat niet in een e-mail kan worden weergegeven. error.details.errors[] benoemt elke regel; error.details.max_length is het maximum (2.000). Er is niets verzonden of geschreven. Bij het schrijven van een koppeling met notify_customers weigeren alleen de regels over de eigen tekst van de notitie de schrijfactie; een probleem met een metaveld wordt gerapporteerd in data.notification nadat de koppeling is opgeslagen. |
| 422 | no_downloadable_content | Geen enkele beoogde koppeling heeft bestanden, packs of links om aan te kondigen; keys-only en gepersonaliseerde koppelingen kunnen niet het onderwerp van een productupdate zijn. Met variant_ids noemt error.details.mapping_ids de koppelingen waarnaar die varianten zijn herleid, wanneer het product een andere koppeling heeft waarvoor een melding mogelijk is. |
| 422 | no_eligible_recipients | Niemand om te mailen: geen koper van de beoogde koppelingen is aangemeld. error.details.opted_out_count zegt hoeveel zich hebben afgemeld. Een gloednieuwe koppeling heeft nog geen kopers. |
| 429 | rate_limited | De limiet voor API-sleutels of het opnieuw verzenden van bestellingen is bereikt. |
| 429 | notification_cooldown | Eén productupdatemelding per product per 7 dagen, over al zijn varianten en elke bron — of er staat nog een campagne voor het product in de wachtrij of wordt verzonden. Dit is niet de token bucket: Retry-After kan tot zeven dagen zijn en error.details.next_available_at is het moment waarop het product weer vrij is. Probeer het niet automatisch opnieuw — plan de volgende aanroep op next_available_at. Een campagne annuleren reset de limiet niet; gebruik dry_run om een notitie te controleren voordat je verzendt. |
| 429 | too_many_active_notifications | De shop heeft al 5 productupdatemeldingen in de wachtrij of in verzending, over alle producten en elke bron. error.details.limit is het maximum en error.details.active_notification_ids somt die campagnes op, de oudste eerst. Er is geen Retry-After: poll GET /notifications/{id} voor een ervan en probeer het opnieuw zodra die klaar is. Een dry run wordt op dezelfde manier geweigerd; bij het schrijven van een koppeling wordt dit in plaats daarvan gerapporteerd in data.notification. |
| 500 | internal_error | Onverwachte serverfout. Bij POST /products/{id}/notifications geeft elke 500 de Idempotency-Key vrij, dus probeer hetzelfde verzoek opnieuw met dezelfde sleutel. Drie gevallen zijn daar te verwachten: Shopify kon de metavelden van het product voor de notitie niet teruggeven, Shopify kon de gevraagde variant_ids niet bevestigen, of het aanmaken wachtte meer dan 8 seconden achter de andere aanmaakverzoeken van de shop. Heeft de mislukte poging de campagne toch in de wachtrij gezet, dan wordt de nieuwe poging geweigerd met 429 notification_cooldown in plaats van een tweede te starten. |
API-documentatie
Was dit nuttig?
Laatst bijgewerkt 2026-10-20