Request Details
A few things to note about how to create requests to the Skywalk API.
Request URL
Base URL
All requests start with our base V1 URL.
https://api.skywalkapi.com/v1/Authorization
Authorization is done through the header key X-API-KEY.
X-API-KEY=1288291.....Processing Mode
Some endpoints may take longer than usual based on the amount of data and setup of each Appfolio account. To account for this, you may configure the X-API-PROCESSING-MODE header to allow for longer processing.
The following is the supported values and how they impact timing:
| Setting | Max Duration To First Data* |
|---|---|
default | 24 seconds |
longer | 120 seconds |
Every data page returned bills one usage unit in either mode (see Rate Limits & Usage).
If the header is not set, the value default is the default.
X-API-PROCESSING-MODE=longerWaiting for results (wait)
Every request that starts work returns a job (see Polling and
Writing Data). The wait query parameter asks the API to
hold the connection until that job finishes and answer with the finished
result directly, instead of returning the updating envelope for you to poll.
wait is a whole number of seconds from 0 to 180. If the job has not
finished when the time is up, you get the same updating response you would
have gotten immediately — with the same meta.jobId — so an existing polling
loop keeps working unchanged; only the timing differs.
| Request | Default hold |
|---|---|
POST (writes) | 120 seconds for projects created after August 2026; 10 seconds for existing projects (near their previous latency). Contact support to change your project's default. |
GET (reads) | none — reads only hold when wait is set |
?wait=0 on a write turns the hold off for that request and returns the job
immediately. Values outside 0..180, or non-integers, are rejected with a
422 validation error rather than clamped.
If your HTTP client has its own request timeout, keep it above the
waityou send (plus a few seconds). A client timeout that fires mid-hold and retries thePOSTcreates the write twice — use?wait=0and poll instead when you cannot raise the client timeout.
POST /v1/tenant-charge?wait=60Filters and Settings
Any filters are done through query parameters. If you want to pass in a list of values, repeat the query parameter.
?propertyId=123&status=current&status=past