Bulk pause schedules
Pause one or multiple active charge schedules in a single request. Paused schedules will not execute any occurrences until they are resumed. This is useful for temporarily stopping recurring charges during customer disputes, account holds, or seasonal pauses.
Request Parametersโ
Required - 1 fieldRequired Parameters
`schedule_ids`ARRAY(required)
Array of schedule IDs to pause. Each ID must start with schd_. Maximum 100 IDs per request.
Responsesโ
200
Schedules pausedReturns a summary of the bulk pause operation with details for each schedule.
Response includes:
object- Always "bulk_operation"operation- "pause"total_count- Total number of schedule IDs providedsuccessful_count- Number of schedules successfully pausedfailed_count- Number of schedules that failed to pauseresults- Array of result objects for each schedule
schedule_id- The schedule IDstatus- "success" or "failed"schedule- Updated schedule object (if successful)error_code- Error code (if failed)error_message- Error description (if failed)
400
Bad requestRequest validation failed. Check the error message for details.
Common causes:
- Missing schedule_ids parameter
- schedule_ids is not an array
- Empty schedule_ids array
- More than 100 schedule IDs provided
- Invalid schedule ID format
401
UnauthorizedAuthentication failed. Invalid or missing API key.
Common causes:
- Missing Authorization header
- Invalid secret key
- Using public key instead of secret key
- Incorrect HTTP Basic Auth format
404
Not foundEndpoint not found or feature not enabled.
Common causes:
- Bulk operations feature not enabled for account
- Incorrect API endpoint URL
5xx
Server errorServer-side error occurred. These are rare but should be handled gracefully.
How to handle:
- Retry the request with exponential backoff
- Check status.omise.co for service incidents
- See Error Handling for detailed guidance
Code samplesโ
- cURL
- Ruby
- Python
- Node.js
- PHP
- Java
- C#
- Go
# Pause multiple schedules
curl https://api.omise.co/schedules/bulk_pause \
-X PATCH \
-u skey_test_5xuy4w91xqz7d1w9u0t: \
-H "Content-Type: application/json" \
-d '{
"schedule_ids": [
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r"
]
}'
require 'omise'
require 'net/http'
require 'uri'
require 'json'
Omise.api_key = 'skey_test_5xuy4w91xqz7d1w9u0t'
schedule_ids = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
]
uri = URI('https://api.omise.co/schedules/bulk_pause')
request = Net::HTTP::Patch.new(uri)
request.basic_auth(Omise.api_key, '')
request['Content-Type'] = 'application/json'
request.body = { schedule_ids: schedule_ids }.to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
result = JSON.parse(response.body)
puts "Paused: #{result['successful_count']} / #{result['total_count']}"
import omise
import requests
omise.api_secret = 'skey_test_5xuy4w91xqz7d1w9u0t'
schedule_ids = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
]
response = requests.patch(
'https://api.omise.co/schedules/bulk_pause',
auth=(omise.api_secret, ''),
json={'schedule_ids': schedule_ids}
)
result = response.json()
print(f"Paused: {result['successful_count']} / {result['total_count']}")
# Check for any failures
for item in result['results']:
if item['status'] == 'failed':
print(f"Failed: {item['schedule_id']} - {item['error_message']}")
const omise = require('omise')({
secretKey: 'skey_test_5xuy4w91xqz7d1w9u0t'
});
const axios = require('axios');
const scheduleIds = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
];
const response = await axios.patch(
'https://api.omise.co/schedules/bulk_pause',
{ schedule_ids: scheduleIds },
{
auth: {
username: 'skey_test_5xuy4w91xqz7d1w9u0t',
password: ''
}
}
);
console.log(`Paused: ${response.data.successful_count} / ${response.data.total_count}`);
// Check for any failures
response.data.results.forEach(item => {
if (item.status === 'failed') {
console.log(`Failed: ${item.schedule_id} - ${item.error_message}`);
}
});
<?php
define('OMISE_SECRET_KEY', 'skey_test_5xuy4w91xqz7d1w9u0t');
$schedule_ids = [
'schd_test_5xuy4w91xqz7d1w9u0t',
'schd_test_5xuy4w91xqz7d1w9u0s',
'schd_test_5xuy4w91xqz7d1w9u0r'
];
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.omise.co/schedules/bulk_pause',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_USERPWD => OMISE_SECRET_KEY . ':',
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['schedule_ids' => $schedule_ids])
]);
$response = curl_exec($curl);
curl_close($curl);
$result = json_decode($response, true);
echo "Paused: {$result['successful_count']} / {$result['total_count']}\n";
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Base64;
HttpClient client = HttpClient.newHttpClient();
String auth = Base64.getEncoder().encodeToString("skey_test_5xuy4w91xqz7d1w9u0t:".getBytes());
String jsonBody = """
{
"schedule_ids": [
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r"
]
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.omise.co/schedules/bulk_pause"))
.header("Authorization", "Basic " + auth)
.header("Content-Type", "application/json")
.method("PATCH", HttpRequest.BodyPublishers.ofString(jsonBody))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
var client = new HttpClient();
var credentials = Convert.ToBase64String(
Encoding.ASCII.GetBytes("skey_test_5xuy4w91xqz7d1w9u0t:")
);
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Basic", credentials);
var scheduleIds = new[] {
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r"
};
var content = new StringContent(
JsonSerializer.Serialize(new { schedule_ids = scheduleIds }),
Encoding.UTF8,
"application/json"
);
var request = new HttpRequestMessage(new HttpMethod("PATCH"),
"https://api.omise.co/schedules/bulk_pause")
{
Content = content
};
var response = await client.SendAsync(request);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
scheduleIds := []string{
"schd_test_5xuy4w91xqz7d1w9u0t",
"schd_test_5xuy4w91xqz7d1w9u0s",
"schd_test_5xuy4w91xqz7d1w9u0r",
}
body, _ := json.Marshal(map[string][]string{
"schedule_ids": scheduleIds,
})
req, _ := http.NewRequest("PATCH",
"https://api.omise.co/schedules/bulk_pause",
bytes.NewBuffer(body))
req.SetBasicAuth("skey_test_5xuy4w91xqz7d1w9u0t", "")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("Paused: %.0f / %.0f\n",
result["successful_count"], result["total_count"])
}
Error and result codesโ
Common Error Codesโ
| Code | Description | Resolution |
|---|---|---|
authentication_failure | Invalid API key | Verify your secret key is correct |
invalid_schedule_ids | Invalid or missing schedule_ids | Provide valid array of schedule IDs |
too_many_ids | More than 100 IDs provided | Split into multiple requests |
Per-Schedule Error Codesโ
| Code | Description | Resolution |
|---|---|---|
schedule_not_found | Schedule ID does not exist | Verify schedule ID is correct |
schedule_not_active | Schedule is not in active status | Only active schedules can be paused |
schedule_already_paused | Schedule is already paused | No action needed |
schedule_deleted | Schedule has been deleted | Cannot pause deleted schedules |
Schedule Status After Pauseโ
| Field | Value |
|---|---|
status | suspended |
active | false |
API Credentials
Try it outโ
Required - 1 fields
Your IP:
...Loading...