{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["contact-vba","partial"]},"type":"markdown"},"seo":{"title":"Support and escalation"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"support-and-escalation","__idx":0},"children":["Support and escalation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This page is for developers who have hit a VBAPI problem they cannot solve from the documentation. It explains what to collect before you contact VBA, how to find the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["activityID"]}," that lets VBA find your request in its logs, and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#contact-vba"},"children":["where to get in touch"]},"."]},{"$$mdtype":"Tag","name":"ContactVba","attributes":{"compact":true},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"before-you-contact-support","__idx":1},"children":["Before you contact support"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Many problems have a known cause. Check these first:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The AI assistant: select the chat button on any page to ask about these docs. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/ai/overview"},"children":["AI and MCP"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/help/faq"},"children":["FAQ"]},", which starts with the most common first-call errors."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/concepts/errors"},"children":["Errors and troubleshooting"]},", for what each status code means and what to do."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/concepts/rate-limits-and-performance"},"children":["Rate limits and performance"]},", if you are getting ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["429"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-to-send","__idx":2},"children":["What to send"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Contacting support"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Send VBA support:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["debug.activityID"]}," from the response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the date and time of the call, with time zone"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the method and path, for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /claim-batches"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the full ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error"]}," object from the response"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the request body, with passwords, tokens, and personal data removed"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Never send your password, API key, or tokens. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/help/support"},"children":["Support and escalation"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Also include:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the HTTP status code you received"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["the database you called, which is the value of your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vbasoftware-database"]}," header"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["whether the problem happens every time or only sometimes, and when it started"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["for a workflow problem, the IDs of the records involved (for example the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["subscriber_ID"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth_Number"]},") rather than names or other personal details"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Never send your password, API key, ID token, or real member data such as names, birth dates, or Social Security numbers."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"find-the-activityid","__idx":3},"children":["Find the activityID"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every JSON response has the same envelope, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["debug.activityID"]}," identifies the request in VBA's logs:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["JSON responses are wrapped in the same envelope:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": { },\n  \"error\": null,\n  \"debug\": { \"activityID\": \"00000000-0000-0000-0000-000000000000\" }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["data"]}," holds the result: one object for a get, create, or update, and an array for a list."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," on success. On failure it is a problem-details object with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["title"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["detail"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["instance"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["debug.activityID"]}," identifies the request in VBA's logs. Successful responses spell it ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["activityID"]},"; error responses spell it ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ActivityID"]},", so read the property without regard to case (the sample clients do). Log it with every failure and include it when you contact support."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Not every response has an envelope. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["204 No Content"]}," (deletes) has no body, some ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["202 Accepted"]}," responses for queued work return only a short confirmation message, and the API gateway answers ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"message\":\"Unauthorized\"}"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"message\":\"Forbidden\"}"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["How to get it:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["From a response:"]}," read ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["debug.activityID"]}," from the body. The name is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["activityID"]},", with a capital ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ID"]},"; ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["activityId"]}," does not exist."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["From the documentation samples:"]}," the shared helpers put it on their error types, as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VbapiException.ActivityId"]}," in C#, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VbapiError.activity_id"]}," in Python, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VbapiError.activityId"]}," in TypeScript, and include it in the error message. Successful responses expose it as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ActivityId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["activity_id"]},", or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["activityId"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["In your own code:"]}," log ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["debug.activityID"]}," with the method, path, status code, and time of every failed call, so you have it when you need it."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Some responses have no body, and so no ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["activityID"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["204 No Content"]}," from a delete, some ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["202 Accepted"]}," responses for queued work that return only a short message, and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401 Unauthorized"]},". For these, send the time of the call (with time zone), the method and path, and the status code."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"contact-vba","__idx":4},"children":["Contact VBA"]},{"$$mdtype":"Tag","name":"ContactVba","attributes":{"compact":false},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["API keys, credentials, billing, and account administration:"]}," contact your VBA Account Executive, or whoever at VBA issued your credentials. If you do not know who that is, use the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://vbasoftware.com/contact/"},"children":["online contact form"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-new-credentials","__idx":5},"children":["Request new credentials"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["API keys, client IDs, client codes, database names, and API users are issued by VBA. To get new ones, replace a compromised key, or add a database, ask your VBA Account Executive (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/help/support#contact-vba"},"children":["Contact VBA"]},"). See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/get-started/credentials-and-environments"},"children":["Credentials and environments"]}," for what each credential is."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-a-higher-rate-limit","__idx":6},"children":["Request a higher rate limit"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The limit is 25 requests per second sustained, with bursts up to 50, per API key. If your integration needs more, ask VBA through one of the channels in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/help/support#contact-vba"},"children":["Contact VBA"]}," and describe the workload: which operations, how many requests, and at what times. Before you ask, check the advice in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/concepts/rate-limits-and-performance"},"children":["Rate limits and performance"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related","__idx":7},"children":["Related"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/help/faq"},"children":["FAQ"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/concepts/errors"},"children":["Errors and troubleshooting"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/developer-portal/concepts/requests-and-responses"},"children":["Requests and responses"]}]}]}]},"headings":[{"value":"Support and escalation","id":"support-and-escalation","depth":1},{"value":"Before you contact support","id":"before-you-contact-support","depth":2},{"value":"What to send","id":"what-to-send","depth":2},{"value":"Find the activityID","id":"find-the-activityid","depth":2},{"value":"Contact VBA","id":"contact-vba","depth":2},{"value":"Request new credentials","id":"request-new-credentials","depth":3},{"value":"Request a higher rate limit","id":"request-a-higher-rate-limit","depth":3},{"value":"Related","id":"related","depth":2}],"frontmatter":{"title":"Support and escalation","description":"What to send VBA support about a VBAPI problem, how to find the activityID of a request, and how to contact VBA.","seo":{"title":"Support and escalation"}},"lastModified":"2026-10-26T21:09:33.693Z","pagePropGetterError":{"message":"","name":""}},"slug":"/developer-portal/help/support","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}