Skip to main content
Version: v1

Strike API

Introduction

The Strike API provides a way to integrate with Strike. You can use the API to access your own Strike account.

This API reference includes technical documentation developers need for integration.

Authentication

You need to be authenticated to access any endpoint. Strike API offers authentication with API Key which never expires. Log in to the Dashboard to generate an API key. Never share it. Keep it guarded and secure. If the key is compromised contact Strike support to revoke it and issue a new one.

Use API key as bearer token and attach it to the Authorization header of the request.

Errors

Our API returns standard HTTP response codes to indicate the success or failure of an API request. Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error caused by invalid request or operation (e.g., a required parameter was omitted, an insufficient balance, etc.). Codes in the 5xx range indicate an error with Strike's servers.

See more

Possible HTTP Status Codes

HTTP Status CodeTitleDescription
200OKThe request was successful.
201CreatedThe resource was successfully created.
400Bad RequestA validation error occurred.
401UnauthorizedUnauthenticated request.
403ForbiddenInsufficient permissions to perform the request.
404Not FoundThe resource was not found.
409ConflictThe request failed due to a conflict with the current state of the target resource.
422Unprocessable EntityThe request was unable to be processed.
429Too Many RequestsRate limit has been exceeded.
500Internal Server ErrorA system level error occurred.
503Service UnavailableService is temporarily offline.

For errors (non 2xx responses), we will also include extra information about what went wrong encoded in the response as JSON.

Error Response

Error responses conform to the following schema:

ErrorResponse
  • traceId --> String (Optional) - Unique identifier which represent this request in trace logs.
  • data --> Object - Error details.
    • code --> String - Can contain any error code from the table of error codes from below.
    • message --> String - Error message. Use only as a reference for developer. Should not be shown to the user.
    • status --> Number - HTTP status code. Matches the status code of the response.
    • values --> Object (Optional) - Additional map of properties. Contains more details about the error. To see which properties will be available for which error, see "Available Properties" column in the table of error codes below.
    • validationErrors --> Object (Optional) - Contains specific validation errors. Will be present when validation error(s) has occured (code is 'INVALID_DATA'). Key is string and contains name of the field for which validation has failed. Value is an array of Errorobjects for that field. Error object contains specific error details (see the format below).
  • debug --> Object (Optional) - Contains debug info. Will be present only in development mode.
    • full --> String - Contains full debug info with stack trace
    • body --> String (Optional) - Contains additional debug info.
Error
  • code --> String - Can contain any validation error code from the table of the validation error codes from below.
  • message --> String - Error message. Use only as a reference for developer. Should not be shown to the user.
  • values --> Object (Optional) - Additional map of properties. Contains more details about the error. To see which properties will be available for which validation error, see "Available Properties" column in the table of validation error codes below.

Example:

{
"traceId": "7cd128d3-e8a9-4685-b852-c8ce0f4dd5e3",
"data": {
"status": 422,
"code": "USER_CURRENCY_UNAVAILABLE",
"message": "User does not support the given currency.",
"values": {
"currency": "USD"
}
}
}

Validation error response example:

{
"traceId": "7cd128d3-e8a9-4685-b852-c8ce0f4dd5e3",
"data": {
"status": 400,
"validationErrors": {
"correlationId": [
{
"code": "INVALID_DATA_MAXLENGTH",
"message": "The field correlationId must be a value with a maximum length of '40'",
"values": {
"field": "correlationId",
"maxLength": 40
}
}
],
"amount": [
{
"code": "INVALID_DATA_REQUIRED",
"message": "The field amount is required",
"values": {
"field": "amount"
}
}
]
},
"code": "INVALID_DATA",
"message": "One or more validation errors occurred."
}
}

Error Codes

