openapi: 3.1.0 info: title: Actions API description: Public access to Zapier Stored Actions and the runs that execute them — create, list, retrieve, update, and delete stored actions; trigger runs and fetch run results. version: v1 contact: url: https://docs.zapier.com servers: - url: https://api.zapier.com description: Production tags: - name: Stored Actions description: Operations related to a Stored Action security: - OAuth: [] paths: /actions/v1/stored-actions: get: operationId: listStoredActions description: 'Stored Actions endpoints handle the creation, execution, updates, and deletions of single created actions.' summary: List stored actions tags: - Stored Actions security: - OAuth: - external responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoredActionRecordListResponse' examples: Success: value: results: - type: stored_action id: 01932123-02ea-01fc-3fbd-4d66d944064d connection_id: 019320ab-0000-7000-8000-abcdef012345 selected_api: SplitwiseCLIAPI@1.0.0 action_key: new_contact action_type: read inputs: first_name: John last_name: Doe meta: limit: 1 offset: 0 count: 1 links: next: null description: 'Success: Includes all the Stored Actions for the caller. This could be an empty list.' headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '400': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: BadRequest: value: errors: - status: 400 code: bad_request title: Bad Request detail: Improperly formatted or incompleted request source: null meta: {} summary: Bad Request description: Indicates an error executing the request to list Stored Actions. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '403': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: PermissionDenied: value: errors: - status: 403 code: permission_denied detail: User does not have enough permissions to perform action summary: Permission Denied description: Permission denied. Unauthorized request. '429': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: TooManyRequests: value: errors: - status: 429 code: too_many_requests detail: Rate limit exceeded. Too many requests. summary: Too Many Requests description: Too many requests. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true '500': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: UnhandledOrExternalServiceError: value: errors: - status: 500 code: external_service_error detail: An error occurred with an external service. summary: Unhandled or External Service Error description: Internal Server Error headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '503': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: ServiceUnavailableError: value: errors: - status: 503 code: service_unavaiable detail: Service is temporarily unavailable summary: Service Unavailable Error description: Service Unavailable headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true post: operationId: createStoredAction description: 'Create Stored Action Creates a new stored action entry that can then be executed from a simpler call to /stored-actions with just the stored action `id`. This will not execute a StoredAction. This is an async process and will only respond with the id of the stored action and other meta data, and it is the callers responsibility to poll GET /stored-actions/{stored_action_id}/runs/{run_id} with the run id returned from POST /stored-actions/{stored_action_id}/run to fetch the results after executing a stored action. The triple (selected_api, action_type, action_key) is required to create a stored action. Only core actions are supported; external and custom (App Extension) actions cannot be created as stored actions via this endpoint. **Note on `connection_id`:** Other Zapier APIs may expose the same identifier under the field name `authentication_id`. The value is the same UUID — pass it here under the `connection_id` key.' summary: Create a stored action tags: - Stored Actions requestBody: content: application/json: schema: $ref: '#/components/schemas/StoredActionsCreateRequest' examples: ExamplePOSTRequest: value: data: connection_id: 019320ab-0000-7000-8000-abcdef012345 selected_api: SplitwiseCLIAPI@1.0.0 action_key: new_contact action_type: read inputs: first_name: John last_name: Doe summary: Example POST Request required: true security: - OAuth: - external responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoredActionsCreateResponse' examples: Success: value: type: stored_action id: 123e4567-e89b-12d3-a456-426614174000 description: A StoredAction record was successfully created. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '400': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: BadRequest: value: errors: - status: 400 code: bad_request title: Bad Request detail: Improperly formatted or incompleted request source: null meta: {} summary: Bad Request description: Indicates an error creating a StoredAction record. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '403': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: PermissionDenied: value: errors: - status: 403 code: permission_denied detail: User does not have enough permissions to perform action summary: Permission Denied description: Permission denied. Unauthorized request. '429': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: TooManyRequests: value: errors: - status: 429 code: too_many_requests detail: Rate limit exceeded. Too many requests. summary: Too Many Requests description: Too many requests. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true '500': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: UnhandledOrExternalServiceError: value: errors: - status: 500 code: external_service_error detail: An error occurred with an external service. summary: Unhandled or External Service Error description: Internal Server Error headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '503': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: ServiceUnavailableError: value: errors: - status: 503 code: service_unavaiable detail: Service is temporarily unavailable summary: Service Unavailable Error description: Service Unavailable headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true /actions/v1/stored-actions/{stored_action_id}: get: operationId: getStoredAction description: 'Stored Actions endpoints handle the creation, execution, updates, and deletions of single created actions.' summary: Get a stored action parameters: - in: path name: stored_action_id schema: type: string format: uuid required: true tags: - Stored Actions security: - OAuth: - external responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoredActionRecord' examples: Success: value: type: stored_action id: 01932123-02ea-01fc-3fbd-4d66d944064d connection_id: 019320ab-0000-7000-8000-abcdef012345 selected_api: SplitwiseCLIAPI@1.0.0 action_key: new_contact action_type: read inputs: first_name: John last_name: Doe description: 'Success: Includes data for the requested Stored Action.' headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '400': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: BadRequest: value: errors: - status: 400 code: bad_request title: Bad Request detail: Improperly formatted or incompleted request source: null meta: {} summary: Bad Request description: Imporoperly formatted or incomplete request. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '404': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: Error: value: errors: - status: 404 code: not_found title: Resource not found. detail: Here's a more readable explanation of what happened. source: pointer: /path/to/field meta: {} description: No results found for this Stored Action id. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '403': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: PermissionDenied: value: errors: - status: 403 code: permission_denied detail: User does not have enough permissions to perform action summary: Permission Denied description: Permission denied. Unauthorized request. '429': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: TooManyRequests: value: errors: - status: 429 code: too_many_requests detail: Rate limit exceeded. Too many requests. summary: Too Many Requests description: Too many requests. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true '500': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: UnhandledOrExternalServiceError: value: errors: - status: 500 code: external_service_error detail: An error occurred with an external service. summary: Unhandled or External Service Error description: Internal Server Error headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '503': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: ServiceUnavailableError: value: errors: - status: 503 code: service_unavaiable detail: Service is temporarily unavailable summary: Service Unavailable Error description: Service Unavailable headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true patch: operationId: updateStoredAction description: 'Stored Actions endpoints handle the creation, execution, updates, and deletions of single created actions.' summary: Update a stored action parameters: - in: path name: stored_action_id schema: type: string format: uuid required: true tags: - Stored Actions requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedStoredActionsUpdateRequest' examples: ExamplePATCHRequest: value: data: connection_id: 019320ab-0000-7000-8000-abcdef012345 selected_api: SplitwiseCLIAPI@1.0.0 action_key: new_contact action_type: read inputs: first_name: John last_name: Doe summary: Example PATCH Request security: - OAuth: - external responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoredActionRecord' examples: Success: value: type: stored_action id: 01932123-02ea-01fc-3fbd-4d66d944064d connection_id: 019320ab-0000-7000-8000-abcdef012345 selected_api: SplitwiseCLIAPI@1.0.0 action_key: new_contact action_type: read inputs: first_name: John last_name: Doe description: A StoredAction record was successfully updated. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '400': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: BadRequest: value: errors: - status: 400 code: bad_request title: Bad Request detail: Improperly formatted or incompleted request source: null meta: {} summary: Bad Request description: Indicates an error updating a StoredAction record. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '403': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: PermissionDenied: value: errors: - status: 403 code: permission_denied detail: User does not have enough permissions to perform action summary: Permission Denied description: Permission denied. Unauthorized request. '429': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: TooManyRequests: value: errors: - status: 429 code: too_many_requests detail: Rate limit exceeded. Too many requests. summary: Too Many Requests description: Too many requests. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true '500': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: UnhandledOrExternalServiceError: value: errors: - status: 500 code: external_service_error detail: An error occurred with an external service. summary: Unhandled or External Service Error description: Internal Server Error headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '503': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: ServiceUnavailableError: value: errors: - status: 503 code: service_unavaiable detail: Service is temporarily unavailable summary: Service Unavailable Error description: Service Unavailable headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true delete: operationId: deleteStoredAction description: 'Stored Actions endpoints handle the creation, execution, updates, and deletions of single created actions.' summary: Delete a stored action parameters: - in: path name: stored_action_id schema: type: string format: uuid required: true tags: - Stored Actions security: - OAuth: - external responses: '204': description: A StoredAction record was successfully deleted. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '400': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: BadRequest: value: errors: - status: 400 code: bad_request title: Bad Request detail: Improperly formatted or incompleted request source: null meta: {} summary: Bad Request description: Indicates an error deleting a StoredAction record. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '403': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: PermissionDenied: value: errors: - status: 403 code: permission_denied detail: User does not have enough permissions to perform action summary: Permission Denied description: Permission denied. Unauthorized request. '429': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: TooManyRequests: value: errors: - status: 429 code: too_many_requests detail: Rate limit exceeded. Too many requests. summary: Too Many Requests description: Too many requests. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true '500': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: UnhandledOrExternalServiceError: value: errors: - status: 500 code: external_service_error detail: An error occurred with an external service. summary: Unhandled or External Service Error description: Internal Server Error headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '503': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: ServiceUnavailableError: value: errors: - status: 503 code: service_unavaiable detail: Service is temporarily unavailable summary: Service Unavailable Error description: Service Unavailable headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true /actions/v1/stored-actions/{stored_action_id}/run: post: operationId: createStoredActionRun description: "Execute Stored Action\n\nExecutes an action on behalf of a user,\ \ this is an async process.\n\nRequires the id from a stored action\n\nResponds\ \ with the unique id for this run of the stored action. In order to fetch\ \ results\nyou will need to poll the GET /stored-actions/{stored_action_id}/runs/{run_id}\ \ endpoint\nwith that run id.\n\n**Billing**\n\nThe Actions API offers support\ \ for directly billing users for Stored Action\nRuns, and this functionality\ \ is currently _opt-in_. To do this, you\nmust provide a `billing` claim on\ \ the JWT used to authenticate. This\nclaim must be a JSON string, and any\ \ values provided will override the\ndefault configuration shown below. The\ \ simplest approach is therefore\nto set `is_billable` to true, and successful\ \ Stored Action Runs will be\ncharged to a user at a rate of one task.\n\n\ ```json\nbilling: {\n \"is_billable\": false,\n \"origin\": \"actions_api\"\ ,\n \"usage_type\": \"action_run\",\n \"description\": \"an action was\ \ run via Actions API\",\n \"exemption_reason\": null,\n \"exemption_details\"\ : null\n}\n```\n\n**Rate Limits**\n\nRate limiting is applied when Gargoyle\ \ flag `edge_actions_api_rate_limiting_global`\nis active. Requests are rate\ \ limited by default unless the JWT explicitly sets\n`rate_limit.exempt` to\ \ true.\n\n```json\nrate_limit: {\n \"exempt\": true\n}\n```\n\nNon-exempted\ \ requests are limited to 200 per 5 minutes by default. To set a custom\n\ limit, include `limit_override` (1–1000 requests per 5 minutes):\n\n```json\n\ rate_limit: {\n \"exempt\": false,\n \"limit_override\": 500\n}\n```" summary: Run a stored action parameters: - in: path name: stored_action_id schema: type: string format: uuid required: true tags: - Stored Actions requestBody: content: application/json: schema: $ref: '#/components/schemas/StoredActionsRunRequest' examples: ExamplePOSTRequest: value: data: inputs: message: Hello World! page: '0' summary: Example POST Request required: true security: - OAuth: - external responses: '202': content: application/json: schema: $ref: '#/components/schemas/StoredActionsRunResponse' examples: Accepted: value: data: type: run id: 123e4567-e89b-12d3-a456-426614174000 description: Acknowledges the request to execute a StoredAction headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '400': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: BadRequest: value: errors: - status: 400 code: bad_request title: Bad Request detail: Improperly formatted or incompleted request source: null meta: {} summary: Bad Request description: Indicates an error executing the request to run a StoredAction. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '403': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: PermissionDenied: value: errors: - status: 403 code: permission_denied detail: User does not have enough permissions to perform action summary: Permission Denied description: Permission denied. Unauthorized request. '429': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: TooManyRequests: value: errors: - status: 429 code: too_many_requests detail: Rate limit exceeded. Too many requests. summary: Too Many Requests description: Too many requests. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true '500': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: UnhandledOrExternalServiceError: value: errors: - status: 500 code: external_service_error detail: An error occurred with an external service. summary: Unhandled or External Service Error description: Internal Server Error headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '503': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: ServiceUnavailableError: value: errors: - status: 503 code: service_unavaiable detail: Service is temporarily unavailable summary: Service Unavailable Error description: Service Unavailable headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true '402': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: PaymentRequired: value: errors: - status: 402 code: payment_required title: Payment Required detail: Insufficient tasks on account summary: Payment Required description: Payment Required - insufficient tasks on account headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '424': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: PartnerAPITemporarilyUnavailable: value: errors: - status: 424 code: partner_api_unhealthy title: Partner API Temporarily Unavailable detail: The app's API is currently unhealthy. Retry the request later. summary: Partner API Temporarily Unavailable description: Failed Dependency - the partner API is temporarily unhealthy headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 200. Maximum via limit_override: 1000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. /actions/v1/stored-actions/{stored_action_id}/runs/{run_id}: get: operationId: getStoredActionRun description: 'Fetch Stored Action Run Requires the id returned from a call to /stored-actions/{stored_action_id}/run to execute the stored action. The status code returned by this call does NOT denote the status of the action in an external system, but the status of the action processing from Zapier. Results are stored for seven days after the action was initially executed.' summary: Get stored action run results parameters: - in: path name: run_id schema: type: string format: uuid required: true - in: path name: stored_action_id schema: type: string format: uuid required: true tags: - Stored Actions security: - OAuth: - external responses: '200': content: application/json: schema: $ref: '#/components/schemas/StoredActionResult' examples: Success: value: type: run status: success results: - key: value next_page: '0' errors: [] description: 'Success: Includes the results of the task run.' headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 600. Maximum via limit_override: 3000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '202': description: The request is still processing, try fetching results again later. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 600. Maximum via limit_override: 3000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '400': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: BadRequest: value: errors: - status: 400 code: bad_request title: Bad Request detail: Improperly formatted or incompleted request source: null meta: {} summary: Bad Request description: Imporoperly formatted or incomplete request. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 600. Maximum via limit_override: 3000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '404': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: Error: value: errors: - status: 404 code: not_found title: Resource not found. detail: Here's a more readable explanation of what happened. source: pointer: /path/to/field meta: {} description: No results found for this run. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 600. Maximum via limit_override: 3000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '403': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: PermissionDenied: value: errors: - status: 403 code: permission_denied detail: User does not have enough permissions to perform action summary: Permission Denied description: Permission denied. Unauthorized request. '429': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: TooManyRequests: value: errors: - status: 429 code: too_many_requests detail: Rate limit exceeded. Too many requests. summary: Too Many Requests description: Too many requests. headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 600. Maximum via limit_override: 3000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true '500': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: UnhandledOrExternalServiceError: value: errors: - status: 500 code: external_service_error detail: An error occurred with an external service. summary: Unhandled or External Service Error description: Internal Server Error headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 600. Maximum via limit_override: 3000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. '503': content: application/json: schema: $ref: '#/components/schemas/ActionsErrorResponse' examples: ServiceUnavailableError: value: errors: - status: 503 code: service_unavaiable detail: Service is temporarily unavailable summary: Service Unavailable Error description: Service Unavailable headers: X-RateLimit-Limit: schema: type: integer description: 'Effective request cap per 300-second window. Default: 600. Maximum via limit_override: 3000.' X-RateLimit-Remaining: schema: type: integer description: Requests remaining in the current window. X-RateLimit-Reset: schema: type: string format: date-time description: Unix timestamp when the current 300-second window resets. Retry-After: schema: type: integer description: Seconds to wait before retrying. required: true components: schemas: ActionTypeEnum: enum: - read - read_bulk - write - run - search - search_or_write - search_and_write - filter - tool type: string description: '* `read` - Read * `read_bulk` - Read Bulk * `write` - Write * `run` - Run * `search` - Search * `search_or_write` - Search Or Write * `search_and_write` - Search And Write * `filter` - Filter * `tool` - Tool' ActionsError: type: object description: Base Error definition properties: status: type: integer description: The HTTP status code applicable to this problem. code: type: string description: A unique identifier for this particular occurrence of the problem. title: type: string description: A short summary of the problem. detail: type: string description: A human-readable explanation specific to this occurrence of the problem. source: oneOf: - $ref: '#/components/schemas/ActionsErrorSource' - type: 'null' description: An object containing references to the primary source of the error. meta: type: - object - 'null' additionalProperties: {} description: Any additional metadata about the error. ActionsErrorResponse: type: object properties: errors: type: array items: $ref: '#/components/schemas/ActionsError' description: An array of error objects. required: - errors ActionsErrorSource: type: object description: Populates the `source` object inside our error responses. properties: pointer: type: string description: Pointer to the value in the request document that caused the error e.g. `/actions`. parameter: type: string description: A string indicating which URI query parameter caused the error. header: type: string description: A string indicating the name of a single request header which caused the error. ActionsFetchError: type: object description: The error information returned from a third party when running an action. properties: code: allOf: - $ref: '#/components/schemas/CodeEnum' description: 'Error type of the result object. * `user` - user * `authentication` - authentication * `partner` - partner * `system` - system * `throttled` - throttled * `system_throttled` - system_throttled * `hydration` - hydration * `authentication_access` - authentication_access' title: type: string description: A short summary of the problem. detail: type: string description: A human-readable explanation specific to this occurrence of the problem. delay: type: integer description: When a partner throttled the execution call (error_type = throttled), this value will hold the number of seconds to wait before retrying. meta: type: - object - 'null' additionalProperties: {} description: Any additional error information returned from the partner. CodeEnum: enum: - user - authentication - partner - system - throttled - system_throttled - hydration - authentication_access type: string description: '* `user` - user * `authentication` - authentication * `partner` - partner * `system` - system * `throttled` - throttled * `system_throttled` - system_throttled * `hydration` - hydration * `authentication_access` - authentication_access' PatchedStoredActionsUpdateRequest: type: object properties: data: $ref: '#/components/schemas/StoredActionUpdateRequestParams' StatusA45Enum: enum: - error - success - waiting type: string description: '* `error` - error * `success` - success * `waiting` - waiting' StoredActionRecord: type: object description: The shape of a payload representing a stored action record. properties: connection_id: type: string format: uuid description: UUID identifying the connection to use when executing a Stored Action. selected_api: type: string description: Something like `SlackAPI` (for Python apps) or `SplitwiseCLIAPI@1.0.0` (for CLI apps). Non-public apps are fine as long as the authed user can access them. If a version is included we attempt to use that version of the integration. If no version is provided we attempt to use the latest version of the integration action_key: type: string description: Name of the action in the integration. Such as `new_contact`. action_type: allOf: - $ref: '#/components/schemas/ActionTypeEnum' description: 'Specifies the type of action in the integration since some integrations could have similarly named actions with different actions types * `read` - Read * `read_bulk` - Read Bulk * `write` - Write * `run` - Run * `search` - Search * `search_or_write` - Search Or Write * `search_and_write` - Search And Write * `filter` - Filter * `tool` - Tool' inputs: default: {} description: 'Key/value pairs that the action needs to execute. In the example of SlackAPI this could be something like `{"channel": "ABC", "text": "my message"}`' id: type: string format: uuid description: The UUID id that identifies this stored action and can be used to execute the stored procedure by calling the POST /stored-actions/{stored_action_id}/run endpoint. type: type: string default: stored_action description: Specifies the resource type, as required by the JSON:API specification. required: - id StoredActionRecordListLinks: type: object description: Pagination navigation links for a Stored Action list response. properties: next: type: - string - 'null' format: uri description: Link to the next page of results; null when on the last page. required: - next StoredActionRecordListMeta: type: object description: Limit-offset pagination metadata for a Stored Action list response. properties: limit: type: integer description: Number of results returned in this response. offset: type: integer description: Starting index for this page of results. count: type: integer description: Total number of results across all pages. required: - count - limit - offset StoredActionRecordListResponse: type: object properties: results: type: array items: $ref: '#/components/schemas/StoredActionRecord' description: Stored actions belonging to the caller. meta: $ref: '#/components/schemas/StoredActionRecordListMeta' links: $ref: '#/components/schemas/StoredActionRecordListLinks' required: - links - meta - results StoredActionResult: type: object description: The flat response payload for fetching a stored action run. properties: type: type: string default: run description: Specifies the resource type, as required by the JSON:API specification. id: type: string format: uuid description: The id returned by the initial call to run an action. status: allOf: - $ref: '#/components/schemas/StatusA45Enum' description: 'The result of the action call itself from the partner. You could have a success=True (Zapier succeeded) and status=error (the partner raise an error). * `error` - error * `success` - success * `waiting` - waiting' results: type: array items: type: object additionalProperties: {} description: Could be empty, even if the action was successfully run. next_page: type: string description: When using bulk read action types, this denotes the state of the paging utilities. Pass it back as `page` on the next POST /stored-actions/{stored_action_id}/run call. errors: type: array items: $ref: '#/components/schemas/ActionsFetchError' description: Any errors returned by the partner when running this action. required: - errors StoredActionUpdateRequestParams: type: object description: 'The shape of the payload representing the fields available to update a StoredAction. You should delete your existing StoredAction and create a new record if you need to change either the connection_id or the selected_api.' properties: action_key: type: string description: Name of the action in the integration. Such as `new_contact`. action_type: allOf: - $ref: '#/components/schemas/ActionTypeEnum' description: 'Specifies the type of action in the integration since some integrations could have similarly named actions with different actions types * `read` - Read * `read_bulk` - Read Bulk * `write` - Write * `run` - Run * `search` - Search * `search_or_write` - Search Or Write * `search_and_write` - Search And Write * `filter` - Filter * `tool` - Tool' inputs: default: {} description: Object that matches the input the action would normally get. Has all the same keys/types as the `input` of the action. (Formerly known as "needs" in some documentation) StoredActionsCreateRequest: type: object properties: data: $ref: '#/components/schemas/StoredActionsCreateRequestParams' required: - data StoredActionsCreateRequestParams: type: object description: 'The shape of the payload that must be sent to create a Stored Action. Only the triple (selected_api, action_type, action_key) is accepted — `action_id` is intentionally not exposed on this endpoint.' properties: connection_id: type: string format: uuid description: UUID of the connection to use when executing the Stored Action. Can be any connection visible to the user (including shared). selected_api: type: string description: Something like `SlackAPI` (for Python apps) or `SplitwiseCLIAPI@1.0.0` (for CLI apps). Non-public apps are fine as long as the authed user can access them. If a version is included we attempt to use that version of the integration. If no version is provided we attempt to use the latest version of the integration action_key: type: string description: Name of the action in the integration. Such as `new_contact`. action_type: allOf: - $ref: '#/components/schemas/ActionTypeEnum' description: 'Specifies the type of action in the integration since some integrations could have similarly named actions with different actions types * `read` - Read * `read_bulk` - Read Bulk * `write` - Write * `run` - Run * `search` - Search * `search_or_write` - Search Or Write * `search_and_write` - Search And Write * `filter` - Filter * `tool` - Tool' inputs: default: {} description: Object that matches the input the action would normally get. Has all the same keys/types as the `input` of the action. (Formerly known as "needs" in some documentation) required: - action_key - action_type - selected_api StoredActionsCreateResponse: type: object description: The response returned from creating a Stored Action record. properties: type: type: string default: stored_action description: Specifies the resource type, as required by the JSON:API specification. id: type: string format: uuid description: The UUID id that identifies this stored action and can be used to execute the stored procedure by calling the POST /stored-actions/{stored_action_id}/run endpoint. required: - id StoredActionsRunRequest: type: object properties: data: $ref: '#/components/schemas/StoredActionsRunRequestInput' required: - data StoredActionsRunRequestInput: type: object description: The shape of a request payload accepted when running a stored action. properties: callback_url: type: string format: uri description: An optional URL that Zapier will POST the results to when the action completes. The POST body will match the same format as the GET /stored-actions/{stored_action_id}/runs/{run_id} response. maxLength: 2048 idempotency_id: type: string format: uuid description: A client-provided UUID that identifies this specific request. If the same idempotency_id is used within 72 hours, the second request will be ignored and the original response returned. inputs: default: {} description: Object that matches the input the action would normally get. Has all the same keys/types as the `input` of the action. (Formerly known as "needs" in some documentation) Specifically includes more "dynamic" information to execute such as a specific message when triggering an action that sends a Slack DM, for example. page: type: string description: 'When using bulk read action types, this denotes the state of the paging utilities. Pass it back into the stored-actions endpoint. ' StoredActionsRunResponse: type: object properties: data: $ref: '#/components/schemas/StoredActionsRunResponseParams' required: - data StoredActionsRunResponseParams: type: object description: The data returned after running a stored action properties: type: type: string default: run description: Specifies the resource type, as required by the JSON:API specification. id: type: string format: uuid description: The UUID id that identifies this run of the execution and can be used to retrieve the results by polling the GET /stored-actions/{stored_action_id}/runs/{run_id} endpoint. securitySchemes: OAuth: type: oauth2 description: OAuth 2.0 authentication. flows: authorizationCode: authorizationUrl: https://zapier.com/oauth/authorize tokenUrl: https://zapier.com/oauth/token scopes: external: Scope that gives access to all Public APIs clientCredentials: tokenUrl: https://zapier.com/oauth/token scopes: external: Scope that gives access to all Public APIs