The SpinChimp API
The SpinChimp API allows developers to access SpinChimp functionality from their own software. It is based around HTTP POST, making it easy to implement. With the help of this guide, you should be up and running in a few minutes. Authentication is achieved through an API Key, so there is no need to send sensitive password details over an unencrypted connection.
To be able to make API requests, SpinChimp Pro users must sign up for an API Key, which is literally a one-click process on the SpinChimp User Management page. After login, scroll down to the API section and click the ‘Register’ link in that box. Your new API Key, daily limits and some other info will be displayed. Too easy.
Stay Up To Date
Although we will never make any changes that would break existing connections, we strongly recommend filling out the form below, so we can keep you up to speed with any changes or improvements to the API. This includes new or improved features and usability or performance boosts.
How To Call
Make a request to this URI: http://api.spinchimp.com/MethodName, where MethodName is replaced by the method you want to call. So for a Global Spin, you would initaite a request to http://api.spinchimp.com/GlobalSpin.
The paramaters should be appended to this to make a complete URI (do NOT add them to the post body, as that is where the article goes!). For example, a Global Spin with quality 4 and POS match 3 would be performed with this URI: http://api.spinchimp.com/GlobalSpin?quality=4&posmatch=3.
As well as including the below paramaters, send the article or content that you want to spin as the POST body. We have a couple of examples to show you how to do this, one written in C# and one in PHP.
Example Code
SpinChimp API C# Sample Project
SpinChimp API PHP Sample Functions
Required Paramaters – All Methods
| Parameter | Description |
| User’s SpinChimp account email. Note that the user requires a SpinChimp Pro subscription. | |
| apikey | User’s API key. Get one on the SpinChimp User Management page. |
| aid | Application ID. Set this to a string (100 charachers or less) to identify your application to the server. At this point, applications do not require registration. |
Return Value
Results vary from method to method, but are always returned as plain text in the HTTP response body, making no deserialization necessary. If a failure occurs, the results will look like this:
Failure: Failure Reason|Failure Reason 2
Simply check for the string ‘Failure:’ at the beginning of the response. If there are multiple failure reasons, they will be returned in a pipe (‘|’) separated string.
Possible failure strings:
No Email specified
No API Key specified
No Application ID (aid) Specified
There are no words in your article!
Article too long (x words). Max is y.
Each of the following are unique (only one will be returned)
Credentials check result:InvalidEmail
Credentials check result:SubscriptionExpired
Credentials check result:InvalidAPIKey
Credentials check result:NotAPIRegistered
Credentials check result:MaxQueriesReached
Credentials check result:DatabaseFailure
Example failure string: “Failure:Credentials check result:MaxQueriesReached|Article too long (6544 words). Max is 5000.”
Methods
Global Spin
Spins an article with various quality paramters and return it either with spintax or as a unique unspun document.
Method Name: GlobalSpin
Optional Paramters
| Parameter | Default | Description |
| quality | 4 | Spin quality: 5 – Best, 4 – Better, 3 – Good, 2 – Average, 1 – All |
| posmatch | 3 | Required Part of Speech (POS) match for a spin: 4 – FullSpin, 3 – Full, 2 – Loose, 1 – Extremely Loose, 0 – None. ‘FullSpin’ removes some common POS replacements that tend to reduce quality of spin. |
| protectedterms | Empty | Comma separated list of words or phrases to protect from spin i.e. ‘my main keyword,my second keyword’ |
| rewrite | 0 | If set to 1, results are returned as a rewritten article with no Spintax. Otherwise, an article with Spintax is returned. Note that with rewrite as 1, the original word will always be removed. |
| phraseignorequality | 0 | If set to 1, quality is ignored when finding phrase replacements for phrases. This results in a huge amount of spin, but quality can vary. |
| spinwithinspin | 0 | If set to 1, if there is existing spin syntax in the content you send up, the API will spin any relevant content inside this syntax. If 0, the API will skip over this content and only spin outside of existing syntax. |
| spinwithinhtml | 0 | Spin inside HTML tags. This includes <p> tags, for example if you send up “<p>Here is a paragraph</p>”, nothing would be spun unless spinwithinhtml is 1. |
| applyinstantunique | 0 | (Extra quota cost) Runs an instant unique pass over the article once spun. This replaces letters with characters that look like the original letter but have a different UTF8 value, passing copyscape 100% but garbling content to the search engines. It it recommended to protect keywords while using instant unique. Costs one extra query. |
| fullcharset | 0 | Only used if applyinstantunique = 1. This causes IU to use the full character set which has a broader range of replacements. |
| spintidy | 0 | (Extra quota cost) Runs a spin tidy pass over the result article. This fixes any common a/an type grammar mistakes and repeated words due to phrase spinning. Generally increases the quality of the article. Costs one extra query. |
| tagprotect | Empty | Protects anything between any syntax you define. Separate start and end syntax with a pipe ‘|’ and separate multiple tags with a comma ‘,’. For example, you could protect anything in square brackets by setting tagprotect=[|]. You could also protect anything between “begin” and “end” by setting tagprotect=[|],begin|end |
| maxspindepth | 0 | Define a maximum spin level depth in returned article. If set to 1, no nested spin will appear in the spun result. This paramater only matters if rewrite is false. Set to 0 or ignore for no limit on spin depth. |
| N/A | To protect any piece of text, simply wrap it with ###. For example, if you had a certain paragraph or code to protect, simply send “An intro sentence. ###My protected stuff### and the rest of the article”. Anything inside the hashes will not be spun. Then just replace ‘###’ with an empty string. |
Return Value: Spin results, with or without spintax, depending on whether the rewrite paramater was set.
Example URI: http://api.spinchimp.com/GlobalSpin?quality=4
Generate Spin
Generates an unspun doc from one with spintax. Optionally reorders paragraphs and removes original word.
Method Name: GenerateSpin
Optional Paramaters
| Parameter | Default | Description |
| dontincludeoriginal | 0 | If set to 1, the first first word in each set of spintax is not included in spun output. E.g. if this is found in the article: {word|syn1|syn2}, the result will only include either syn1 or syn2. |
| reorderparagraphs | 0 | If set to 1, paragraphs are randomly ordered in the result. |
| N/A | To protect any piece of text, simply wrap it with ###. For example, if you had a certain paragraph or code to protect, simply send “An intro sentence. ###My protected stuff### and the rest of the article”. Anything inside the hashes will not be spun. Then just replace ‘###’ with an empty string. |
Return Value: Spin results, without spintax.
Example URI: http://api.spinchimp.com/GenerateSpin
Calculate Word Density
Calculates the word densities of words and phrases in the article.
Method Name: CalcWordDensity
Optional Paramaters
| Parameter | Default | Description |
| minlength | 3 | The minimum character length for which to calculate word density. If you use 3, 2 letter words would not be included in the results. |
Return Value: Comma separated word, density pairs. Each word is separated with pipes, and the density is returned as a floating point number. E.g. word1,0.00012|word2,0.00006
Example URI: http://api.spinchimp.com/CalcWordDensity?minlength=5
Query Stats
Returns remaining query quota. Can also be used to test an account.
Method Name: QueryStats
Optional Paramaters
| Parameter | Default | Description |
| simple | 1 | Returns a raw number of how many queries can be made with the account instead of the detailed format described below. |
Return Value: Comma separated quota type and usage pairs. Each quota type is separated with pipes. Four pieces of info are returned: Daily Limit, Remaining Daily Limit, Extended Quota, Bulk Quota. E.g. “Daily Limit,250|Remaining Daily Limit,123|Extended Quota,1000|Bulk Quota,50000.” If the ‘simple’ paramater is set to 1 (default), a simple number is returned calculated as Remaining Daily Limit + Extended Quota + Bulk Quota.
Example URI: http://api.spinchimp.com/QueryStats?simple=0
Test Connection
Tests the connection to the API without user credentials.
Method Name: TestConnection
Return Value: “OK”
Example URI: http://api.spinchimp.com/TestConnection
Limitations
Daily API requests with a standard SpinChimp Pro subscription are limited to 250. If you need a high limit, we can arrange for alternative subscription models. To sort this out, contact us through the ticket system.
Each article sent to the server must be 5000 words or less. Once again, if you have a valid need for a higher limit, contact us.
API Subscriptions
These subscriptions can either be standalone subscriptions without the SpinChimp software or extensions to your existing account. If you do not already have a SpinChimp account, your API Key and password will be automatically generated and emailed to you. If you already have an account, your password will remain the same.
Note: These do NOT give you access to the SpinChimp software (get that here).
Subscriptions are all billed per 3 months and your queries are averaged over this period. For example, the 500/day package gets you 45000 queries over a period of three months. You could use 1000 queries on one day as long as you go under the limit on a few days.
| 100/day $12 per 3 months |
250/day $29 per 3 months |
500/day $49 per 3 months |
1000/day $79 per 3 months |