CodeHTTP StatusMessageAvailable Properties
NOT_FOUND404Resource not found.
    INTERNAL_SERVER_ERROR500The server has encountered an unexpected problem.
      MAINTENANCE_MODE503Maintenance mode is active.
        RATE_LIMIT_EXCEEDED429Rate limit has been exceeded.
          UNAUTHORIZED401Invalid or unspecified identity.
            FORBIDDEN403Insufficient permissions.
              INVALID_DATA400One or more validation errors occurred.
                INVALID_DATA_QUERY400Invalid OData query.
                  UNPROCESSABLE_ENTITY422
                    ACCOUNT_NOT_READY451Account is not yet ready. Please retry later.
                      INVALID_STATE_FOR_INVOICE_PAID422Invoice has already been paid.
                        INVALID_STATE_FOR_INVOICE_CANCELLED422Invoice has been cancelled.
                          INVALID_RECIPIENT422Recipient is currently unable to receive payments.
                            PROCESSING_PAYMENT422Invoice payment is currently being processed.
                              DUPLICATE_INVOICE409Invoice with correlation id '{correlationId}' already exists.
                              • correlationId (string, example: 5ab4dd94-8a96-4aa1-82a1-8e3c95e71321)
                              SELF_PAYMENT_NOT_ALLOWED422Self-payments are not allowed.
                                USER_CURRENCY_UNAVAILABLE422User does not support the given currency.
                                • currency (string, example: "USD")
                                LN_UNAVAILABLE422Lightning network is currently unavailable.
                                  EXCHANGE_RATE_NOT_AVAILABLE422Exchange rate is unavailable for the given currency pair.
                                    INVALID_AMOUNT422Amount must be greater than zero
                                      AMOUNT_TOO_HIGH422The amount can't be above {limit}
                                      • limit (object, example: { "amount": "1,000,000.00", "currency": "USD" })

                                      Validation Error Codes

                                      CodeMessageAvailable Properties
                                      INVALID_DATA
                                        INVALID_DATA_REQUIREDThe field {field} is required
                                        • field (string)
                                        INVALID_DATA_MINLENGTHThe field {field} must be a value with a minimum length of '{minLength}'
                                        • field (string)
                                        • minLength (number)
                                        INVALID_DATA_MAXLENGTHThe field {field} must be a value with a maximum length of '{maxLength}'
                                        • field (string)
                                        • maxLength (number)
                                        INVALID_DATA_VALUEThe field {field} contains invalid value
                                        • field (string)
                                        INVALID_DATA_CURRENCYThe field {field} contains unsupported currency '{currency}'
                                        • field (string)
                                        • currency (string, example: "USD")

                                        Error codes without the message in the table don't have a fixed message (the message will be different based on the case). Note that messages are only there as a reference for the developers and might be changed at any time without prior notice or version change.

                                        Webhooks

                                        The Strike API supports webhook notifications about certain events occurring. When an event that you are subscribed to has occurred, a POST request will be made to the webhook URI of the subscription.

                                        Supported Events

                                        EventDescription
                                        invoice.createdNew invoice has been created.
                                        invoice.updatedState of the invoice changed.

                                        Webhook Format

                                        The payload of each webhook request contains WebhookEvent. data property of the event contains entityId which identifies the resource for the event that has occured and optionally changes property which is an array of the property names that have changed for the resource in question. The event does not contain the actual data changes. To get the new values, corresponding fetch API for the resource should be used.

                                        Example:

                                        {
                                        "id": "245e40d8-f197-411c-8f20-a326d08da402",
                                        "eventType": "invoice.updated",
                                        "webhookVersion": "v1",
                                        "data": {
                                        "entityId": "602cc206-6b4a-42dd-bc89-9a534bb04034",
                                        "changes": [
                                        "state"
                                        ]
                                        },
                                        "created": "2009-01-03T18:15:00+01:00",
                                        "deliverySuccess": true
                                        }

                                        In this case entityId is the id of the invoice while changes indicate that the state of the invoice has been changed.

                                        Versioning

                                        Webhook format versions are tied to Strike API versions. Any breaking change to webhook system will be noted in the Strike API changelog. The version is bound to a webhook subscription.

                                        API Versioning

                                        Strike API versions are represented by version number declared in the route path of our endpoints:

                                        https://api.strike.me/v1/*

                                        A new version will be released when breaking changes are introduced in the API. A breaking change requires developers to change their code to maintain existing functionality in their app. Non-breaking changes will be additive and rolled out to the most recent version when ready, requiring no work on a developer’s end unless you would like to take advantage of the new functionality. Each release, breaking or non-breaking, will be documented in the changelog below.

                                        Non-breaking changes

                                        Following changes are considered non-breaking:

                                        • Adding a new endpoint
                                        • Adding a new optional request parameter to existing endpoint
                                        • Making required request parameter optional
                                        • Adding a new property to existing endpoint response
                                        • Adding a new value to existing enum
                                        • Changing the order of properties in existing responses
                                        • Changing a message text in the error response
                                        • Changing the length or format of the auto-generated strings such as resource ids
                                        • Adding a new authorization scope
                                        • Adding a new webhook event type
                                        • Changing a name of request or response schema definition

                                        Deprecation

                                        As soon as a new version is released, the previous version will be marked as deprecated. Versions will remain in a deprecated state for one year, after which they will be retired. In effect, any version will be available for at least two years overall, including their deprecation period. Any calls made to versions after they are retired will fail.

                                        Changelog

                                        March 23, 2022 - v1

                                        • Updated PATCH invoices/{invoiceId}/cancel to allow the receiving user of the invoice to cancel it.

                                        March 16, 2022 - v1

                                        • Added new isInvoiceable property to the account currency object in GET accounts/{id}/profile and GET accounts/handle/{handle}/profile endpoints. Currencies for which isInvoiceable is set to true can be used to create an invoice.

                                        February 23, 2022 - v1

                                        • Added PATCH invoices/{invoiceId}/cancel endpoint for cancelling unpaid invoices and partner.invoice.cancel scope for it.

                                        September 29, 2021 - v1

                                        • Initial release.