Welcome to the CocoCloud Signing API documentation. Our API allows you to programmatically sign IPA files using your own certificates or our enterprise certificates.
All API requests require authentication using your API Key.
The API has specific upload size limits based on your account plan. These limits apply specifically to the Signing APIs (Custom Signing & Free Enterprise). Please refer to the table below to understand the limits applicable to your account.
| Plan Type | Max Upload Size | Signing Speed | Requests | Cert Downloads | Description |
|---|---|---|---|---|---|
| Standard / Free | 1.10 GB | Full Speed | 10,000 / Week | Primary MP Only | Default limit for all registered users. |
| Pro Member | 5.00 GB | Full Speed | Unlimited | All Files | Enhanced limit for Pro members. Ideal for large games and applications. |
The "Cert Downloads" restriction applies to both the Web UI and API:
You can programmatically check your plan status and limits by inspecting the response headers of any API request:
X-Plan-Type: Returns Pro or StandardX-Plan-Limit: Returns your upload limit (e.g., 5.00 GB)Use this endpoint to sign IPA files with your own Certificate (.p12) and Provisioning Profile.
POST https://cococloud-signing.online/api/v2/customsign
Include your API Key in the request header:
X-API-Key: YOUR_API_KEY
ipa: The IPA file or direct download URL (Required)cert: The Certificate file (Required)provision: The Provisioning Profile (Required)password: Certificate Password (Optional)bundleId: New Bundle ID (Optional)bundleName: New Bundle Name (Optional)bypassapplerevokes: Set to 'true' or '1' to use our current apple bypass revoke feature (Optional)curl -X POST https://cococloud-signing.online/api/v2/customsign \ -H "X-API-Key: YOUR_API_KEY" \ -F "[email protected]" \ -F "[email protected]" \ -F "[email protected]" \ -F "password=secret"
curl -X POST https://cococloud-signing.online/api/v2/customsign \ -H "X-API-Key: YOUR_API_KEY" \ -F "ipa=https://example.com/app.ipa" \ -F "[email protected]" \ -F "[email protected]" \ -F "password=secret"
{
"success": true,
"jobId": "dd34d4b5-7746-47fa-b5a4-ab1a7ed45f74",
"message": "IPA signed successfully",
"downloadUrl": "https://appstore-signer-api.nabzclan.vip/download/dd34d4b5...",
"manifestUrl": "https://appstore-signer-api.nabzclan.vip/manifest/dd34d4b5...",
"itmsServicesUrl": "itms-services://?action=download-manifest&url=...",
"signingTime": "0.26s",
"performance": "⚡ Lightning Fast",
"appInfo": {
"bundleId": "com.example.app",
"bundleName": "Example App",
"bundleVersion": "1.0.0"
},
"appSize": {
"input": "14MB",
"output": "26MB"
}
}
{
"error": "File size exceeds your plan limit (1.10 GB). Please upgrade to Pro."
}
Validate iOS certificates (.p12) and provisioning profiles (.mobileprovision) with real-time certificate status checking.
POST https://cococloud-signing.online/api/v2/certcheckerstatus
Include your API Key in the request header:
X-API-Key: YOUR_API_KEY
file: The certificate (.p12) or provisioning profile (.mobileprovision) file, or a direct download URL (Required)password: Certificate password (Required for .p12 files, ignored for .mobileprovision)curl -X POST https://cococloud-signing.online/api/v2/certcheckerstatus \\ -H "X-API-Key: YOUR_API_KEY" \\ -F "[email protected]" \\ -F "password=your_password"
curl -X POST https://cococloud-signing.online/api/v2/certcheckerstatus \\ -H "X-API-Key: YOUR_API_KEY" \\ -F "[email protected]"
curl -X POST https://cococloud-signing.online/api/v2/certcheckerstatus \\ -H "X-API-Key: YOUR_API_KEY" \\ -F "file=https://example.com/certificate.p12" \\ -F "password=your_password"
curl -X POST https://cococloud-signing.online/api/v2/certcheckerstatus \\ -H "X-API-Key: YOUR_API_KEY" \\ -F "file=https://example.com/profile.mobileprovision"
{
"success": true,
"data": {
"certificate_info": {
"subject": {
"userID": "GDL9BC8Q4T",
"commonName": "iPhone Distribution: Etisalat - Emirates...",
"organizationalUnitName": "GDL9BC8Q4T",
"organizationName": "Etisalat - Emirates Telecommunications Corporation",
"countryName": "US"
},
"issuer": {
"commonName": "Apple Worldwide Developer Relations Certification Authority",
"organizationalUnitName": "G3",
"organizationName": "Apple Inc.",
"countryName": "US"
},
"serial_number": "47012812809789156286275042971829552436",
"signature_algorithm": "sha256WithRSAEncryption",
"validity_period": {
"valid_from": "2023-02-08T11:07:10+00:00",
"valid_to": "2026-02-07T11:07:09+00:00"
},
"public_key_size": 2048,
"fingerprints": {
"sha256": "8e27d9cbc616978c8517f4e62168668e169f42e707cfc358b4266799717095b5",
"md5": "2e8f873667d2d4d183cbe98fc7af769a",
"sha1": "105adeea1026d85d30cffee45278fc024f57d4d3"
},
"ocsp_url": "http://ocsp.apple.com/ocsp03-wwdrg301",
"public_key_algorithm": "-----BEGIN CERTIFICATE-----\\n..."
},
"certificate_status": {
"status": "Signed"
},
"entitlements": "Entitlements are not applicable for p12 files",
"type": "N/A"
},
"message": "Certificate validated successfully"
}
{
"success": true,
"message": "Certificate validated successfully",
"data": {
"certificate_info": {
"subject": { ... },
"issuer": { ... },
"validity_period": { ... },
"fingerprints": { ... }
},
"certificate_status": {
"status": "Revoked",
"reason": "cessationOfOperation (5)",
"reason_details": "The certificate is no longer needed",
"revocation_time": "2024-11-19T02:05:29Z"
},
"entitlements": {
"Push Notifications": { "status": "active" },
"App Groups": { "status": "active" },
"Associated Domains": { "status": "active" }
},
"type": "Enterprise Certificate",
"mobileprovision_info": {
"Name": "iOS Team Inhouse Provisioning Profile",
"UUID": "cc32b862-80f8-4aa3-bfca-54908f3533eb",
"TeamName": "Example Team",
"ExpirationDate": "2026-04-09T12:50:26"
}
}
}
Check both P12 and mobileprovision files simultaneously by providing a mobileprovision parameter!
file: P12 certificate file or URL (Required)mobileprovision: Mobileprovision file or URL (Required for dual mode)password: Password for P12 (Optional)curl -X POST https://cococloud-signing.online/api/v2/certcheckerstatus \\ -H "X-API-Key: YOUR_API_KEY" \\ -F "[email protected]" \\ -F "password=your_password" \\ -F "[email protected]"
{
"success": true,
"message": "Both files validated successfully",
"p12_certificate": {
"certificate_info": { ... },
"certificate_status": { "status": "Signed" },
"entitlements": "Not applicable for p12",
"type": "N/A"
},
"mobileprovision": {
"certificate_info": { ... },
"certificate_status": { "status": "Signed" },
"entitlements": {
"Push Notifications": { "status": "active" }
},
"type": "Enterprise Certificate",
"mobileprovision_info": {
"Name": "iOS Team Inhouse Provisioning Profile",
"UUID": "cc32b862-80f8-4aa3-bfca-54908f3533eb"
}
}
}
Signed: Certificate is valid and activeRevoked: Certificate has been revoked by AppleUnknown: OCSP status could not be determined{
"success": false,
"message": "Error description"
}
Change the password of a P12 certificate file. Upload a certificate or provide a URL, and get back a new P12 file with the updated password.
POST https://cococloud-signing.online/api/v2/p12passwordchanger
Include your API Key in the request header:
X-API-Key: YOUR_API_KEY
file: The P12 certificate file or direct download URL (Required)old_password: Current/old password of the P12 file (Required, use empty string if no password)new_password: New password to set (Required)curl -X POST https://cococloud-signing.online/api/v2/p12passwordchanger \\ -H "X-API-Key: YOUR_API_KEY" \\ -F "[email protected]" \\ -F "old_password=current_password" \\ -F "new_password=new_secure_password" \\ --output certificate_new_password.p12
curl -X POST https://cococloud-signing.online/api/v2/p12passwordchanger \\ -H "X-API-Key: YOUR_API_KEY" \\ -F "file=https://example.com/certificate.p12" \\ -F "old_password=current_password" \\ -F "new_password=new_secure_password" \\ --output certificate_new_password.p12
On success, the API returns the new P12 file with the changed password as a binary download. The response includes custom headers:
Content-Type: application/x-pkcs12Content-Disposition: attachment; filename="certificate_new_password.p12"X-Success: trueX-Message: Password changed successfully{
"success": false,
"message": "Failed to change password",
"error": "Error details"
}
Status: Revoked
Sign IPA files using our pre-configured enterprise certificate. This is the simplest way to sign apps.
POST https://cococloud-signing.online/api/v2/free-enterprise/sign
Include your API Key in the request header:
X-API-Key: YOUR_API_KEY
ipa: The IPA file or direct download URL (Required)bundleId: New Bundle ID (Optional)bundleName: New Bundle Name (Optional)bypassapplerevokes: Set to 'true' or '1' to use our current apple bypass revoke feature (Optional)enterprise_mp_id: Mobileprovision file ID to use for signing (Optional)
Pro Feature
Pro users can specify which mobileprovision file to use via the enterprise_mp_id parameter. This is useful for:
curl -X POST https://cococloud-signing.online/api/v2/free-enterprise/sign \ -H "X-API-Key: YOUR_API_KEY" \ -F "[email protected]"
curl -X POST https://cococloud-signing.online/api/v2/free-enterprise/sign \\ -H "X-API-Key: YOUR_API_KEY" \\ -F "ipa=https://example.com/app.ipa"
curl -X POST https://cococloud-signing.online/api/v2/free-enterprise/sign \\ -H "X-API-Key: YOUR_API_KEY" \\ -F "[email protected]" \\ -F "enterprise_mp_id=3"Use the Shared Enterprise Certs API to get available mobileprovision IDs.
{
"success": true,
"jobId": "dd34d4b5-7746-47fa-b5a4-ab1a7ed45f74",
"message": "IPA signed successfully",
"downloadUrl": "https://appstore-signer-api.nabzclan.vip/download/dd34d4b5...",
"manifestUrl": "https://appstore-signer-api.nabzclan.vip/manifest/dd34d4b5...",
"itmsServicesUrl": "itms-services://?action=download-manifest&url=...",
"signingTime": "0.26s",
"performance": "⚡ Lightning Fast",
"appInfo": {
"bundleId": "com.example.app",
"bundleName": "Example App",
"bundleVersion": "1.0.0"
},
"appSize": {
"input": "14MB",
"output": "26MB"
},
"certificate_info": {
"cert_name": "Tianjin University of Commerce",
"cer_status": "Revoked",
"revoked_from": "2025-11-19T02:05:29Z" // if nothing we leave it as null
}
}
{
"error": "File size exceeds your plan limit (1.10 GB). Please upgrade to Pro."
}
{
"error": "Standard users can only use the primary mobileprovision. Please upgrade to Pro for access to additional profiles."
}
HTTP Status: 403 Forbidden
{
"error": "Invalid mobileprovision ID"
}
HTTP Status: 404 Not Found
Webhooks allow you to receive real-time notifications about events happening in your account. You can configure webhooks for Discord, Telegram, or a generic HTTP endpoint.
| Event Name | Description |
|---|---|
cert.uploaded |
Triggered when you upload a new personal certificate. |
cert.revoked |
Triggered when one of your personal certificates is revoked. |
cert.deleted |
Triggered when you delete a personal certificate. |
enterprise_cert.available |
Triggered when a new shared enterprise certificate is uploaded by admins. |
enterprise_cert.revoked |
Triggered when a shared enterprise certificate is revoked. |
enterprise_mp.available |
Triggered when a new mobile provision is added to a shared enterprise certificate. Includes Pro details. |
The payload structure depends on the webhook type (Discord, Telegram, or Generic). Below is the generic JSON payload format:
{
"event": "enterprise_cert.available",
"data": {
"title": "New Enterprise Certificate Available",
"message": "A new shared certificate 'Apple Inc' is now available for signing.",
"color": 5763719,
"fields": {
"Certificate ID": 1,
"Certificate Name": "Apple Inc",
"Status": "Signed",
"Expiration Date": "2026-02-07T11:07:09+00:00",
"Available At": "2024-11-24 00:45:00",
"Signer URL": "https://cococloud-signing.online/user/ipa-signer"
}
},
"timestamp": "2024-11-24T00:45:00.000000Z"
}
{
"event": "enterprise_cert.revoked",
"data": {
"title": "Enterprise Certificate Revoked",
"message": "The shared certificate 'Apple Inc' has been revoked. Please wait for a replacement.",
"color": 16711680,
"fields": {
"Certificate ID": 1,
"Certificate Name": "Apple Inc",
"Status": "Revoked",
"Reason": "Key Compromised",
"Revoked At": "2024-11-25 10:00:00"
}
},
"timestamp": "2024-11-25T10:00:00.000000Z"
}
{
"event": "enterprise_mp.available",
"data": {
"title": "New Mobile Provision Available",
"message": "A new mobile provision file has been added to the certificate 'Apple Inc'.",
"color": 5763719,
"image": "https://cococloud-signing.online/signing-imgs-status/signed.jpg",
"url": "https://cococloud-signing.online/user/certificates/1",
"fields": {
"Certificate Name": "Apple Inc",
"Event": "Mobile Provision Added",
"Added At": "2024-11-26 15:30:00",
"Platform": "CocoCloud Signing 2.0",
"Mobile Provision Name": "iOS Team Provisioning Profile: com.example.app",
"UUID": "12345678-1234-1234-1234-1234567890ab",
"Team Name": "Apple Inc",
"Team Identifier": "ABCDE12345",
"Creation Date": "2024-11-26 15:00:00",
"Expiration Date": "2025-11-26 15:00:00",
"Time To Live": "365 days",
"App ID Name": "XC com example app"
}
},
"timestamp": "2024-11-26T15:30:00.000000Z"
}
We send the following headers with every webhook request:
User-Agent: CocoCloud-Webhook/1.0Content-Type: application/jsonX-Webhook-Event: The event name (e.g., enterprise_cert.available)Import certificates directly into your account by visiting a URL with certificate file locations. Perfect for automation and sharing certificate configurations.
https://cococloud-signing.online/user/certificates?p12=P12_URL&mp=MP_URL&password=PASSWORD
p12: Direct URL to P12 certificate file (Required)mp: Direct URL to mobileprovision file (Required)password: Certificate password (Optional)If you are already logged in, visit the URL and the certificate imports immediately:
https://cococloud-signing.online/user/certificates?\ mp=https://example.com/profile.mobileprovision&\ p12=https://example.com/cert.p12&\ password=mycertpassword
If you are not logged in, you will be redirected to login. After successful login, the import happens automatically:
https://cococloud-signing.online/user/certificates?\ mp=https://cdn.example.com/files/profile.mobileprovision&\ p12=https://cdn.example.com/files/certificate.p12&\ password=secret123
| Status | Message |
|---|---|
| Success | "Certificate 'Name' imported successfully" |
| Error | "Invalid URL format: ..." |
| Error | "Download failed: ..." |
| Error | "Certificate validation failed: ..." |
| Missing | "P12 certificate URL is required" |
| Missing | "Mobileprovision file URL is required" |