Set the GrabzIt callback to an absolute URL on a server reachable from the public internet, then use the callback’s id to retrieve the completed capture. A callback cannot reach localhost or 127.0.0.1. For a local workflow without a public handler, use the synchronous SaveTo/save_to method supported by your language library.
What a GrabzIt callback URL does
A callback URL is the address of your server-side handler. GrabzIt calls it after processing a screenshot or HTML conversion. The handler receives callback data as GET parameters; use the capture’s id with the result-retrieval method for your chosen client library. The callback is a later notification, not the screenshot itself. GrabzIt’s REST API documentation describes the callback parameter, while its Node.js and Java callback-handler documentation describe callback values.
Set up a public callback endpoint
1. Create a stable handler route
Make a route such as https://example.com/hooks/grabzit that your server can receive from the internet. It must be an absolute public URL: a relative path, localhost, or 127.0.0.1 will not work. If a newly configured domain has not propagated yet, GrabzIt’s troubleshooting guidance suggests temporarily using the server’s public IP address. See GrabzIt’s callback URL troubleshooting page.
2. Pass the callback when requesting the capture
For the REST API, provide the handler URL in the callback parameter and URL-encode parameter values. Keep the Application Key on your server: GrabzIt warns against making REST API calls from client-side code because that exposes the key. Its REST documentation also describes customid, which is returned with a specified callback URL, and authorizing IP addresses to restrict which servers can access the API. For a client library, use the callback argument and method documented for that language; parameter names and casing vary. The Node.js library, for example, documents asynchronous save(callBackUrl, oncomplete) and a synchronous save_to method. Consult the Node.js technical documentation rather than assuming SDKs use identical signatures.
Recommended Free Tools
#1 Best Overall
3. Process callback data and retrieve the capture
The official Node.js and Java handler documentation lists these callback values: id, filename, message, customId, format, and targeterror. Use id to request the completed result through the relevant library’s result-retrieval method; Node.js documents get_result. Treat message and targeterror as potential error information, and use customId to correlate a callback with your own request when helpful. Validate incoming data and handle failures rather than treating every callback as a successful image.
Choose callback or synchronous saving
| Approach | When it fits | Completion behavior |
|---|---|---|
| Asynchronous callback | Your application has a public handler endpoint and can accept a later notification. | GrabzIt calls the handler after processing; retrieve the result using the capture ID. |
Synchronous SaveTo/save_to |
You do not have a publicly reachable callback handler, including during local development. | The documented library method saves synchronously without a callback URL. |
The PHP API documentation describes SaveTo for localhost or when a public callback handler is unavailable. Node.js documents save_to as the synchronous, callback-free alternative. These sources distinguish the completion workflows but do not establish a performance advantage for either one.
Display a screenshot in a web page
Do not expect a screenshot to be available in the same step that starts an asynchronous capture. Store a unique correlation value such as customId, let the callback record that the result is ready, and have the page check readiness before displaying the image. GrabzIt’s guidance for this pattern is in Display a screenshot with a callback handler. The page should show a pending state while capture is processing and a useful error state if the callback reports a problem.
Rank #2
Test the handler before relying on it
- Make sure a capture already exists in your GrabzIt account.
- Open Diagnostics and select an item from the Out column.
- Choose “Send to Callback Handler,” enter the handler URL, and optionally provide fields such as a Custom ID.
- Send the test and confirm your server receives the request and processes the values as expected.
These are the steps in GrabzIt’s callback-handler test instructions; the documented flow tests an existing capture.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Common callback URL problems
- “You are trying to use a Callback URL that does not exist!” Check that the URL is absolute, publicly reachable, and points to the actual handler route. Do not use
localhostor127.0.0.1. If a new domain has not propagated, try the public server IP temporarily, as GrabzIt suggests in its troubleshooting guidance. - The handler is never reached during local development. A local-only address is not reachable by GrabzIt. Use the library’s synchronous
SaveTo/save_tooption where documented, or deploy the handler to a public server. - The callback arrives but the screenshot is missing. Treat the callback as a notification containing an identifier, not as the image payload. Use
idwith the result-retrieval method in your library. - The page shows no image immediately. Capture generation and callback delivery are asynchronous. Record the request’s correlation ID, check readiness, and display only after the result is ready.
- Callback fields or method names do not match an example. SDK parameter names differ. Follow the documentation for the language in use; Node.js, for example, documents
save(callBackUrl, oncomplete)andsave_to. - A browser-side integration would expose credentials. Keep the REST request and Application Key server-side; GrabzIt cautions against calling its REST API from client-side code.
Or skip the browser setup
If you need a screenshot endpoint rather than a GrabzIt callback workflow, ScreenshotNeo returns a screenshot from one GET request. This is a different integration pattern from configuring GrabzIt’s callback handler; the example below makes a direct capture request.
ScreenshotNeo API documentation
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Cookie banners are accepted and removed before the shot, along with supported newsletter popups and chat widgets; each cleanup step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status. An MCP server provides screenshot tools for AI agents, and the free plan includes 1,000 shots per month without a card; paid plans start at $5 for 3,000 shots.
Sign up for ScreenshotNeo’s free 1,000 screenshots a month, with no card required.
Rank #3
Frequently Asked Questions
Can GrabzIt send a callback to localhost?
No. The callback host must be publicly reachable; use the documented synchronous library method for a local-only workflow.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchDoes the callback contain the screenshot file?
The documented callback fields include the capture ID and other metadata. Use the ID with the chosen library’s result-retrieval method.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




