Skip to content Skip to content

HTTP

The http adapter sends a JSON webhook request to a service you control. Use it when the runtime is remote, long-lived, or already exposed as an API instead of a local command.

Info: http is a built-in internal adapter used by Paperclip’s runtime. It’s currently shown as “Coming soon” in the agent-config adapter-type dropdown and can’t be selected manually. To target it today, configure the agent via the API or an imported company export.


  • The agent runs in the cloud or behind another service.
  • You want Paperclip to trigger a webhook and let the remote service do the rest.
  • The runtime already expects a JSON body and returns a simple success or failure response.
  • The runtime is just a local script or command. Use Process.
  • You need session persistence or built-in CLI behavior. Use one of the local adapters instead.
  • You need Paperclip to parse a rich stdout transcript from the remote runtime.

FieldRequiredNotes
urlyesAbsolute http:// or https:// endpoint.
methodnoHTTP method to use. Defaults to POST.
headersnoExtra request headers.
payloadTemplatenoJSON object merged into the request body before the standard Paperclip fields are added.
timeoutMsnoRequest timeout in milliseconds. 0 means no timeout.

Note: The HTTP adapter does not run a child process. It sends a single request, waits for the response, and treats any non-2xx response as a failure.


Paperclip sends a JSON payload that always includes:

  • runId
  • agentId
  • context

Any payloadTemplate fields are merged in first, then Paperclip adds the standard fields above. If a key collides, the standard Paperclip field wins.

Example body shape:

{
"runId": "run-123",
"agentId": "agent-123",
"context": {
"taskId": "issue-123",
"wakeReason": "scheduled",
"commentId": null
},
"customField": "value"
}

Your service can use PAPERCLIP_API_URL and a Paperclip API key to call back into the control plane after it finishes.


The Test Environment button checks:

  • The URL is present and uses http or https.
  • The configured method is valid.
  • The endpoint responds to a quick HEAD probe when reachable.

If the probe fails in a private network, that can still be acceptable. The important part is whether the runtime can actually receive the production request.


{
"adapterType": "http",
"adapterConfig": {
"url": "https://agent.example.com/paperclip/heartbeat",
"method": "POST",
"headers": {
"Authorization": "Bearer <shared-secret>"
},
"payloadTemplate": {
"source": "paperclip"
},
"timeoutMs": 10000
}
}

  • Use a shared secret or header-based auth on the remote service.
  • Keep the endpoint idempotent when possible because retries are easier to support.
  • Return a 2xx response when the webhook was accepted, not when all follow-up work is complete.